主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。
环境配置:
操作系统:CentOS-7 64位
基于VM虚拟机安装
网络模式:桥接
master数据库IP:172.16.110.37
slave数据库IP:172.16.110.39
mysql版本:5.7.20
master:主服务器 作为写数据库
slave:从服务器 作为读数据库
操作步骤:
前置操作:安装mysql等相关流程 详见mysql安装
克隆虚拟机中的操作系统
1、 向master服务器添加新用户test
添加了test用户密码为password
赋予权限:REPLICATION SLAVE
CREATE USER 'test'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'test'@'%';
2、 修改master配置
linux下mysql配置文件在 /etc/my.cnf
如果找不到可以使用查找一下
find / -name my.cnf
修改内容如下:
server-id=37 //该id可以随便写,我使用的ip末段为id
binlog-do-db=world //仅同步该数据库
log-bin=mysql-bin //打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径,如:/home/www/mysql_bin_log/mysql-bin
replicate-ignore-db=test //忽略同步的数据库这个我没设置,因为我只选择了同步一个库
重启mysql服务:service mysqld restart
执行show mastr status 记住 file名称和position值
mysql-bin.000002 154
3、切到slave服务器
配置文件添加如下内容
server-id=39
binlog-do-db = mydb //指定mysql的binlog日志记录哪个db
log-bin=mysql-bin
执行
CHANGE MASTER TO
MASTER_HOST='172.16.110.37',
MASTER_USER='test',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=154;
执行:START slave;坑看下面
查看slave状态:show slave status\G
如果你遇到slave_io_running为no
那么不是你的网络不通
就是权限没设置好,
我装了三次,都是因为权限和网络引起的
这里有个坑,因为是克隆的 uuid此时是相同的可能引起复制开启失败
我们删掉这个auto.cnf 文件,重启mysql即可生成新的
[root@linux bin]# cat /var/lib/mysql/auto.cnf
[auto]
server-uuid=df715735-c9aa-11e7-a58b-000c29a4990d
auto具体位置如不一致可以查找一下
没啥大问题了