ubuntu 16.04配置MySQL主从同步

准备工作

1.主从数据库版本最好一致

2.主从数据库内数据保持一致

主数据库:121.199.27.227 /ubuntu 16.04 MySQL 5.7.21 (阿里云

从数据库:182.254.149.39 /ubuntu 16.04 MySQL 5.7.21 (腾讯云

防火墙配置

配置主服务器只允许特定IP访问数据库的端口,避免不必要的攻击。

主库防火墙配置

从库防火墙配置

主数据库master配置

1.修改mysql配置

在[mysqld]部分进行如下修改:

2.修改需要同步的表的引擎为INNODB,只有INNODB支持主从,MyISAM不支持

3.重启mysql,创建用于同步的用户账号

创建用户并授权:用户:repl 密码:slavepass

4.查看master状态,记录二进制文件名(mysql-bin.000001)和位置(333802):

5.主库备份,为从库的第一次数据同步准备数据

使用如下脚本产生数据库备份文件

执行脚本,确保最后输出备份成功

从服务器slave配置

1.修改mysql配置

修改server-id,每个数据库的server-id要求是唯一的,不能相互冲突

2.首次还原数据库:

还原完成后,把数据库设置成只读模式,如果从库可写会出现冲突导致同步失败

添加如下语句:

3.重启mysql,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

4.启动slave同步进程:

5.查看slave状态:

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就可以进行一些验证了,比如在主master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可以完成主从复制功能的验证了。

还可以用到的其他相关参数:

master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:

如之前查看master状态时就可以看到只记录了test库,忽略了manual和mysql库。

注意,偶尔在系统升级的时候,从库可能会丢失同步状态配置。这时候,我们需要重新同步,此时我们从从设备/var/lib/mysql/master.info中找到被中断的同步点。

里面的内容一般如下:

注意mysql-bin.000582下面的4765083就是同步位置,在恢复的时候,就是这两个关键数据。

参考链接


发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注