一、mysqlbackup简介:
mysqlbackup是mysql的一个企业级备份工具,优点就是牛逼,缺点就是这东西要钱买。
二、gtid 特性简介:
gtid 的中文名叫全局事务ID,也就是说每一个事务都会对应一个全局唯一的编号;由于这个编号也会被写入到binlog
只要slave把自己的已经应用的gitd发给master, master就能知道slave同步到了二进制日志的那个位置。也就是说之前
的master_log_file,master_log_pos被革命了。
三、重建slave大致上要分如下几步:
1、备份master
2、传输备份到slave主机
3、确保slave已经停止,数据目录已经清空
4、还原备份
5、建立主从关系,启动复制
四、备份master:
1、备份脚本
mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/tmp/ --with-timestamp \ --host=127.0.0.1 --port=3306 --user=mebuser --password='Pass@352' \ --compress --skip-binlog --skip-relaylog --limit-memory=1024 \ --read-threads=4 --process-threads=8 --write-threads=4 \ --backup-image=/tmp/$(date +'%F_%H-%M-%S').mbi \ backup-to-image
2、注意事项
--no-locking 这个选择使得mysqlbackup在备份的最后阶段不锁表,这样就得不到一个全局一致的备份;之所以说是全局一致是
是因为对于innodb表来说是一致的,因为在还原的时候会前滚回滚,但是MyIASM表就不能保证一致了;所以这种情况下mysqlbackup
得不到一个正确的binlog位置,这样做重建是有问题的。
3、性能优化项:
--read-threads --write-threads 如果你的磁盘性能比较牛逼就调大这两个参数
--process-threads 如果你的cpu性能比较牛逼就调大这个上参数
--limit-memory 如果你的内存比较空闲就调大这个上参数
五、传输备份到slave:
scp 2017-08-29_16-23-16.mbi root@172.16.192.111:/tmp/
六、停止slave 并清空它的数据目录:
systemctl stop mysqlmv /database/mysql/data/3306 /database/mysql/data/3306.backup.20170829mkdir -p /database/mysql/data/3306/
七、还原备份:
1、还原脚本
mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/tmp/meb --with-timestamp --backup-image=/tmp/2017-08-29_16-23-16.mbi \ --datadir=/database/mysql/data/3306/ --uncompress copy-back-and-apply-log
2、还原后的数据目录内容
ll /database/mysql/data/3306/total 110656-rw-r--r--. 1 root root 302 Aug 29 16:43 backup_gtid_executed.sql # 记录着gtid相关信息-rw-r--r--. 1 root root 568 Aug 29 16:43 backup_variables.txt-rw-r--r--. 1 root root 383 Aug 29 16:43 ib_buffer_pool-rw-r--r--. 1 root root 12582912 Aug 29 16:43 ibdata1-rw-r-----. 1 root root 50331648 Aug 29 16:43 ib_logfile0-rw-r-----. 1 root root 50331648 Aug 29 16:43 ib_logfile1drwxr-x---. 2 root root 4096 Aug 29 16:43 mysqldrwxr-x---. 2 root root 8192 Aug 29 16:43 performance_schema-rw-r--r--. 1 root root 15623 Aug 29 16:43 server-all.cnf-rw-r--r--. 1 root root 4555 Aug 29 16:43 server-my.cnfdrwxr-x---. 2 root root 8192 Aug 29 16:43 sys
3、修改数据目录的权限
chown -R mysql:mysql /database/mysql/data/3306
八、启动slave并配置复制:
1、启动slave
systemctl start mysql
2、更新slave上gtid信息
reset master;set sql_log_bin=0;source /database/mysql/data/3306/backup_gtid_executed.sql
3、配置复制
change master to master_user='repl', master_password='xxxxxxxx', master_host='172.16.192.110', master_port=3306, master_auto_position=1;start slave;
4、查看复制的状态
show slave status \G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.16.192.110 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 3206 Relay_Log_File: clusterb-relay-bin.000002 Relay_Log_Pos: 626 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes
总结:
用mysqlbackup重建带有gtid特性的slave的过程大致就是上面这个样子了,这里并没有对mysqlbackup有过多的讲解,
官方文档见:
交流学习
----