今天在做update更新数据的时候,因为没有统一好需要更新的数据编执行了update操作,所以需要回滚到先前的数据,所以就赶紧去服务器看binlog日志,结果一看binlog竟然没有开启,把我给惊的啊,然后一看mysql原来是用的腾讯云的mysql数据库,自带的开启了binlog功能,知道了这点,然后就好办了,赶紧回滚吧.
下载binlog2sql工具
git clone https://github.com/danfengcao/binlog2sql.git
pip install -r requirements.txt
查看binlog
进入到show master logs;
查看binlog信息,并找到最新的binlog文件.
执行回滚操作
假设我这里mysql-bin.000002
是最新的binlog日志.则可以使用如下命令进行操作:
1.查看:python binlog2sql/binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p\'admin\' -dtest -t f --start-file=\'mysql-bin.000002\'
2.生成: python binlog2sql/binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p\'admin\' -dtest -t f --start-file=\'mysql-bin.000002\' --start-pos=4 --end-pos=314 -B
3.执行:python binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p\'admin\' -dtest -t f --start-file=\'mysql-bin.000002\' --start-pos=4 --end-pos=314 -B | mysql -h127.0.0.1 -P3306 -uadmin -p\'admin\'
开启自己本机的binlog功能
拿我的mysql来说,mysql配置文件在/etc/mysql/mysql.conf.d
,具体操作步骤如下:
#cd /etc/mysql/mysql.conf.d
#vim mysqld.cnf
找到server-id选项,并开启相应配置:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 1000M
binlog-format = row
然后重启mysql服务
sudo service mysql restart
连接到数据库,并使用吗show master logs;
命令查看binlog日志,如果出现如下结果就说嘛开启成功.
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 154 |
+------------------+-----------+
进行到这一步,说明你的binlog已经可以起飞了,不过在实际操作数据库的过程中还是要多加注意,在进行DDL的操作过程中需要更加的注意.
参考:
https://www.cnblogs.com/panxuejun/p/6148324.html