mysql5.7 双向主从_docker mysql5.7主从复制搭建(双主双从)

news/2024/7/1 4:44:33

1.1 简单说明

这里用了两台服务器,分别是161,和163,有条件可以用四台

161服务器 :

1主1备(mysql-5.7-master-161  mysql-5.7-slave-161)

端口:3339 和3340

163服务器 :

1主1备(mysql-5.7-master-163  mysql-5.7-slave-163)

端口:3339 和3340

docker镜像

mysql:5.7

1.2 这分别构建容器

拉取镜像:

docker pull mysql:5.7

分别创建容器:

(可以挂载配置文件,这里没有挂载)

161服务器:

docker run -itd --name=mysql-5.7-master-161 -p 3339:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7docker run-itd --name=mysql-5.7-slave-161 -p 3340:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

163服务器.

docker run -itd --name=mysql-5.7-master-163 -p 3339:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

docker run -itd --name=mysql-5.7-slave-163 -p 3340:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

分别进入容器修改配置文件:(没有挂载文件的需要vim命令修改配置)

apt-getupdate

apt-get install vim

分别修改配置文件:

vim /etc/mysql/my.cnf

4份配置文件添加信息如下:(可相应去补充其他的)

161-master======

[mysqld]

server-id=1

log-bin=mysql-bin

skip-name-resolve

log-slave-updates

lower_case_table_names=1

interactive_timeout=7200

wait_timeout=86400

max_connections=4000

back_log=100

expire_logs_days=3

max_binlog_size=100M

character_set_server=utf8

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

161-slave======

[mysqld]

server-id=2

log-bin=mysql-slave-bin

relay_log=edu-mysql-relay-bin

skip-name-resolve

log-slave-updates=1

lower_case_table_names=1

interactive_timeout=7200

wait_timeout=86400

max_connections=4000

back_log=100

expire_logs_days=3

max_binlog_size=100M

character_set_server=utf8

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

163-master======

[mysqld]

server-id=3

log-bin=mysql-bin

skip-name-resolve

log-slave-updates

lower_case_table_names=1

interactive_timeout=7200

wait_timeout=86400

max_connections=4000

back_log=100

expire_logs_days=3

max_binlog_size=100M

character_set_server=utf8

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

163-slave======

[mysqld]

server-id=4

log-bin=mysql-slave-bin

relay_log=edu-mysql-relay-bin

skip-name-resolve

log-slave-updates=1

lower_case_table_names=1

interactive_timeout=7200

wait_timeout=86400

max_connections=4000

back_log=100

expire_logs_days=3

max_binlog_size=100M

character_set_server=utf8

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

1.3 配置文件字段说明

Server-id

ID值唯一的标识了复制群集中的主从服务器,因此它们必须各不相同。Master_id必须为1到232-1之间的一个正整数值,slave_id值必须为2到232-1之间的一个正整数值。

Log-bin

表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提。

Binlog-do-db

表示需要记录二进制日志的数据库。如果有多个数据可以用逗号分隔,或者使用多个binlog-do-dg选项。

Binglog-ingore-db

表示不需要记录二进制日志的数据库,如果有多个数据库可用逗号分隔,或者使用多binglog-ignore-db选项。

Replicate-do-db

表示需要同步的数据库,如果有多个数据可用逗号分隔,或者使用多个replicate-do-db选项。

Replicate-ignore-db

表示不需要同步的数据库,如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项。

Master-connect-retry

master-connect-retry=n表示从服务器与主服务器的连接没有成功,则等待n秒(s)后再进行管理方式(默认设置是60s)。如果从服务器存在mater.info文件,它将忽略些选项。

Log-slave-updates

配置从库上的更新操作是否写入二进制文件,如果这台从库,还要做其他从库的主库,那么就需要打这个参数,以便从库的从库能够进行日志同步。

Slave-skip-errors

在复制过程,由于各种原因导致binglo中的sql出错,默认情况下,从库会停止复制,要用户介入。可以设置slave-skip-errors来定义错误号,如果复制过程中遇到的错误是定义的错误号,便可以路过。如果从库是用来做备份,设置这个参数会存在数据不一致,不要使用。如果是分担主库的查询压力,可以考虑。

1.4 配置主从、主主

创建slave角色,用于数据同步。

分别进入在161和163服务器的主库容器中:

docker exec -it mysql-5.7-master-161 /bin/bash

