技术开发 频道

MYSQL数据库主主同步实战

  4、 数据库同步失效的解决

  当数据同步进程失效后,首先手工检查slave主机当前备份的数据库日志文件在master主机上是否存在,在slave主机上运行:

  mysql> show slave status\G

  一般获得如下的信息:

1   *************************** 1. row ***************************
2
3   Slave_IO_State: Waiting for master to send event
4
5   Master_Host: 10.21.3.240
6
7   Master_User: tongbu
8
9   Master_Port: 3306
10
11   Connect_Retry: 30
12
13   Master_Log_File: mysql-bin.000001
14
15   Read_Master_Log_Pos: 360
16
17   Relay_Log_File: localhost-relay-bin.000003
18
19   Relay_Log_Pos: 497
20
21   Relay_Master_Log_File: mysql-bin.000001
22
23   Slave_IO_Running: Yes
24
25   Slave_SQL_Running: Yes
26
27   Replicate_Do_DB: bak
28
29   Replicate_Ignore_DB:
30
31   Replicate_Do_Table:
32
33   Replicate_Ignore_Table:
34
35   Replicate_Wild_Do_Table:
36
37   Replicate_Wild_Ignore_Table:
38
39   Last_Errno: 0
40
41   Last_Error:
42
43   Skip_Counter: 0
44
45   Exec_Master_Log_Pos: 360
46
47   Relay_Log_Space: 497
48
49   Until_Condition: None
50
51   Until_Log_File:
52
53   Until_Log_Pos: 0
54
55   Master_SSL_Allowed: No
56
57   Master_SSL_CA_File:
58
59   Master_SSL_CA_Path:
60
61   Master_SSL_Cert:
62
63   Master_SSL_Cipher:
64
65   Master_SSL_Key:
66
67   Seconds_Behind_Master: 0

  其中Master_Log_File描述的是master主机上的日志文件。

  在master上检查当前的数据库列表:

  mysql> show master logs;

  得到的日志列表如下:

  +----------------------+-----------+

  | Log_name | File_size |

  +----------------------+-----------+

  | localhost-bin.000001 | 495 |

  | localhost-bin.000002 | 3394 |

  +----------------------+-----------+

  如果slave主机上使用的的Master_Log_File对应的文件在master的日志列表中存在,在slave主机上开启从属服务器线程后可以自动同步:

  mysql> start slave;

  如果master主机上的日志文件已经不存在,则需要首先从master主机上恢复全部数据,再开启同步机制。

  在slave主机上运行:

  mysql> stop slave;

  在master主机上运行:

  mysql> stop slave;

  在slave主机上运行:

  mysql> load data from master;

  mysql> reset master;

  mysql> start slave;

  在master主机上运行:

  mysql> reset slave;

  mysql>start slave;

  注意:LOAD DATA FROM MASTER目前只在所有表使用MyISAM存储引擎的数据库上有效。

0
相关文章