#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#

第5章 备份(三)

实战案例2(mysqldump + binlog):
一、优势:
1、自动记录日志position位置:mysql> show master status\G;
2、可用性,一致性(锁表机制)
二、语法: mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
1、库的范围:
-A, --all-databases 所有库
school 数据库名
school stu_info t1 是指school数据库的表stu_info、t1
-B, --databases bbs test mysql 多个数据库
2、其他参数:
–single-transaction #InnoDB 一致性 服务可用性
–master-data=1|2 #该选项将会记录binlog的日志位置与文件名并追加到文件中,或添加注释
–opt #同时启动各种高级选项
-R, --routines #备份存储过程和存储函数
-F, --flush-logs #备份之前刷新日志,截断日志。备份之后新binlog
–triggers #备份触发器
三、备份实战:
1、准备两套root密码:
密码1(配置到当前数据库中):[email protected]
密码2(备用):[email protected]
2、准备库1(请清理掉之前做实验的test库。实验后半部分,需要继续创建test库,避免混淆。)
testdb1.t1
例图:
#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#
3、执行备份:
mkdir /backup //创建文件/backup
mysqldump -p’[email protected]’ --all-databases --single-transaction --master-data=2 --flush-logs > /backup/date +%F-%H-mysql-all.sql
//master-data=2 注释掉日志记录
例图:
#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#
4、观察备份细节:vim /backup/2020-09-03-00-mysql-all.sql
22 – CHANGE MASTER TO MASTER_LOG_FILE=‘localhost-bin.000002’, MAS TER_LOG_POS=154; //二进制日志截断位置。第22行
例图:
#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#
5、备份后的,数据变更行为:
在testdb2.t2 中插入数据1,2,3;
创testdb3库
切断二进制日志(重启数据库)
例图:
#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#
1、备份二进制日志文件:cp /var/lib/mysql/bin ~
2、停止数据库:systemctl stop mysqld
3、清理环境(模拟):rm -rf /var/lib/mysql/*
4、启动数据库(找密码,再改一下密码。请使用密码2):
systemctl start mysqld
grep ‘password’ /var/log/mysqld.log
密码为:cTgteAK&V1R,
mysqladmin -uroot -p’cTgteAK&V1R,’ password ‘[email protected]
注意:语法要求password后面有空格。
例图:
#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#
5、mysql恢复数据:
mysql -p’[email protected]’ < /backup/2020-09-03-00-mysql-all.sql
mysql -p’[email protected]’ -e ‘flush privileges’
注意:刷新后请使用备份时密码 [email protected]
例图:恢复的数据库只有一个testdb1(testdb与本实验无关)
#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#
6、二进制日志恢复:
(1)观察二进制截取记录:
vim /backup/2020-09-03-00-mysql-all.sql
例图:
#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#
mysqlbinlog localhost-bin.000002 --start-position=154 | mysql -p’[email protected]
注意:后续有多少日志,要跟多少日志名字。
例图:
#我的第二十七堂云计算课# #开源数据库MySQL DBA运维实战 第5章 备份(三)#