MySQL 8.0 使用XtraBackup
来自Linux78|wiki
XtraBackup复制InnoDB数据文件,这会导致内部不一致的数据,但是它会对文件执行崩溃恢复,以使其再次成为一个一致的可用数据库。
这样做是可行的,因为InnoDB维护一个REDO日志,也称为事务日志。REDO日志包含了InnoDB数据每次更改的记录。当InnoDB启动时,REDO日志会检查数据文件和事务日志,并执行两个步骤。它将已提交的事务日志条目应用于数据文件,并对任何修改了数据但未提交的事务执行undo操作。
Percona XtraBackup会在启动时记住日志序列号(LSN),然后复制数据文件。这需要一些时间来完成,如果文件正在改变,那么它们会在不同的时间点反映数据库的状态。同时,Percona XtraBackup运行一个后台进程,用于监视事务日志文件,并从中复制更改。Percona XtraBackup需要持续这样做,因为事务日志是以循环方式写人的,并且可以在一段时间后重新使用。 PerconaXtraBackup开始执行后,需要复制每次数据文件更改对应的事务日志记录。
安装
官网下载:percona-release
方式一、 软件包安装(rpm)
sudo yum install -y "https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0-7/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.7-1.el7.x86_64.rpm"
方式二、 软件仓库安装(percona-release) 安装mysql-community-libs-compat
sudo yum install -y mysql-community-libs-compat
安装Percona库:
sudo yum install -y "https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
查看库信息
yum list | grep xtrabackup
安装XtraBackup
sudo yum install percona-xtrabackup-80
xtrackup备份数据
xtrabackup --defaults-file=/etc/my.cnf --host=127.0.0.1 --user=root --password=xxxyyy --backup --target-dir=/data/backup/ 或者:使用参数--datadir替换掉参数--defaults-file. xtrabackup --host=127.0.0.1 --user=root --password=xxxyyy --datadir=/data/crm/ --backup --target-dir=/data/backup/
数据恢复
1.1停止掉运行的数据库实例:
2.2 准备:
xtrabackup --host=127.0.0.1 --user=root --password=xxxyyy --prepare --target-dir=/data/backup/
2.3 拷回数据:
xtrabackup --host=127.0.0.1 --user=root --password=xxxyyy --datadir=/data/msyql --copy-back --target-dir=/data/backup/
2.3 修改目录属性启动数据库:
chown -R mysql.mysql /data/mysql
2.4 启动数据库实例: