- 准备:安装同一版本的两个mysql
- 修改主服务器配置文件master
#vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
- 修改从服务器配置文件slave
#vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
- 启动两个mysql服务
#重启mysql service mysql restart
- 在主服务器上授权从服务器
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端 IP代替,如192.168.145.226,加强安全。
- 在主服务器的mysql上,查看master的状态,此操作在mysql重新启后会生改变(请注意)。
mysql>show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 308 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
- 配置从服务器slave
mysql>change master to master_host='192.168.145.222',master_user='tb',master_password='q123456', master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,“308”无单引号。 Mysql>start slave; //启动从服务器复制功能
- 检查从服务器复制功能的状态
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.2.222 //主服务器地址 Master_User: myrync //授权帐户名,尽量避免使用root Master_Port: 3306 //数据库端口,部分版本没有此行 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于>=Exec_Master_Log_Pos Relay_Log_File: ddte-relay-bin.000003 Relay_Log_Pos: 251 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes //此状态必须YES Slave_SQL_Running: Yes //此状态必须YES
- 测试,验证主从复制是否能功能。在主库中插入数据,在从库进行查询。如果显示表明正常。
注意:
在mysl/data下面有一个auto.cnf文件,在虚拟机clone的时候此文件中的server-uuid不会改变,需要手动修改一下(随便改变一下就可以,保证主从两个配置文件中的uuid不同及可)。如果没有修改在mysql的从服务中查看状态的时候,会有错误显示。如果是分在两个机器手动安装的mysql,此问题就不会出现。