¶实验环境:
virtualbox + ubuntu 16.04.3 + mysql 5.7
1 | sudo apt-get install mysql-server mysql-client |
然后导出虚拟机,再导入虚拟机,至此就有2台虚拟服务器了。
mysql -V
查看 mysql版本,最好采用相同版本的mysql。
master 服务器ip: 192.168.1.168
slave 服务器ip: 192.168.1.113
同步的数据库: zhucong_test
同步的用户名和密码都是: master_test
¶主(master)服务器配置:
- 配置文件修改
主mysql,/etc/mysql/my.cnf
1 | [mysqld] |
重启主服务器的mysql.
1 | show master status; |
修改 bind-address
,/etc/mysql/mysql.conf.d/mysqld.cnf
,找到 bind-address = 127.0.0.1
并在该行的前面加#
注释掉,变成#bind-address = 127.0.0.1
,重启主服务器的mysql。这一步是为了让从服务器可以连接到主服务器的mysql。
- 主服务器添加一个用于主从的mysql用户,并赋予
REPLICATION SLAVE
权限。
1 | mysql > create user 'master_test'@'%' identified by 'master_test'; |
¶配置从(slave)服务器
创建要同步数据库
1 | create database zhucong_test charset utf8 collate utf8_general_ci; |
把master数据库的数据dump一份导入到slave(非常重要)
1 | mysqldump -h 192.168.1.168 -uroot -p zhucong_test > source.sql #导出主(master)服务器的zhucong_test db的数据到从(slave)服务器上 |
修改从(slave)服务器mysql的配置文件,/etc/mysql/my.cnf
1 | [mysqld] |
重启从服务器的mysql,使用
CHANGE MASTER TO
语句指定主服务器信息,不要在配置文件中配置。该语言可以替代在配置文件中提供主服务器的信息,另外,不需要停止服务器,便可以为从服务器指定不同的主服务器。
1 | CHANGE MASTER TO MASTER_HOST='192.168.1.168',MASTER_USER='master_test',MASTER_PASSWORD='master_test',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0; |
此处指定 MASTER_LOG_POS的值为0,因为要从日志的开始位置开始读。
1 | start slave; # 开始复制 |
当从服务器的mysql显示的状态:
1 | Slave_IO_Running: Yes |
说明配置成功了
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解决方法: 停止从服务器的mysql,并将auto.cnf
文件删除。如:
1 | sudo service mysql stop |
参考书籍:《PHP核心技术与最佳实践》
¶Refences
- MHA集群报错:The slave I/O thread stops because master and slave have equal MySQL server UUIDs 了解到mysql 5.7配置文件的地址
- "Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs 从服务器中 相同 server uuids的解决方法
- mysql 主从配置,slave master 设置
- mysql主从简单配置
- MySQL.ERROR 1133 (42000): Can’t find any matching row in the user table
- MySQL创建用户和授权