MySQL Master/Slave Master/Master 机制
Windows MySQL5.5 实现 主从数据同步。
现有两台mysql服务器IP分别是:
192.168.0.2
192.168.0.3
先把0.2这台服务器当做Master,0.3服务器当做Slave
修改0.2服务器上的my.ini 文件,在mysqld下面加上如下配置:
#服务器 ID 号
server-id=2
#启用二进制文件 log-bin=mysql-bin # 这里有3种格式
# binlog_format=statement 将主库输入的SQL语句,直接写入二进制文件中
# binlog_format=row 将主库修改的行写入二进制文件中
# binlog_format=mixed 以上二种的混合模式
binlog_format=mixed #日志文件需要记录的库#需要同步的数据库
binlog-do-db=test #不需要的库
binlog-ignore-db=mysql
replicate-do-db=test
#不同步的数据库
replicate-ignore-db=mysql
保存然后重启。
进入mysql>
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | test | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
File是二进制数据文件,Position 是二进制文件当前位置。
服务器0.3配置也相同。
在0.3服务器上,进入mysql>
mysql> change master to master_host='192.168.0.2,master_user='repl',master_password='123456',master_connect_retry=60,master_log_file='mysql-bin.000001',master_log_pos=0;
master_log_file 是Master服务器的File ,master_log_pos 是要从什么位置开始同步,不能大于Master服务器上的Position值。
然后输入
mysql> slave start;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G;
找到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两项都yes才启动完成。
现在可以测试 0.2服务器上修改数据,然后看看0.3服务器上是不是同步了。
下面配置0.2服务器为Slave 步骤相同。
如果有一台服务器宕机了,那么那台服务器重启后要停掉Slave,然后在重启Slave。