Xtrabackup 实操
网上太多错误文章,再看了官网,薅掉了几根头发之后,终于理清思路。为了自己和小伙伴们不踩坑,由此记录模拟实操,话不多说,开干!
Xtrabackup 作为mysql备份工具,在单机情况下需要停止mysql,来恢复数据。在主从等以及集群模式下,可以实现不停主库(不锁表)进行热备。
一、环境
mysql: 8.0.36
主:10.128.0.3
从:10.128.0.4
二、全量数据恢复
实操模拟准备:
1.创建一个目录用于存放备份文件:/home/admin/backup/
mkdir /home/admin/backup/ -p
2.创建数据库并向数据库的表中添加两条新数据
create database xtra;
use xtra;
create table test1(id int);
insert into test1 values(1),(2),(3);
create table test2(id int);
insert into test2 values(1),(2),(3);
3.全量备份:xtrabackup --backup -u用户名 -p --target-dir=保存路径
xtrabackup --backup -uroot -p`cat /root/mysql` --target-dir=/home/admin/backup/
4.准备基本备份并停止数据库
xtrabackup --prepare --target-dir=/home/admin/backup/
systemctl stop mysqld
5.这时,再删除数据目录(database=/var/lib/mysql/data)
rm -rf /var/lib/mysql/data /var/lib/mysql/log
6.恢复数据库并重启数据库
xtrabackup --copy-back --target-dir=/home/admin/backup/
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
7.查看数据库
use xtra
show tables;
三、增量备份恢复
实操模拟准备:
优先全量备份
xtrabackup --backup -uroot -p`cat /root/mysql` --target-dir=/home/admin/backup/
1.向数据库的表中添加两条新数据
use xtra;
create table test3(id int);
insert into test3 values(1),(2