mysqlbinlog 恢复数据库

停电,mysql8挂了,记录一下通过mysqlbinlog恢复数据库

  1. 备份源数据

先去原来的数据库下把binlog开头的,所有的文件都备份下来。
我的mysql8是nfs外挂的,位置是 ${nfs_path}/var/lib/mysql/下,如图:
在这里插入图片描述

  1. 恢复数据

第一次玩,找个新的数据库恢复,用下面的命令完成。

"C:\Program Files (x86)\mysql-8.0.23-winx64\bin\mysqlbinlog" --no-defaults --host=192.168.1.11 --port=30006 --user=root --password=kgb007dnmt008 "D:\mine\binlog.000001" "D:\mine\binlog.000002" "D:\mine\binlog.000003" "D:\mine\binlog.000004" "D:\mine\binlog.000005" "D:\mine\binlog.000006" | "C:\Program Files (x86)\mysql-8.0.23-winx64\bin\mysql" -u root -pkgb007dnmt008 --host=192.168.1.11 --port=30006

mysqlbinlog 命令
–no-defaults 防止utf8字符集报错
001-006 所有文件一起恢复
| 通过管道

mysqlbinlog命令不是每个版本都有的,我的目标数据库就没有,碰巧我本地windows的电脑上有,只能通过我的电脑执行命令远程恢复了。

缺点,超级慢,可能是数据有点多

报错时参考:

ERROR 1418 (HY000) at line 3438812: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
mysqlbinlog: Error writing file '<fd out of range>' (OS errno 0 - No error)

show variables like ‘log_bin_trust_function_creators’;
set global log_bin_trust_function_creators=1;
show variables like ‘log_bin_trust_function_creators’;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于使用mysqlbinlog恢复数据,您可以按照以下步骤进行操作: 1. 首先,您需要确保已经备份了要恢复MySQL二进制日志文件(通常以binlog开头)。如果没有备份,恢复数据将会变得困难,甚至不可能。 2. 定位最新的完整备份文件和二进制日志文件。如果您只有备份文件而没有二进制日志文件,您可以使用该备份文件还原数据库,并且会丢失备份后的更改。 3. 在MySQL服务器上停止所有相关的服务,以确保数据一致性。可以使用以下命令: ``` sudo service mysql stop ``` 4. 使用mysqlbinlog命令来解析和恢复二进制日志文件。例如,使用以下命令从二进制日志文件中创建SQL语句文件: ``` mysqlbinlog <binlog文件名> > restore.sql ``` 5. 打开恢复.sql文件,并检查其中的SQL语句,确保其包含正确的恢复操作。可以使用文本编辑器进行编辑。 6. 重新启动MySQL服务并登录到MySQL服务器: ``` sudo service mysql start mysql -u <用户名> -p ``` 7. 在MySQL命令行中执行恢复.sql文件中的SQL语句: ``` source /path/to/restore.sql; ``` 8. 等待恢复操作完成。这可能需要一些时间,具体取决于二进制日志文件的大小和恢复操作的复杂性。 请注意,使用mysqlbinlog恢复数据可能会有一定的风险,因此在执行之前务必进行备份,并在恢复之前仔细检查和验证恢复的SQL语句。此外,根据具体情况可能需要额外的步骤和配置,请参考MySQL官方文档或专业人士的建议。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值