问题描述
在Mariadb中使用mysqlbinlog对数据库进行从日志中恢复的操作。
[root@ecs mysql]# mysqlbinlog --start-position="578" --stop-position="1355" bin.000009 | mysql -u root -p
mysqlbinlog: unknown variable 'default-character-set=utf8'
Enter password:
[root@ecs mysql]#
虽然能够输入密码并检验密码的错误,但是这个语句的预期执行效果并没有出现,我试了以下几个方法,实锤这个语句没有被执行
- 使用错误的密码,不能通过验证,无数据库恢复反应;
- 使用不存在的日志文件,能通过密码验证,无数据库恢复反应;
- 单一start参数或者单一stop参数,能通过密码验证,无数据库恢复反应;
- 给日志文件加上绝对路径,能通过密码验证,无数据库恢复反应;
- 重启数据库服务,无数据库恢复反应;
- 根据日志的commit确定多个时间端进行修改position,能通过密码验证,无数据库恢复反应;
- 每次进行数据库操作后,都进行日志查看,精确到哪个commit对应那个增删改操作,矫正position,能通过密码验证,无数据库恢复反应;
第一次得到的结论是,mariadb可能取消了这个操作,然后默默打开了mariadb的官网查看最新版文档,没有删除锕!!!(我想去翻译,可每次用github登录之后要填信息,填完点击确认却没反应!!!高墙出来挨打)。
于是,十多次失败后的结论就是:unknown variable 这个提示说明语句无法正确执行,即使能输入密码验证。
于是问题就变成了如何close这个issue
解决办法
方法一:注释
vim /etc/my.cnf.d
里面有五个文档,把client和serve里面的
default-character-set=utf8
变成
#default-character-set=utf8
即注释掉,这样不用重启数据库服务。
但是还没有找到完全之策。
方法二:defaults
mysqlbinlog --no-defaults bin.000009
这样的话不会报出上面的提示,唯一的缺陷就是这个中文会乱码。。。
参考
- https://blog.csdn.net/gnufre/article/details/6955169 (推荐)
- https://www.cnblogs.com/cobbliu/p/4311926.html (着实看不懂)