演示:使用 xtrabackup 2.4 实现 完全备份及还原
本案例基于 CentOS 7 的 Mariadb5.5 实现,也支持 MySQL5.5 和 MySQL5.7
1) 安装 xtrabackup 包
// 先安装 Mariadb5.5 和 xtrabackup 包
[root@centos7 ~] yum install mariadb-server -y
[root@centos7 ~] systemctl enable --now mariadb
[root@centos7 ~] yum -y install percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm
2) 在源主机做"完全备份" ( 备份到 /backup 目录 )
[root@centos7 ~] mkdir /backup
## 将源主机数据库数据完全备份至 /backup 目录 ( 注意修改数据库密码 )
[root@centos7 ~] xtrabackup -uroot -pP@ssw0rd --backup --target-dir=/backup/base
[root@centos7 ~] ll /backup/base # 验证完全备份目录
[root@centos7 ~] cat /backup/base/xtrabackup_info
[root@centos7 ~] cat /backup/base/xtrabackup_checkpoints # 可以看出是完全备份 ( full-backuped )
backup_type = full-backuped
flushed_lsn = 1628418 # LSN 是 InnoDB 用来标记日志记录位置的数字, 它表示了数据修改的顺序. 每当有数据变更 (插入,更新或删除) 发生时, LSN 都会递增.
// 将 /backup 目录数据 "拷贝至远程主机"
## 目标主机无需创建 /backup 目录
[root@centos7 ~] scp -r /backup/ 目标主机:/
[root@centos7 ~] scp -r /backup/ 192.168.80.220:/
## 目标主机验证数据 ( 完成异机备份 )
[root@centos7 ~] ll /backup/base/
----
3) 在"目标主机还原"
3.1) 预准备: 确保备份数据的完整性和可用性 ( 提交完成的事务,回滚未完成的事务 )
[root@centos7 ~] yum install mariadb-server -y
[root@centos7 ~] yum -y install percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm
[root@centos7 ~] xtrabackup --prepare --target-dir=/backup/base # 执行预准备操作
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 1628712
240203 17:05:58 completed OK!
# 完成
3.2) "将备份的数据文件复制回原始位置"
// 注意: 数据库目录必须为空 ( 且 MySQL 服务不能启动 )
[root@centos7 ~] ll /var/lib/mysql # 验证数据库目录
[root@centos7 ~] systemctl stop mariadb # 关闭 MySQL 服务
[root@centos7 ~] xtrabackup --copy-back --target-dir=/backup/base
240203 17:09:48 [01] ...done
240203 17:09:48 completed OK!
# 完成
[root@centos7 ~] ll /var/lib/mysql # 验证数据库目录 ( 有数据咯 )
3.3) 还原属性
[root@centos7 ~] chown -R mysql:mysql /var/lib/mysql
3.4) 启动服务
[root@centos7 ~] systemctl enable --now mariadb
3.5) 验证数据
[root@centos7 ~] mysql