mysql 多主一从_mysql多源复制,多主一从复制

阿里云ECS,公网IP 121.40.110.2

使用docker安装mysql8,创建三个容器:

实例A:A数据库 A表

实例B:B数据库 B表

实例C:C数据库C表

两种情形:

第一种

A库和B库同步到实例C;

第二种

A库A表和B库B表同步到C库

一、使用docker创建mysql8容器

1、安装docker

yum install docker -y

systemctl start docker

systemctl enable docker

2、拉取mysql镜像

docker pull mysql

docker images

939fb5fda2c791a4c34626baa882764b.png

3、启动三个mysql容器mysql8-1、mysql8-2、mysql8-3

docker run --name mysql8-1 -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

docker run--name mysql8-2 -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

docker run--name mysql8-3 -p 3312:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

4、进入mysql8-1容器(先不要建自己的datingcenter等后面测试的库)

docker exec -it mysql8-1 /bin/bash

连接数据库,查看数据库版本

765ae5a0ab8864dd01b2332592264009.png

5、设置数据库远程连接

设置远程登录数据库的root账户

mysql8和mysql5的版本不一样,具体操作

GRANT ALL ON *.* TO 'root'@'%';

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';

FLUSH PRIVILEGES;

6、创建用户slave用于从库同步复制,授予复制、同步访问

mysql8和mysql5的版本不一样,具体操作

mysql> use mysql;

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

mysql>ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

mysql> GRANT replication slave ON *.* TO 'slave'@'%';

mysql>FLUSH PRIVILEGES;

其他两个容器同样操作

容器安装编辑器vim

https://www.cnblogs.com/xiaoyou2018/p/10912117.html

二、配置数据库多源一从

和mysql一主一从复制相比,多源复制加入了一个叫做Channel的概念, 每一个Channel都是一个独立的Slave,都有一个IO_THREAD和SQL_THREAD。原理和普通复制一样。我们只需要对每一个Master执行Change Master 语句,只需要在每个语句最后使用For Channel来进行区分。多源复制和正常主从其他的配置都一样,基本上主库开下binlog、server-id不一样就可以了,只有下列额外限制:

master-info-repository必须为TABLE

relay-log-info-repository必须为TABLE

以FOR CHANNEL 'CHANNEL_NAME'区分不同的master。

第一种情形:

主库同步到从库的情况如下配置:

主库mysql8-1:IP=121.40.110.2; PORT=3310; server-id=1; database=datingcenter; table=aa、dd

主库mysql8-2:IP=121.40.110.2; PORT=3311; server-id=2; database=usercenter ;table=cc、bb

从库mysql8-3:IP=121.40.110.2; PORT=3312; server-id=3; database=datingcenter、usercenter、matchcenter ;table=aa、dd、cc、bb

配置约束

主从库必须保证网络畅通可访问

主库必须开启binlog日志

主从库的server-id必须不同

【主库mysql8-1】操作及配置

配置my.cnf(/etc/mysql/my.cnf)

添加如下的内容

client]

port= 3306default-character-set =utf8mb4

[mysql]

port= 3306default-character-set =utf8mb4

[mysqld]

##########################

# summary

##########################

#bind-address = 0.0.0.0#port= 3306#datadir=/datavol/mysql/data #数据存储目录

##########################

# log bin

##########################

server-id = 1#必须唯一

log_bin= mysql-bin #开启及设置二进制日志文件名称

binlog_format=MIXED

sync_binlog= 1expire_logs_days=7 #二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。

#binlog_cache_size=128m

#max_binlog_cache_size=512m

#max_binlog_size=256M

#要同步的数据库

binlog-do-db =datingcenter

#不需要同步的数据库

binlog-ignore-db =mysql

binlog_ignore_db=information_schema

binlog_ignore_db=performance_schema

binlog_ignore_db=sys

########################## # character set ##########################

character-set-server =utf8mb4

collation-server = utf8mb4_unicode_ci

log_bin是否开启

mysql> show variables like 'log_bin&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值