MYSQL 主主循环同步,该如何处理

MYSQL 主主循环同步

最近同步问题比较多。我自己做了一下实验。

刚刚抽空做了一下MYSQL 的主主同步。

把步骤写下来,至于会出现的什么问题,以后随时更新。这里我同步的数据库是TEST

1、环境描述。

  主机:192.168.0.231(A)

  主机:192.168.0.232(B)

  MYSQL 版本为5.1.21

2、授权用户。

A:

mysql> grant replication slave,file on *.* to ‘repl1’@’192.168.0.232’ identified

 by ‘123456’;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

B:

mysql> grant replication slave,file on *.* to ‘repl2’@’192.168.0.231’ identified

 by ‘123456’;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

然后都停止MYSQL 服务器。

3、配置文件。

在两个机器上的my.cnf里面都开启二进制日志 。

A:

user = mysql

log-bin=mysql-bin

server-id = 1

binlog-do-db=test

binlog-ignore-db=mysql

replicate-do-db=test

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

sync_binlog=1

B:

user = mysql

log-bin=mysql-bin

server-id = 2

binlog-do-db=test

binlog-ignore-db=mysql

replicate-do-db=test

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

sync_binlog=1

至于这些参数的说明具体看手册。

红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。

紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步 。

4、重新启动MYSQL服务器。

在A和B上执行相同的步骤

[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe &

[1] 4264

[root@localhost ~]# 071213 14:53:20 mysqld_safe Logging to ‘/usr/local/mysql/data/localhost.localdomain.err’.

/usr/local/mysql/bin/mysqld_safe: line 366: [: -eq: unary operator expected

071213 14:53:20 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

5、进入MYSQL的SHELL。

A:

mysql> flush tables with read lock\G

Query OK, 0 rows affected (0.00 sec)

mysql> show master status\G

*************************** 1. row ***************************

  File: mysql-bin.000007

  Position: 528

  Binlog_Do_DB: test

Binlog_Ignore_DB: mysql

1 row in set (0.00 sec)

B:

mysql> flush tables with read lock;

Query OK, 0 rows affected (0.00 sec)

mysql> show master status\G

*************************** 1. row ***************************

  File: mysql-bin.000004

  Position: 595

  Binlog_Do_DB: test

Binlog_Ignore_DB: mysql

1 row in set (0.00 sec)

然后备份自己的数据,保持两个机器的数据一致。

方法很多。完了后看下一步。

6、在各自机器上执行CHANGE MASTER TO命令。

A:

mysql> change master to

  -> master_host=’192.168.0.232′,

  -> master_user=’repl2′,

  -> master_password=’123456′,

  -> master_log_file=’mysql-bin.000004′,

  -> master_log_pos=595;

Query OK, 0 rows affected (0.01 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

B:

mysql> change master to

  -> master_host=’192.168.0.231′,

  -> master_user=’repl1′,

  -> master_password=’123456′,

  -> master_log_file=’mysql-bin.000007′,

  -> master_log_pos=528;

Query OK, 0 rows affected (0.01 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

7、查看各自机器上的IO进程和 SLAVE进程是否都开启。

A:

mysql> show processlist\G

*************************** 1. row ***************************

  Id: 2

  User: repl

  Host: 192.168.0.232:54475

  db: NULL

Command: Binlog Dump

  Time: 1590

  State: Has sent all binlog to slave; waiting for binlog to be updated

  Info: NULL

*************************** 2. row ***************************

&nb

MYSQL 主主循环同步,该如何处理

相关文章:

你感兴趣的文章:

标签云: