目录
了解mysqldump
mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具。支持基于InnoDB的热备份。但由于是逻辑备份,所以速度不是很快,适合备份数据量比较小的场景。
mysqldump完全备份+二进制日志 —>实现时间点恢复
1.温备:
在使用MyISAM引擎中,只能使用温备份,这时候要防止数据的写入,所以先加上读锁
这时候可以进入数据库手动加读锁。这样比较麻烦,在mysqldump工具中直接有一个加锁的选项
mysqldump --databases mydatabase --lock-all-tables --flush-logs> /tmp/backup-`date +%F-%H-%M`.sql
如果是针对某张表备份,只要在数据库名称后面加上表名称就行了
这里注意,要实现时间点的恢复,加上--flush-logs选项,在使用备份文件恢复后,然后再基于二进制日志进行时间点的恢复
时间点的恢复方法:
mysqlbinlog mysql-bin.000000x > /tmp/PointTime.sql
然后用mysql命令导入这个sql脚本就行了
2.热备: 如果使用的是InnoDB引擎,就不必进行对数据库加锁的操作,加一个选项既可以进行热备份:mysqldump --single-transaction --databases mydb --single-transaction --flush-logs --master-data=1 > /tmp/backup-`date +%F-%H-%M`.sql
注意点 恢复的时刻关闭二进制日志 mysql>set sql_log_bin=0; 因为这是基于逻辑备份方式,在恢复日志时会执行sql语句插入数据,而恢复时候插入数据的日志没有意义。
前提
数据量小于10G,可以使用mysqldump;
数据量大于10G,使用xtrabackup或其他备份工具;
本次数据量5G左右,采用mysqldump-热备。
主库操作
mysql> show master status;
从库操作
mysql> show slave status\G
主库服务器
在主服务器备份主库数据
mysqldump -uroot -p --set-gtid-purged=OFF --single-transaction --master-data=2 --all-databases > /root/backup.sql
--master-data=1参数是在备份文件中有 CHANGE MATER TO xxxxx命令,对备库有用
--single-transaction参数是mysqldump在全量数据导入是对锁的一些处理,都应该加上该参数将备份的主库数据传输到从服务器
# scp /root/backup.sql 192.168.103.32:/root/
从库操作
停止同步
mysql> stop slave;
重置从库
mysql> reset slave all;
导入到从库
mysql> source /root/backup.sql;查看主库binglog日志点位(大概前面30行左右),change语句的MASTER_LOG_FILE、MASTER_LOG_POS根据此文件来的
# more /root/backup.sql查找当时备份的MASTER_LOG_FILE、MASTER_LOG_POS
例如:MASTER_LOG_FILE='mysql-bin.log',MASTER_LOG_POS='256'
配置主库信息
mysql> CHANGE MASTER TO MASTER_HOST='192.168.102.31',MASTER_USER='rep',MASTER_PASSWORD='PASSWORD',MASTER_LOG_FILE='mysql-bin.log',MASTER_LOG_POS=256;开启同步
mysql> start slave;mysql> show slave status\G