1。开启mysql日志
(1)配配置my . cnf中所做置文件
先配把my . cnf中所做置文件中的log-bin参数打开,并将log-bin的设为mysqlbin_linzhongniao,这样在mysql数据库中更新数据时就会记录到这个日志文件中。这样有一个缺点会导致日志文件很大,但是并没关系,系统可以自动分割我们还可以手动分割。查看mysql日志文件用mysqlbinlog
<代码> [root@linzhongniao ~] # grep。“log-bin”/数据/3306/my . cnf中所做 log-bin=/数据/3306/mysqlbin_linzhongniao 代码>
(2)配置重完my . cnf中所做启mysql
<代码> [root@linzhongniao ~] #/数据/3306/mysql重启 重新启动MySQL…… 回采MySQL .... 启动MySQL…代码>
(3)重启之后就可以在mysql的数据文件下看见mysql日志文件。
它记录了对数据有更改操作的语句,之前如果有就不用配置log-bin。
<代码> [root@linzhongniao ~] # ls/数据/3306/mysqlbin_linzhongniao。*//3306/mysqlbin_linzhongniao数据。000001//3306/mysqlbin_linzhongniao.index数据 代码/数据/3306/mysqlbin_linzhongniao.000002 >
2。模拟增量恢复不停止数据库方法
(1)查看表数据
<代码> mysql>使用linzhongniao; 完成阅读表信息表和列的名称 你可以关掉这个功能——更快的启动 数据库修改 mysql>选择数据库(); +--------------+ | |数据库() +--------------+ | linzhongniao | +--------------+ 1行集(0.00秒) mysql>显示表; + - - - - - - - - - - - - - - - - - - - - - - - - + | Tables_in_linzhongniao | + - - - - - - - - - - - - - - - - - - - - - - - - + 测试| | + - - - - - - - - - - - - - - - - - - - - - - - - + 1行集(0.01秒) mysql>select *从测试; + - - - - - - - - - - - - - - - - - - + | | | id名称 + - - - - - - - - - - - - - - - - - - + | 1 | linzhogniao | | 2 | wwn1314 | lisi | 3 | | | 4 | woshishei | | 5 | xiaozhang | + - - - - - - - - - - - - - - - - - - + 5行集(0.00秒)代码>
(2)将id为1的值改为nishishei
<代码> mysql>更新测试集的名字=' nishishei ' id=' 1 '; 查询好了,1行影响(0.10秒) 行匹配:1改变:1警告:0 mysql>select *从测试; + - - - - - - - - - - - - - - - - - + | | | id名称 + - - - - - - - - - - - - - - - - - + | 1 | nishishei | | 2 | wwn1314 | lisi | 3 | | | 4 | woshishei | | 5 | xiaozhang | + - - - - - - - - - - - - - - - - - + 5行集(0.00秒) mysql>冲洗特权; 查询好,0行影响(0.00秒)代码>
(3)然后退出mysql用mysqlbinlog查看一下mysqlbin_linzhongniao.000002日志文件
<代码> [root@linzhongniao ~] # mysqlbinlog/数据/3306/mysqlbin_linzhongniao.000002 # 183 # 181018 20:24:08服务器id 299查询end_log_pos thread_id error_code=0=1 exec_time=0 使用“linzhongniao”/* ! */; 设置时间戳=1539865448/* ! */; 更新测试集的名字=' nishishei ' id=' 1 '/* ! */;代码>
看<代码>更新测试集name=' nishishei id=?> 代码这条语句,在恢复的时候要把这条语句删掉,再把数据导进去。因为恢复数据的时候还会往里写数据导致数据缺失,所以先把之前的日志文件备份出来。恢复数据,好的方法就是停库,不能停止数据库可以进行手动切割日志文件这样就会生成一个新的日志文件来存储数据
(4)备份有误操作的日志文件
<代码> # cp mysqlbin_linzhongniao root@linzhongniao数据。000002/opt/代码>
(5)切割日志文件
<代码> [root@linzhongniao ~] # mysqladmin -uroot -p123456 - s/3306/mysql/数据。袜子日志(root@linzhongniao ~) #/数据/3306/mysqlbin_linzhongniao.00000 * -rw-rw - - - - -。126 10月18日定于今年mysql mysql/数据/3306/mysqlbin_linzhongniao.000001 -rw-rw - - - - -。468 10月18日20:41 mysql mysql/数据/3306/mysqlbin_linzhongniao.000002 -rw-rw - - - - -。107 10月18日20:41 mysql mysql/数据/3306/mysqlbin_linzhongniao.000003 代码>
我们看切割完了就出现了mysqlbin_linzhongniao.000003,切割完之后写入数据就往mysqlbin_linzhongniao.000003里面写了,现在我们要处理的就是将mysqlbin_linzhongniao.000002日志文件记录的数据重新导入到数据库中
(6)生成bin.sql文件
在工作中bin-log日志文件中记录了多个库的数据,有多个表和库,在恢复数据的时候只对有误操作的库和表进行操作即可。因为在恢复数据的时候有多个库和表会导致主键重复而不能插入数据,所以在做恢复的时候要指定库和表。备份指定库用mysqlbinlog的- d参数。