0) 必须关闭binlog server的MySQL实例
1) 修改binlog server的部分信息
a) vi /etc/my.cnf
log-bin=/data/mysql.bin/binserver
b)vi binserver.index
/data/mysql.bin/binserver.000001
/data/mysql.bin/binserver.000002
... 以此类推(需要恢复的binlog日志)
c)show master status 检查一下是否修改有效。
d) 注意点:
binserver.index 里面写的内容 一定要和外面一致。
比如: cat binserver.index
/data/mysql.bin/binserver.000001
/data/mysql.bin/binserver.000002
那么: /data/mysql.bin/ 里面一定要有 binserver.000001,binserver.000002 文件
2)full backup server 导入全备的数据,记录要同步的文件,postion,以及只同步那些表,都设置好。
a ) 从全备中拉出需要还原的表,放在对应的DB里面。
b ) 设置过滤规则,需要在my.cnf文件中设置,需要重启mysql才能生效
比如:我只恢复某几张表
replicate-wild-do-table=newhome_db.ugc_dianping
replicate-wild-do-table=newhome_db.ugc_dianping_content
replicate-wild-do-table=heartbeat_db.heartbeat
c)关于复制过滤规则的详细说明,请看http://keithlan.github.io/2015/07/14/mysql_replicate_rule/
3)change master 到 binlog server
a)full back server > change master to master_host='$binserver.host', master_user='xxx', master_password='xxx', MASTER_LOG_FILE='$binserver.file',master_log_pos=$binserver.pos
b) $binserver.host : binlog server的ip
c)$MASTER_LOG_FILE :从全部拉出来的文件的file , relay-log.info里面有
d)$master_log_pos: 从全部拉出来的文件的positon ,relay-log.info里面有
4)同步到指定位置(一般是误操作的position)结束
a)full back server > START SLAVE UNTIL MASTER_LOG_FILE = '$log_name', MASTER_LOG_POS = $log_pos
b) $log_name : 就是最后恢复截止的binlog 文件名,即误操作的binlog文件名
c)$log_pos:就是最后恢复截止的binlog的position,即误操作的binlog position