Linux 开源数据库Mysql-9-mysqldump实现逻辑完全备份 + binlog语法:
mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
关于数据库名:
-A, --all-databases 所有库
school 数据库名
school stu_info t1 school数据库的表stu_info、t1
-B, --databases bbs test mysql 多个数据库
关于其它参数说明:
--single-transaction #InnoDB 一致性 服务可用性
-x, --lock-all-tables #MyISAM 一致性 服务可用性
-E, --events #备份事件调度器代码
--opt #同时启动各种高级选项
-R, --routines #备份存储过程和存储函数
-F, --flush-logs #备份之前刷新日志
--triggers #备份触发器
--master-data=1|2 #该选项将会记录binlog的日志位置与文件名并追加到文件中
备份流程
完整备份整个数据库
mysqldump -uroot -p'qwer1234QWER!@#$' --all-databases --single-transaction --routines --triggers --master-data=2 --flush-logs > /backup/`date +%F-%H`-mysql-all.sql
查看数据库是否备份成功
查看数据库的备份文件在第22行会出现以下字样,该字样说明mysql的bin-log日志分割了,此次备份的数据到mysql-bin.000002的第154行,以前的全部备份,以后未备份。
恢复流程
- 停止数据库
systemctl stop mysqld
- 清理环境
rm -rf /var/lib/mysql/*
rm -rf /var/log/mysql-bin/*
rm -rf /var/log/mysql-slow/*
rm -rf /var/log/mysqld.log
- 启动数据库 【初始密码 /var/log/mysqld.log】
systemctl start mysqld
grep 'password' /var/log/mysqld.log
- 重置密码 【新密码 】
systemctl start mysqld
grep 'password' /var/log/mysqld.log
登陆数据库修改密码,此时修改密码如果与原始数据库密码不相同,会出现恢复数据库后新测密码无法登陆的情况,原因是数据已经恢复密码也就恢复成旧的了。
5. mysql恢复数据 【新密码 】
mysql -p'Qwer@1234' < /backup/2022-07-31-13-mysql-all.sql
- 刷新授权 【备份时密码 】
mysql -uroot -p'Qwer@1234' -e 'flush privileges'
此时使用新密码登陆会失败
这是要使用老的密码登陆才能正常使用
恢复完成