在网上查了很多的主从复制的配置,发现坑也挺多的,现在记录一下,少踩坑

mysql 版本 :5.7.22

主数据库:192.168.1.1、192.168.1.3
从数据库:192.168.1.2

注意事项
确保主数据库的mysql能够给外网访问,也就是使用Navicat等软件能够连接的上才行。如果使用宝塔就要到端口那里放行3306端口

主数据库配置:

1. 创建一个用户

    CREATE USER 'username'@'%' IDENTIFIED BY 'password'; 
然后给这个用户权限
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'username'@'%';
FLUSH PRIVILEGES; // 刷新权限

用户名后面跟着的%是允许所有的ip连接

2. 修改mysql的配置文件,my.cnf(window系统时my.ini)
server-id=1
binlog-do-db=czc #这个表示只记录这个数据库的操作进binlog,其实可以省略的

 

完成后输入命令show master status查看一下是否成功
微信截图_20190111144432.png

从数据库配置:

如果mysql的版本大于5.5

打开mysql.in添加下面值

server-id=2 # 跟主库不一致就行
replicate-do-db=czc  #要同步的mstest数据库,要同步多个数据库,不同源也是一样就多加几个replicate-db-db=数据库名
#多源通道需要配置这个
master-info-repository=TABLE
relay-log-info-repository=TABLE
#不复制的库
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys
# 要复制的库
replicate-do-db=db1
replicate-do-db=db3
# 跳过的错误
slave-skip-errors = 1062,1053,1146,1213,1264,1205,1396

slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=2 #开启两个线程

采用命令实现多源复制

CHANGE MASTER TO 
master_host='192.168.1.1',
master_user='test_local',
master_password='password',
master_port=3306,
master_connect_retry=60,
MASTER_LOG_FILE='mysql-bin.000133', 
MASTER_LOG_POS=123
FOR CHANNEL 'test_local';

这样就配置好其中一个主库源的通道了


CHANGE MASTER TO 
master_host='192.168.1.3',
master_user='test_local3',
master_password='password',
master_port=3306,
master_connect_retry=60,
MASTER_LOG_FILE='mysql-bin.000133', 
MASTER_LOG_POS=123
FOR CHANNEL 'test_local3';

这个是第二个通道源的

这里的参数都是对照主数据库的信息填写的

slave start;
show slave status\G;

看到会有两个通道的数据,其中这两个数据都显示yes表示成功了

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 

看这几项是否出现,出现表示成功了。可自行在主数据库里面添加修改数据测试

有疑问欢迎留言

个人博客

By cc

发表回复

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