mysql主主同步设置mysql
主主同步设置是同等的地位,因此如下操做在两台机器上都须要进行并且操做是相同的。sql
服务器数据库
服务器代号 | IP | hostname |
---|---|---|
A | 192.168.70.128 | Debian1 |
B | 192.168.70.130 | Debian2 |
建立同步帐号
分别在两台机器的mysql里面添加用户。若是须要制定特定的ip,只需将“%”替换成对应ip便可。服务器
mysql> grant replication slave on *.* to 'mysql'@'%' identified by "你的密码"; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)添加以后,用该帐号信息,在A上尝试访问B的mysql,同时也在B上尝试访问A的mysql。
修改配置文件
分别中止mysql服务,而后修改两台机器的my.cnf配置文件,开启bin-log功能,配置server-id。
A:ide
vi /etc/mysql/my.cnf [myqld] server-id = 128 log_bin =/your_path/ slave-net-timeout = 60 #默认3600秒,缩短期为了防止双YES的延迟假象 #binlog-do-db=osyunweidb #须要同步的数据库名,若是有多个数据库,可重复此参数,每一个数据库一行 #binlog-ignore-db=mysql #不一样步mysql系统数据库
B:测试
vi /etc/mysql/my.cnf [myqld] server_id = 130 log_bin =/your_path/ slave-net-timeout = 60 #salve-net-timeout默认是3600秒,缩短期是为了防止双YES的假象 #binlog-do-db=osyunweidb #须要同步的数据库名,若是有多个数据库,可重复此参数,每一个数据库一行 #binlog-ignore-db=mysql #不一样步mysql系统数据库
重启mysql服务
分别重启mysql服务code
查看做为master的状态
为了防止在查看状态的时候数据库有数据变动,因此要先加上锁。
A:
mysql> flush tables with read lock; mysql> show master status \G *************************** 1. row *************************** File: mysql-bin.000003 Position: 107 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.00 sec)
server
B:ip
mysql> flush tables with read lock; mysql> show master status \G *************************** 1. row *************************** File: mysql-bin.000002 Position: 433 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.00 sec)
A(192.168.70.128): change master to master_host='192.168.70.130', master_port=3306, master_user='mysql', master_password='lwj', master_log_file='mysql-bin.000002', master_log_pos=433; B(192.168.70.130): change master to master_host='192.168.70.128', master_port=3306, master_user='mysql', master_password='lwj', master_log_file='mysql-bin.000003', master_log_pos=107;
mysql>unlock tables; mysql>start slave;
show slave status \G
Slave_IO_Running: Yes Slave_SQL_Running: Yes