今天搭建了一套mysql主从数据库,但是搭建过程中遇到一个问题在这里简单介绍一下:
被库启动后报错如下:
错误1:
2016-12-03T15:09:15.347102Z 6 [ERROR] Slave I/O for channel '': error connecting to master 'replay@192.168.57.130:3306' - retry-time: 60 retries: 9, Error_code: 2003
答疑: MYSQL默认绑定了127.0.0.1,其他机器无法账号密码登录,所以在配置前需要将my.cnf中的bing_address注释掉
错误2:
2016-12-03T15:20:24.449985Z 2 [ERROR] Slave I/O for channel '': 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. Error_code: 1593
由于我是拷贝了vmware的ubuntu虚拟机,所以mysql的配置文件auto.cnf在两个虚拟机中是一样的。我看了一下mysql的文档,解释如下:
mysql在启动的时候会去检查auto.cnf文件,如果没有那么根据server-id创建一个,如果有就跳过。auto.cnf文件自动生成,请无手动更改。
所以解决上面问题的方法也很简单,删除auto.cnf即可(好习惯是cp auto.cnf auto.cnf.2016120212032342,然后再删除)
加入机器M为主机,机器N为备机,那么搭建主从的步骤如下:
1. 创建账户主从复制账户
在N机器:执行sql
CREATE REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'%' IDENTIFIED BY 'pass4word'
2. 更改配置
在M机器:更改my.cnf配置
log_bin=mysql-bin
server_id=1
在N机器:更改my.cnf配置
log_bin=mysql-bin
server_id=2
lrelay_log=/path/to/save/relay/log
log_slave_updates=1
read_only=1
3. 在N机器上配置master:执行sql语句
CHANGE MASTER TO MASTER_HOST=‘M的IP’, MASTER_USER='repl', MASTER_PASSWORD='pass4word', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0;
4. 将N备机启动:执行sql语句
START SLAVE
至此配置完成,备机加入成功,确认方法为,在M中更改数据,在N中能同步更改