mysql -uroot -p123456

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

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

flush privileges;

docker exec -it mysql-5.7-master-163 /bin/bash

mysql -uroot -p123456

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

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

flush privileges;

配置主从连接。

在宿主机161、163分别执行命令

docker inspect mysql-5.7-master-161

docker inspect mysql-5.7-master-163

161的是172.17.0.2 主从之间基于此ip,可能docker重启ip会发生改变,也可以用宿主机host的ip和端口

163的是172.17.0.3

下面分别在161、163配置主从连接

1) 161-master:

show master status;

bfad4cd76a2463b00e8dd256e1735488.png

关注file和position的值

2) 161-slave:

show slave status \G;

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000004', master_log_pos=1490;

start slave;

show slave status \G;

change操作前要先stop slave;

配置主主连接

分别去对应show master status;查看对应的动态参数。

#主机2复制主机1命令

change master to master_host='xxx.xx.x.161',

master_port=3339,

master_user='slave',

master_password='123456',

master_log_file='mysql-bin.000003',

master_log_pos=1306,

master_connect_retry=60;

#主机1复制主机2命令

change master to master_host='xxx.xx.x.163',

master_port=3339,

master_user='slave',

master_password='123456',

master_log_file='mysql-bin.000005',

master_log_pos=769,

master_connect_retry=60;

关联主从,主主之间主要关注:

master_host,master_log_file,master_log_pos字段

验证

662e41234552a8a0951ad135856fd433.png


http://www.niftyadmin.cn/n/1999909.html

相关文章

mysql4迁移5_(mysql)从digikam 4. *迁移到5. *时的数据库迁移难度

由于我的旧数据库中存在一些不一致,我遇到了同样的问题.修复后(主要是删除一些死引用)进行升级.我似乎还有另一个问题,但可能与db无关.这将显示您的问题(除了根标签外都应为空):select * from Images where album not in (select Albums.id from Albums);select id,…

35 夷陵之战

35 夷陵之战 刘备占据荆州,却最终被孙权夺了回去,还搭上了左膀右臂——关羽的一条性命。这对于正打算大展鸿图的刘备,无疑是沉重打击。不肯善罢甘休的刘备随后发动了意在夺回荆州的夷陵之战,那么刘备究竟是如何指挥这场战争的呢&…

三维视觉国际会议首度在中国举办

3DV——International Conference on 3 Dimensional Vision(三维视觉国际会议),自2013年成立以来,逐渐成为计算机视觉和图形学的三维研究领域中的重量级会议,每年都有来着世界各地的专家学者到会进行交流。去年&#x…

常用mysql引擎及工作原理_了解MySQL存储引擎工作原理

MySql数据库最大的特色就是其插件式的存储引擎架构,本文主要介绍MySql常用的存储引擎,为开发时选择合适的存储引擎提供参考。1. MySql体系结构#在介绍存储引擎之前先来介绍下MySql的体系结构,以便大家知道存储引擎在MySql整个体系中处于什么位…

postman提取返回值_postman 上一个接口的返回值作为下一个接口的入参

在使用postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为下一个接口的入参,其基本思路是:1、获取上一个接口的返回值2、将返回值设置成环境变量或者全局变量3、设置下一个接口的参数形式列子&#xff1…

36 永安托孤

36 永安托孤  刘备在弥留之际把自己的儿子刘禅托付给诸葛亮,这就是著名的“永安托孤”,后人常把这看作是刘备的忠厚和对诸葛亮的信任。可是也有人认为,这是刘备的狡诈,是为了防止诸葛亮专权、篡权,而给诸葛亮套上的…

centos 软件安装的三种方式

Linux下面安装软件的常见方法: 1.yum 替你下载软件 替你安装 替你解决依赖关系 点外卖 缺少的东西 外卖解决 1).方便 简单2)没有办法深入修改 yum install -y tree 2.rpm 自己下载软件包 自己安装 自己解决依赖 半成品 缺少的东西 自己解决1)安装 解决依赖复杂 rpm -ivh treex…

python装饰器应用论文_python 装饰器之应用示例

import timeimport hashlibimport pickleimport threading#装饰函数缓存应用cache {}def is_obsolete(entry,duration):return time.time() - entry[time]>durationdef compute_key(function,args,kw):key pickle.dumps((function.__name__,args,kw))return hashlib.sha1(k…