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 启动数据库实例: