Xtrabackup物理备份恢复及主从搭建全过程


xtrabackup物理备份

  • 对Mysql数据库进行备份,逻辑备份或工具传输可能会遇到查询超时等各种问题。使用xtrabackup进行物理备份,且是热备份。第一步进行热备份:
## 下面脚本是使用qpress进行压缩版本的产生qp压缩文件,降低备份大小。xbstream解压后出现的都是qp压缩文件。qpress压缩是默认的压缩工具。
xtrabackup --defaults-file=/home/mysql/mysql_571/conf/mysql571.cnf --backup
 --target-dir=/home/mysql/ --user=root --password=root
 --host 192.168.0.1 --port 3306 --parallel=10
 --compress-chunk-size=1024K  --kill-long-query-type=select --kill-long-queries-timeout=15 --ftwrl-wait-query-type=update --ftwrl-wait-timeout=30 --ftwrl-wait-threshold=10
 --slave-info --stream=xbstream --compress --compress-threads=10 > mysql571.tar.gz
 ## 下面的是非压缩版本,解压xbstream后直接就是数据库文件
 xtrabackup --defaults-file=/home/mysql/mysql_571/conf/mysql571.cnf --backup 
 --target-dir=/home/mysql/ --user='root' --password='root' 
 --host 192.168.0.1 --port  23306 --parallel=10 
 --compress-chunk-size=1024K  --kill-long-query-type=select --kill-long-queries-timeout=15 --ftwrl-wait-query-type=update --ftwrl-wait-timeout=30 --ftwrl-wait-threshold=10 --slave-info  --compress-threads=10 > mysql571.tar.gz
  • 备份时长与数据库大小相关:一般500G以内在10-20分钟,大于1T可能需要花费30分钟以上。
  • 第2步拿热备份文件传到目标主机上,准备进行恢复。

xtrabackup恢复

  • 由于我们的物理备份是个压缩文件,所以第1步需要解压缩:
//需要xbstream命令,表示从aaa.stream备份文件解压到/backup/tmp目录下
xbstream --parallel=10 -xv < /data/mysql/aaa.xbstream -C /data/mysql/backup/tmp
//如果备份的时候使用了qpress进行压缩,则需要进一步解压缩qp文件,使用如下命令:
//注意它依赖qpress命令,可能需要单独安装
xtrabackup --decompress --remove-original --parallel=10 --target-dir=/data/mysql/backup/tmp
  • 第2步将备份过程中的事务等热信息进行prepare:
xtrabackup --prepare --parallel=10 --target-dir=/data/mysql/backup/tmp
  • 第3步将备份文件恢复到目标地址:
    • 注意这一步骤恢复到目标地址,要求恢复目标数据库是停运状态,且目标地址的data,redolog,undolog,binlog都是空的才行。否则下面恢复会提示。
//如果是这个备份要恢复好几个mysql,则可以采用copy-back将复制到目标地址:
xtrabackup --defaults-file=/home/mysql/conf/my.cnf --copy-back --parallel=10  --target-dir=/home/mysql/backup/tmp
//如果是一次性恢复,可以采用--move-back,将tmp下准备好的备份文件移到目标地址
xtrabackup --defaults-file=/data/mysql/conf/my.cnf --move-back --parallel=10  --target-dir=/data/mysql/backup/tmp

  • 恢复时长与数据库大小相关。大库第1步解压缩耗时较多,第3步恢复目标耗时较多。一般500G数据库,恢复到这边耗时也在10-20分钟。
  • 第4步,恢复完成后即可启动目标数据库。启动后目标数据库将于原备份数据库,用户密码权限完全一致。
//恢复完成后,在data目录中会有xtrabackup_info的恢复信息。可以用次信息进行主从搭建。
$ cat ../data/xtrabackup_info
uuid = ac94c92b-4e92-11ec-9ec8-fa163e09fc56
name =
tool_name = xtrabackup
tool_command = --defaults-file=/home/mysql/mysql_571/conf/mysql571.cnf --backup --target-dir=/home/mysql/ --user=root --password=... --host 192.168.0.1 --port 20001 --parallel=10 --compress-chunk-size=1024K --kill-long-query-type=select --kill-long-queries-timeout=15 --ftwrl-wait-query-type=update --ftwrl-wait-timeout=30 --ftwrl-wait-threshold=10 --slave-info --stream=xbstream
tool_version = 2.4.12
ibbackup_version = 2.4.12
server_version = 5.7.21
start_time = 2021-11-26 16:01:07
end_time = 2021-11-26 16:27:20
lock_time = 0
binlog_pos = filename 'mysql-bin.000127', position '514519689', GTID of the last change 'e8c1933c-f9bd-11e8-88c2-fa163e09fc56:1-30042640'
innodb_from_lsn = 0
innodb_to_lsn = 77942856651
partial = N
incremental = N
format = xbstream
compact = N
compressed = N
encrypted = N

Mysql主从搭建

  • 上面备份恢复完成后,将得到1个与源库数据一致的数据库,这俩可以搭建主从同步,也可以再恢复1个数据库搭建1主2从多从的架构。
  • 第1步骤,编写主从同步语句在mysql命令行中运行。如果原库没有主从信息,则只需要将从库指向主库进行同步即可。
//直接指定主库进行同步
CHANGE MASTER TO
MASTER_HOST='192.168.0.1',
MASTER_USER='root',
MASTER_PASSWORD='root',
MASTER_PORT=3306,
master_auto_position=1;
//开启从主库同步
start slave
//查看主从同步状态。主要看master_host对不对,Slave_IO_running是否yes,Slave_SQL_running是否为yes
show slave status\G;
  • 第1步中如果原库已经有过主从配置,恢复过来的时候也会有主从信息,需要先删除原来的主从配置,再配置主从:
//将停止原来的关系,清除原来的主从关系。
stop slave;
reset slave all;
//如果需要重置GTID,则运行如下语句,GITD段来源于上面备份文件的xtrabackup_info中:
SET GLOBAL gtid_purged='e8c1933c-f9bd-11e8-88c2-fa163e09fc56:1-30042640';
  • 第2步,如果从库需要做读节点,主库做读写节点,则可以给从库做只读配置:
set global read_only=on;
  • 最后就可以进行1主多从,读写分离的操作了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM