Mysql的实时同步 - 双机互备.
设置方法:
步一 设
A 服务服 (192.168.1.43) 上 用户为 root, root3306, 同步的数据库为test; (root用户需要开启远程)
B 服务服 (192.168.1.23) 上 用户为 root, root3306, 同步的数据库为test; (root用户需要开启远程)
步二 配置 mysql.ini:
A服务器
#Replication master
server-id = 10
log-bin="D:/SOFT_PHP_PACKAGE/mysql/logs/mysql_binary_log" #日志存放路径 创建一个logs即可
binlog-do-db=test #同步的数据库名
# Replication slave
master-host="192.168.1.23" #填写B服务器IP地址
master-user=root #帐号为B服务器帐号
master-password=root3306 #帐号为B服务器数据库密码
master-port=3306
master-connect-retry=60
replicate-do-db=test
B服务器
#Replication master
server-id = 2
log-bin="D:/SOFT_PHP_PACKAGE/mysql/logs/mysql_binary_log"
binlog-do-db=test
# Replication slave
master-host="192.168.1.43" #填写A服务器IP地址
master-user=root #帐号为A服务器帐号
master-password=root3306 #帐号为A服务器数据库密码
master-port=3306
master-connect-retry=60
replicate-do-db=test
注意:两台服务器 server-id 不能相同
查看状态 及调试
1,查看master的状态
SHOW MASTER STATUS;
Position 不应为0
2,查看slave的状态
show slave status;
Slave_IO_Running | Slave_SQL_Running 这两个字段 应为 YES|YES.
show processlist;
会有两条记录与同步有关 state为 Has read all relay log; waiting for the slave I/O thread to update it
和s Waiting for master to send event .
3,错误日志
MySQL安装目录/data/Hostname.err
4,CHANGE MASTER TO
如果A 的 Slave 未启动 ,Slave_IO_Running 为No.
可能会是B的master 的信息有变化,
查看B SHOW MASTER STATUS;
记录下 File,Position 字段. 假设为'mysql_binary_log.000004',98 ;
在A 下执行:(曾经我在这一步没有操作)
Stop Slave;
CHANGE MASTER TO
MASTER_LOG_FILE = 'mysql_binary_log.000004',
MASTER_LOG_POS = 98 ;
Start Slave;