在新的项目不断迭代版本的时候我们有时候需要经常修改数据库的表结构和表数据,这时候经常用到source xxx.sql 命令来导入新建的表和数据(前提是进入sql命令行~ 如下图),但是在使用这个命令的时候我们要注意:尽量使用先前版本不存在的sql文件包含的表来导入。比如原始数据库中没有table_a 这个数据表,我们可以用source table_a.sql文件来进行导入,但是如果原始数据库中有table_a.sql 的话,就最好不要用source table_a.sql 来进行导入了。
那万一使用上面的source xxx.sql,导致数据有问题,想恢复到之前的状态怎么办? 下面我们将使用mysql中的二进制日志
1.先看看是否打开了二进制日志, show variables like 'log_bin';
我们看到上面是没有打开的,下面我们找到mysql的配置文件,Linux中在/etc/my.cnf Windows的话就是my.ini 中,加入下面的两句(如下图):
log-bin=mysql
binlog-do-db=数据库名(这句话可要可不要,指定为相应的数据库来插相应的日志)
加入以后退出,重启mysql服务就可以了,linux中是service mysqld restart
然后我们每一次的操作都会记录在二进制日志文件中,到底这个二进制文件在哪里呢? 我们可以查看当前数据库的状态 show master status;
这里我们可以看到有一个mysql.000001 中,找到它,打开可以看到(之前我做了一次插入数据的操作):
这样我们可以通过后续的命令来进行恢复了。
参考:jumethh的专栏