参考地址:http://369369.blog.51cto.com/319630/790921
原来想要简单地实现MySQL的主从复制其实也是很简单的(这里当然不包括服务监控和容错处理啦)
1.要检查主从服务器的MySQL版本,最好版本一致,不然会出现各种问题,特别是,5.5和5.6是不会兼容的
2.修改两个服务器的mysql配置vim /etc/my.cnf
1 | [mysqld] |
分别修改两个服务器配置然后分别重启
3.主服务器建立账户:这个账户与普通账户不一样,它只能用于主从复制中:
1 | GRANT REPLICATION SLAVE ON *.* to 'master'@'%' identified by 'mysql'; |
4.查看服务器状态
1 | show master status; |
需要注意的是,这两个值都得记下来哟
5.将主服务器数据库dump然后导入到从服务器,记下了Position就不用担心dump后新增数据的情况,会自动同步的
6.配置从服务器
1 | change master to master_host='192.168.1.41', master_user='xiaohao', master_password='mysql', master_log_file='mysql-bin.000004', master_log_pos=615261; # 这里就是刚才的Position |
7.启动从服务器
1 | start slave; # 同理,停止用stop slave |
8.查看复制状态
1 | show slave status\G |
必须保证Slave_IO_Running和Slave_SQL_Running都为Yes的时候才正确的
TroubleShooting:
- 出现错误:Slave SQL for channel ‘’: Slave failed to initialize relay log info structure from the repository, Error_code: 1872是因为relay-log有问题,这时候修改从服务器mysql配置,在[mysqld]中加入
relay-log-recovery=1
,这样表示,服务器启动之后,删除所有已有的relay日志,重新接收主库的relay日志