MySQL 基于xtrabackup备份—热备工具

时间:2022-08-31 17:12:40
/usr/bin/innobackupex # 备份innodb存储引擎的数据
 
/usr/bin/xbcrypt
 
/usr/bin/xbstream
 
/usr/bin/xtrabackup # 也可以直接使用xtrabackup进行备份
 
  • 开始完全备份 
    • innobackupex --user=root --password=123456 /backup 
      • 其中/backup为新建的备份文件保存的目录
  • 在另一台主机上开始导入 
    • 在/etc/my.cnf中加入innodb-file-per-table = ON
    • 由于备份文件需要进行重新整合,因此,在备份主机上也要安装percona-xtrabackup 
      • 1:下载xtrabackup的RPM包
      • 2:yum install -y percona-xtrabackup
  • 将备份文件拷贝到备份服务器上 
    • scp -pr /backup/2017-08-30_21-55-01 192.168.23.32:/root/
  • 在备份主机上将备份文件重新整理, 将已经提交的事务进行执行,未提交的事务进行回滚,并且 
    • systemctl stop mariadb.service
    • innobackupex --apply-log /root/2017-08-30_21-55-01 首先整理事务
    • innobackupex --copy-back /root/2017-08-30_21-55-01
    • chown -R mysql.mysql /data/
    • 如果无法启动,需要将/data/mysql/lb_logfile* 删除,因为这个文件变大了
  • 开始增量备份 
    • 在主服务器上先创建新表
    • innobackupex --user=root --password=123456 --incremental /backup/ --incremental-basedir=/backup/2017-08-30_21-55-01
    • innobackupex --apply-log --redo-only /backup/2017-08-24_23-16-04/ :整理完全备份
    • innobackupex --apply-log --redo-only /backup/2017-08-24_23-16-04/ --incremental-dir=/backup/2017-08-24_23-16-04/ :将增量备份合并到完全备份上
    • innobackupex --copy-back /root/2017-08-24_23-16-04
    • 同样也要修改属组和属主
  • 完全备份过程演示
1:在配置文件里面,设置主服务器和备份服务器的数据目录为/data/mysql, 二进制目录为/data/binlog
 
datadir=/data/mysql
 
log_bin=/data/binlog/mysql-bin
 
innodb_file_per_table=on
   
2:在主服务器里面创建数据库,创建表,插入数据,使用innobackupex进行完全备份
 
innobackupex --user=root --password=123456 /backup
   
3:将完全备份拷贝到备份服务器
 
scp -pr /backup/2017-08-30_21-55-01 192.168.23.32:/root/
   
4:在备份服务器停止Mariadb,先整理完全备份的事务
 
innobackupex --apply-log /root/2017-08-30_21-55-01
   
5:再导入数据,此时会在备份服务器上创建数据目录为/data/mysql, 二进制目录为/data/binlog
 
innobackupex --copy-back /root/2017-08-30_21-55-01
   
6:最后将备份服务器的数据目录的属主和属组修改为mysql
 
chown -R mysql.mysql /data/
   
7:在备份服务器启动Mariadb,检查是否备份完毕
 
systemctl start mariadb.service
 
  • 增量备份过程演示
1:完全备份之后,我们再来增量备份,现在主服务器上创建其他的数据库,和表,已经插入数据
   
2:基于刚刚创建的完全备份,再创建增量备份
 
innobackupex --user=root --password=123456 --incremental /backup/ --incremental-basedir=/backup/2017-08-30_21-55-01
   
3:再整理完全备份
 
innobackupex --apply-log --redo-only /backup/2017-08-30_21-55-01
   
4:将增量备份合并到完全备份
 
innobackupex --apply-log --redo-only /backup/2017-08-30_21-55-01 --incremental-dir=/backup/2017-08-30_23-16-04
   
5:将完全备份拷贝到备份服务器,这会覆盖之前备份服务器上的完全备份
 
scp -pr /backup/2017-08-30_21-55-01 192.168.23.32:/root/
   
6:将备份服务器停止,在备份服务器上还原数据
 
innobackupex --copy-back /root/2017-08-30_21-55-01
   
7:修改数据目录的属主和属组为mysql
 
chown -R mysql.mysql /data/