第一步进入主服务器配置
目的是给从服务器分配账号与访问权限。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101' IDENTIFIED BY 'mysql';
192.168.1.101是从服务器的ip地址,repl,mysql分别是同步账号密码别忘了
mysql> SHOW MASTER STATUS;
Empty set (0.00 sec)
查看主服务器的状态,empty表示未开启二进制日志,下一步去开启。
修改 /etc/my.cnf文件
在[mysqld]后面加入
server-id=9
log-bin=master-bin
log-bin-index=master-bin.index
serveri-id 自己定,一般是服务器ip最后一个数字,不要重复。
重启mysql service:
/etc/init.d/mysqld restart
mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 3996131 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记下File Position,后面要用到。
开始配置Slave从服务器
同理先修改/etc/my.cnf文件,在[mysqld]在新增
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
重启mysql service:
/etc/init.d/mysqld restart
配置连接master
mysql> change master to master_host='192.168.0.104', //Master 服务器Ip
master_port=3306,
master_user='repl',
master_password='mysql',
master_log_file='master-bin.000001',//Master服务器产生的日志
master_log_pos=0;
使用时记得把注释删除
启动Slave
mysql> start slave;
主从同步检查
mysql> show slave status\G
其中SlaveIORunning 与 SlaveSQLRunning 的值都必须为YES,才表明状态正常。
常见的遇到的问题
- SlaveIORunning一直为no,查看主从服务器3306端口是否可以访问,iptables是否已经设置。
- 同步日志有关与字符类型的报错,查看主从服务器的Mysql版本是否一致。
- 如何控制单独库,单独表的同步?
在/etc/my.cnf中配置
replicate-do-db = dashboard
replicate-ignore-db = mysql
replicate-ignore-table = mysql
replicate-do-table = dashboard
转载请注明:XAMPP中文组官网 » Mysql 实现主从同步