【创建复制用户】
GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO 'repl_user'@'对方的IP地址' IDENTIFIED BY 'repl_pass';
FLUSH PRIVILEGES;
最好是在主从上都创建一致的用户,这样以后MS也可以切换成MM
【主库/从库my.ini】
server-id=99
replicate_wild_do_table=fish.%
log-bin=D:\MySQL\MySQL_Replication\mysql-bin-fish
log_bin_trust_function_creators=1
log_slave_updates=1
sync_binlog=1
# 包最大为64M
max_allowed_packet=67108864
执行以下命令,并记录下log-bin的File和Position:
SHOW MASTER STATUS;
【从库my.ini】
#slave_skip_errors=1062,1053
relay_log=D:\MySQL\MySQL_Replication\mysql-realy-bin-fish
# 主从切换时,read_only要改为0
read_only=1
slave-net-timeout=60
skip_slave_start=1
# 包最大为64M
slave_max_allowed_packet=67108864
【从库】
执行:
CHANGE MASTER TO MASTER_HOST='Master的IP', MASTER_PORT=Master的MySQL端口, MASTER_USER='同步帐号', MASTER_PASSWORD='同步密码', MASTER_LOG_FILE='Master的log-bin-File', MASTER_LOG_POS=Master的log-bin-Position;
START SLAVE;
其他命令:
SHOW MASTER STATUS;
SHOW SLAVE STATUS;
SHOW SLAVE HOSTS; SHOW BINLOG EVENTs;
SHOW FULL PROCESSLIST;
如果上线后还要再增加Slave,并且主库数据量不大的情况下,可以锁表后dump数据到新的从库执行以上步骤:
FLUSH TABLES WITH READ LOCK;
dump data ...
UNLOCK TABLES;
【查看同步状态】
在slave上控制台执行SHOW SLAVE STATUS\G;显示界面如上图。
1=Master主机当前产生的日志文件;
2=Slave从机已经获取到的Master日志文件;
3=Master主机当前产生数据的节点坐标;
4=Slave从机当前同步到Master日志的节点坐标。
如果1与2对应一致,3与4对应一致则说明当前MySQL主从同步正常;