Mysql DBA高级运维学习之路——初步增量恢复Mysql数据库

  

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参数。

Mysql DBA高级运维学习之路——初步增量恢复Mysql数据库