LinuxMysql数据备份_mysqldump+binlog
数据操作有风险 本文仅提供学习交流 操作需谨慎
Mysqldump
Mysqldump -h 服务器 -u用户名 -p密码 数据库>本份文件.sql
注意:备份的时候需要再想一套密码 用户待会测试使用 可以和现在密码类似
首先我们创建实验环境 一个testdb数据库里一个t1表里面三条数据
mysqldump -p’[email protected]’ --all-databases --single-transaction --master-data=2 --flush-logs >/backup/date +%F-%H
-mysql-all.sql 备份mysql中所有的库到/backup目录下并以时间命名
vim /backup/2020-09-06-01-mysql-all.sql可以查看备份文件的信息
备份完成后 再向数据库中插入信息 模仿真实环境中备份完成后新增数据的操作
在testdb中的t1表中插入几条记录 再创建testdb2数据库 重启mysql切断日志
重新进入数据库 在t1表中插入一条记录 删除testdb2数据库
下表中 123是备份过的数据,456是备份后新建的数据,重启MySQL后新建的数据
Mysqldump+binlog数据恢复
备份二进制日志文件
Cp /var/lib/mysql/bin . 备份mysql下的二进制日志文件到当前目录***意后面的 “.”。
停止数据 删除/var/lib/mysql/下的所有文件模拟数据损坏
重新启动mysqld服务 初始化修改密码后进入数据库开始进行恢复操作
Cat /var/log/mysqld.log |grep ‘password’ 查看mysql日志文件 过滤出初始密码复制:l>z%,Bx.5rp
[[email protected] ~]# mysqladmin -uroot -p’+XVlRm40C9e(’ password ‘[email protected]’
使用初始密码更改新密码为[email protected]
[[email protected] ~]# mysql -uroot -p’[email protected]’ 登录 正常
恢复数据
mysql -uroot -p’[email protected]’ < /backup/2020-09-06-01-mysql-all.sql 把备份的文件重定向到mysql中
查看数据库中的表 mysql -uroot -p’[email protected]’ -e’select * from testdb.t1’ 可以看到表中只有我们备份数据前添加的记录123
思考一下 为什么重启MySQL服务后密码登录不进去了?
没错宝贝 就是因为原来的数据库恢复进去了 包括原来的密码 所以使用原来的密码登录即可
恢复只恢复了备份过的数据剩下的数据可以使用二进制日志来恢复
首先我们查看备份的截取记录
vim /backup/2020-09-06-01-mysql-all.sql 可以看到已经备份的二进制日志点 我们就从000006往后开始进行恢复
mysqlbinlog localhost-bin.000006 --start-position=154 | mysql -p’[email protected]’
mysqlbinlog localhost-bin.000007 --start-position=154 | mysql -p’[email protected]’
回复完成如图 数据非常完整
通过二进制日志恢复撤销删除操作
接下来我们来思考一下 怎么去除删除testdb2的操作并保留testdb2数据库
就是这样
在恢复最后一段log数据的时候进行操作mysqlbinlog localhost-bin.000007 > 1.txt 读取日志第七段也就是做删除操作的那一段日志并重定向到1.txt文件中
我们找到该文件删除有drop操作的at470 保存 然后
让mysql再读取一遍。
这样数据库中就有了最后一段日志的数据并且还保存了本来删除过的testdb2数据库
。