利用 innobackupex 备份恢复 做mysql 主从
主库大了以后,mysqldump备份初始化 数据库从库就显得力不从心。工作:做主从
特别是在 “天下武功,唯快不破” 的年代,速度成了成功的重要前提。
用工具,用出心得。用出剑锋。。。
1: 官方资料:https://www.percona.com/doc/percona-xtrabackup/2.4/innobackupex/innobackupex_option_reference.html
https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
2:安装:推荐yum,新手必备。一刀到位。
3:压缩备份原数据库,根据实际机器core数选择压缩线程。
nohup sh backup.sh &
#!/bin/sh /usr/bin/innobackupex --defaults-file=/etc/my.cnf --host=127.0.0.1 --port=3306 --user=root --password='x'x'x' --parallel=8 --compress-threads=8 --compress /dbdata/backup
4:对比主库运行参数和配置参数差异
pt-config-diff h=127.0.0.1,P=3306,u=root,p='xxx' /etc/my.cnf
5:查看成功的备份,.qp表示是压缩备份,查看备份情况 xtrabackup_info 文件。
[root@db_pre_191 2019-05-10_18-46-10]# ls backup-my.cnf.qp ib_buffer_pool.qp mysql performance_schema sys undo001.qp undo003.qp xtrabackup_checkpoints xtrabackup_logfile.qp call_center_db ibdata1.qp percona report tdata undo002.qp xtrabackup_binlog_info.qp xtrabackup_info.qp
uuid = 53f84dd0-7314-11e9-a17b-56318c4b9444 name = tool_name = innobackupex tool_command = --defaults-file=/etc/my.cnf --host=127.0.0.1 --port=3306 --user=root --password=... --parallel=8 --compress-threads=8 --compress /dbdata/backup tool_version = 2.4.9 ibbackup_version = 2.4.9 server_version = 5.7.23-log start_time = 2019-05-10 18:46:10 end_time = 2019-05-10 19:11:15 lock_time = 0 binlog_pos = filename 'data.000029', position '1141561', GTID of the last change '66dd0de4-e808-11e8-9977-56318c4b9444:1-5239179, e60ad69e-3f20-11e9-ac66-3a9923d2ce01:1-71698' innodb_from_lsn = 0 innodb_to_lsn = 1738871043736 partial = N incremental = N format = file compact = N compressed = compressed encrypted = N
6:NC 传数据
7:目标主机解压:
rpmkeys --import https://www.percona.com/downloads/RPM-GPG-KEY-percona yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm yum install qpress -y xtrabackup --decompress --target-dir=/data/
8:全库恢复 ,关闭数据库并删除数据文件
9:准备(prepare)一个完全备份: --apply-log 执行之后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared
innobackupex --apply-log /data/2019-05-10_18-46-10
10:执行恢复:
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync 2019-05-10_18-46-10
11:更改 data/ 目录权限并启动mysql
#chown -R mysql.mysql data/ #systemctl start mysqld
12:增量备份1, 以全备为基准。
innobackupex --defaults-file=/etc/my.cnf --user=xxx --password=xxx --socket=/tmp/mysql.sock --incremental /data/inc --incremental-basedir=/data/2019-05-10_18-46-10 --parallel=2
cat xtrabackup_checkpoints backup_type = incremental ##说明是增量备份 from_lsn = 1738871043736
to_lsn = 1738871053736
last_lsn =1738881053736
compact = 0
recover_binlog_info = 0
13:增量备份2,以增量1为准
innobackupex --defaults-file=/etc/my.cnf --user=xxx--password=xxx --socket=/tmp/mysql.sock --incremental /data/inc --incremental-basedir=/data/inc/2019-05-10_19-46-10/ --parallel=2
14: 增量备份恢复:下面是别人测的示例
- 恢复完全备份
- 恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份要去掉--redo-only)
- 对整体的完全备份进行恢复,回滚未提交的数据
##准备一个全备## [root@centos6 pxb]# innobackupex --apply-log --redo-only /data/pxb/2017-04-24_02-46-11/ xtrabackup: starting shutdown with innodb_fast_shutdown = 1 InnoDB: Starting shutdown... InnoDB: Shutdown completed; log sequence number 2628145 InnoDB: Number of pools: 1 01:33:52 completed OK! ##将增量1应用到完全备份## [root@centos6 pxb]# innobackupex --apply-log --redo-only /data/pxb/2017-04-24_02-46-11/ --incremental-dir=/data/pxb/inc/2017-04-28_01-09-40/ ##将增量2应用到完全备份,注意不加 --redo-only 参数了## [root@centos6 pxb]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/ --incremental-dir=/data/pxb/inc/2017-04-28_01-27-46/ ##把所有合在一起的完全备份整体进行一次apply操作,回滚未提交的数据## [root@centos6 pxb]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/ xtrabackup: Log applied to lsn 2628145 xtrabackup: The intended lsn is 2643563
monkeybron