美文网首页
centos7搭建mysql双主复制环境

centos7搭建mysql双主复制环境

作者: Seaofdesire | 来源:发表于2018-06-29 09:26 被阅读0次

参考
https://www.cnblogs.com/gl-developer/p/6170423.html
https://www.cnblogs.com/ivictor/p/5522383.html
https://www.cnblogs.com/andy6/p/6979590.html

环境

  • centos 7.4
  • mysql 8
角色 ip 端口 版本
master1 192.168.1.1 3306 msyql8
master2 192.168.1.2 3306 msyql8

配置

master1 配置

  1. /etc/my.cnf文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 开启二进制归档日志
log-bin=mysql-bin
# 定义服务器id,必须唯一
server-id=1
# 开启从库日志更新
log_slave_updates=1

# 需要同步的数据库名,如果有多个,则重复此参数,每个数据库一行
binlog-do-db=test

# 不同步的 mysql 数据库,同上
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
  1. 创建同步账号
CREATE USER 'repl'@'192.168.1.2' IDENTIFIED BY 'mysql';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.2';
  1. 重启服务

master2配置

  1. /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 开启二进制归档日志
log-bin=mysql-bin
# 定义服务器id,必须唯一
server-id=2
# 开启从库日志更新
log_slave_updates=1
read_only=1

# 需要同步的数据库名,如果有多个,则重复此参数,每个数据库一行
binlog-do-db=test

# 不同步的 mysql 数据库,同上
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
  1. 创建同步账号
CREATE USER 'repl'@'192.168.1.1' IDENTIFIED BY 'mysql';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.1';
  1. 重启服务

开启复制

  1. 分别在master1、master2中执行
-- 查看master状态,记录二进制日志文件编号和位置
SHOW MASTER STATUS;
-- 用于停止io线程
STOP SLAVE IO_THREAD FOR CHANNEL '';

-- 设置作为从库到主库读取的信息
-- 在master1上执行的信息来自于master2上的show master status信息,同理master2也一样
CHANGE MASTER TO
  MASTER_HOST='192.168.1.2', -- master2的 ip
  MASTER_USER='repl',
  MASTER_PASSWORD='mysql', 
  MASTER_LOG_FILE='mysql-bin.000003', -- master2的日志文件
  MASTER_LOG_POS=155; -- master2 的日志位置

-- 查看系统sql_mode
select @@sql_mode;
-- 开启主从复制
start slave;
-- 查看从库状态
show slave status;
-- 停止主从复制;
STOP SLAVE;

验证是否成功

  • 在start slave后,执行show slave status查看下面是否为yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

根据测试,在start slave后,slave_sql_running状态很快就为yes,而slave_io_running由于网络连接速度的问题,需要等待一段时间。如果一直为conncecting或no,就要检查主从服务器之间是否能连通,可以相互ping一下对方ip,或通过mysql控制台相互连接下对方的数据库

相关文章

网友评论

      本文标题:centos7搭建mysql双主复制环境

      本文链接:https://www.haomeiwen.com/subject/hyhgyftx.html