过binlog恢复部分数据异常。
?
如果遇到灾难事件,应该用最近一次制作的完整备份恢复
数据库,然后使用备份之后的日志文件把
数据库恢复到最接近现在的可用状态。使用日志进行恢复时需要依次进行,即最早生成的日志文件要最先恢复。
?
常用binlog日志操作命令
?
1.查看所有binlog日志列表
mysql> show master logs;(新机器作为主时,binlog的信息)
?
[root@WEBAPP_B_IP_HOST /data/dbdata/binlog]# pwd/data/dbdata/binlog
[root@WEBAPP_B_IP_HOST /data/dbdata/binlog]# lltotal 884156-rw-rw---- 1 mysql admin ? ? 27317 Nov ?9 12:41 mysql-bin.000001-rw-rw---- 1 mysql admin ? 1034478 Nov ?9 12:41 mysql-bin.000002-rw-rw---- 1 mysql admin ? ? ? 531 Nov ?9 12:42 mysql-bin.000003-rw-rw---- 1 mysql admin 903407219 Nov 12 00:10 mysql-bin.000004-rw-rw---- 1 mysql admin ? ? ? 148 Nov ?9 15:08 mysql-bin.index
[root@WEBAPP_B_IP_HOST /data/dbdata/binlog]# mysql -e "show master logs;"+------------------+-----------+
| Log_name ? ? ? ? | File_size |
+------------------+-----------+
| mysql-bin.000001 | ? ? 27317 |
| mysql-bin.000002 | ? 1034478 |
| mysql-bin.000003 | ? ? ? 531 |
| mysql-bin.000004 | 903407219 |
+------------------+-----------+
?
2.查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值
mysql> show master status;(新机器作为从时,主服务器最新binlog的位置信息)
?
[root@WEBAPP_B_IP_HOST /data/dbdata/binlog]# mysql -e "show master status;"+------------------+-----------+--------------+------------------+-------------------+
| File ? ? ? ? ? ? | Position ?| Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+-----------+--------------+------------------+-------------------+
| mysql-bin.000004 | 903407219 | ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? |
+------------------+-----------+--------------+------------------+-------------------+
?
3.刷新log日志,自此刻开始产生一个新编号的binlog日志文件
mysql> flush logs;
?
mysql> flush logs;
Query OK, 0 rows affected (0.00 sec)
?
mysql> show master logs;
+------------------+-----------+
| Log_name ? ? ? ? | File_size |
+------------------+-----------+
| mysql-bin.000001 | ? ? 27317 |
| mysql-bin.000002 | ? 1034478 |
| mysql-bin.000003 | ? ? ? 531 |
| mysql-bin.000004 | 903407266 |
| mysql-bin.000005 | ? ? ? 120 |
+------------------+-----------+5 rows in set (0.00 sec)
?
注:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;
?
4.重置(清空)所有binlog日志
mysql> reset master;
?
mysql> reset master;
Query OK, 0 rows affected (0.08 sec)
?
mysql> show master logs;
+------------------+-----------+
| Log_name ? ? ? ? | File_size |
+------------------+-----------+
| mysql-bin.000001 | ? ? ? 120 |
+------------------+-----------+1 row in set (0.00 sec)
清空当前机器的binlog。
?
5.清理
?
清除binlog
?
PURGE {MASTER|BINARY} LOGS TO 'log_name' //log_name不会被清除
PURGE {MASTER|BINARY} LOGS BEFORE 'date' //date不会被清除
?
2. 主从复制配置
?
1)旧机器(主A_IP)上创建主从同步帐号:
?
?grant replication slave on *.* to 'rep'@'B_IP' identified by 'heheheh';
?
2)查看当前旧机器(主A_IP)的binlog状态
?
mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File ? ? ? ? ? ? | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | ? ? ?120 | ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? |
+------------------+----------+