如何在 Ubuntu 22.04 上安装 Percona XtraBackup 并配置 MySQL 8 自动备份教程

本教程将引导你完成安装 Percona XtraBackup 并使用 cron 作业自动化 MySQL 8 备份的过程。

Percona XtraBackup 是一个开源工具,为基于 MySQL 的服务器提供热备份,使你的数据库在计划的维护窗口期间保持完全可用。它对于对 MySQL 8 数据库进行一致的备份非常有效,尤其是在生产环境中。

Percona XtraBackup (PXB) 是一个 100% 开源的备份解决方案,为希望从全面、响应迅速且成本灵活的 MySQL 数据库支持中获益的组织提供商业支持。

第一步:安装 Percona XtraBackup

添加 Percona 存储库:

sudo apt-get install wget gnupg2 -y
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

要启用 Percona Distribution for MySQL 8.0 存储库,请使用:

percona-release setup pdps8.0

安装 Percona XtraBackup:

sudo apt-get install percona-xtrabackup-80 -y

验证安装:

通过检查版本来确保 Percona XtraBackup 已正确安装:

xtrabackup --version

输出:

xtrabackup version 8.0.35-31 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 55ec21d7)

第二步:创建备份目录

创建一个目录来存储你的备份:

sudo mkdir -p /var/backups/mysql
sudo chown -R mysql:mysql /var/backups/mysql

第三步:在 MySQL 中创建备份用户

出于安全原因,建议创建一个专门用于备份的 MySQL 用户,而不是使用 root 用户。

以 Root 用户身份登录 MySQL:

sudo mysql -u root -p

创建备份用户:

backup_user 替换为你想要的用户名,并将 strong_password 替换为强且唯一的密码。

CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'strong_password';

授予必要的权限:

备份用户需要特定的权限才能执行备份。使用以下命令授予这些权限:

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT, SHOW DATABASES, SHOW VIEW, EVENT, TRIGGER, SELECT, BACKUP_ADMIN ON *.* TO 'backup_user'@'localhost';

应用更改:

FLUSH PRIVILEGES;

退出 MySQL:

EXIT;

第四步:执行完整备份

在自动化之前,测试手动备份以确保一切设置正确。

xtrabackup --backup --target-dir=/var/backups/mysql/full --user=<mysql_user> --password=<mysql_password>

<mysql_user><mysql_password> 替换为你的 MySQL 凭据。

第五步:使用 Cron 自动化备份

要自动化备份过程,你可以使用 cron 作业。以下步骤将安排每日完整备份。

创建一个脚本来处理备份过程:

sudo nano /usr/local/bin/mysql_backup.sh

将以下内容添加到脚本中:

#!/bin/bash

BACKUP_DIR="/var/backups/mysql/full/$(date +%F)"
MYSQL_USER="<mysql_user>"
MYSQL_PASSWORD="<mysql_password>"

# Create backup directory
mkdir -p $BACKUP_DIR

# Run backup
xtrabackup --backup --target-dir=$BACKUP_DIR --user=$MYSQL_USER --password=$MYSQL_PASSWORD

# Compress the backup
tar -czf $BACKUP_DIR.tar.gz -C $BACKUP_DIR .

# Remove uncompressed files
rm -rf $BACKUP_DIR

# Optional: Remove old backups (older than 7 days)
find /var/backups/mysql/ -type f -name "*.tar.gz" -mtime +7 -exec rm {
    
    } \\;

<mysql_user><mysql_password> 替换为你的 MySQL 凭据。

保存并关闭文件。

使脚本可执行:

sudo chmod +x /usr/local/bin/mysql_backup.sh

安排 Cron 作业。打开 cron tab:

sudo crontab -e

添加以下行以安排每天凌晨 2 点进行备份:

0 2 * * * /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1

这将把任何输出或错误重定向到 /var/log/mysql_backup.log

第六步:验证自动化

在计划的时间之后,检查备份目录和日志,以确保备份过程正常工作:

ls /var/backups/mysql/

你应该看到带有日期戳文件名的压缩备份文件。

结论

我们已经成功地看到了如何使用 Percona XtraBackup 和 cron 作业来自动化 MySQL 8 备份。此设置可确保定期执行数据库备份而无需人工干预,从而在发生任何故障时保持数据的安全性和可恢复性。

我的博客:https://blog.ivwv.site

猜你喜欢

转载自blog.csdn.net/weixin_53510183/article/details/144889099