docker mysql 主主同步
转发自:https://blog.csdn.net/money9sun/article/details/85099134
第一步:安装docker https://www.cnblogs.com/cyq632694540/p/10596276.html
第二步:检查mysql的镜像,并下载
# docker search mysql:5.7
# docker pull mysql:5.7
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mysql 5.7 ae6b78bedf88 4 weeks ago 372 MB
第三步:开启两个mysql的容器
建立自定义的网络,用于两个容易互相通信
# docker network create --subnet=172.18.0.0/16 mynetwork
开启master01
# docker run -p 3308:3306 -p 22002:22 --name master01 -e MYSQL_ROOT_PASSWORD=123456 --net mynetwork --ip 172.18.0.2 -d mysql:5.7
开启master02
# docker run -p 3309:3306 -p 22003:22 --name master02 -e MYSQL_ROOT_PASSWORD=123456 --net mynetwork --ip 172.18.0.3 -d mysql:5.7
第三步:安装软件及修改配置
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a2e76f0faae1 mysql:5.7 "docker-entrypoint..." 26 hours ago Up 25 hours 33060/tcp, 0.0.0.0:22004->22/tcp, 0.0.0.0:3309->3306/tcp master02
1b6773fc8c3d mysql:5.7 "docker-entrypoint..." 26 hours ago Up 25 hours 33060/tcp, 0.0.0.0:22003->22/tcp, 0.0.0.0:3308->3306/tcp master01
进入master01容器
# docker exec -it 1b6773fc8c3d /bin/bash
root@1b6773fc8c3d:/# apt-get update
root@1b6773fc8c3d:/# apt-get install vim
root@1b6773fc8c3d:/# cd /etc/mysql/mysql.conf.d
root@1b6773fc8c3d:/# ls
mysqld.cnf
修改配置文件
root@1b6773fc8c3d:/# vi mysqld.cnf
添加的内容如下:
server-id=31
auto-increment-increment=2
auto-increment-offset=1
log-bin=/var/log/mysql/mysql-bin.log
binlog_format=mixed
relay-log=relay-bin
log-slave-updates
保存;
service mysql restart 这时候容器会退出,再启动即可,命令 docker restart 容器id即可
同样的方法,进入master02容器,配置文件修改为
server-id=32
auto-increment-increment=2
auto-increment-offset=2 ### 这里要注意 offset是偏移量,保证不同的mysql主机生成的主键是不同的,避免主键冲突
log-bin=/var/log/mysql/mysql-bin.log
binlog_format=mixed
relay-log=relay-bin
log-slave-updates
保存并重启mysql服务。
第四步:创建同步账户,开启slave
1、进入master01容器
# mysql -u root -p
2、创建同步账户
mysql>grant replication slave,replication client on *.* to 'slave'@'%' identified by '123456';
mysql> flush privileges;
mysql> flush tables with read lock;
3、查看binlog的状态
mysql>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 433 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
4、进入master02容器
# mysql -u root -p
5、创建同步账户
mysql>grant replication slave,replication client on *.* to 'slave'@'%' identified by '123456';
mysql> flush privileges;
mysql> CHANGE MASTER TO MASTER_HOST='172.18.0.2',MASTER_PORT=3308,MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=433;
// PS:这边的用户信息,pos,和主服务器IP要填写正确;连接错误的话,请查看 show slave status \G 里面的 【 Last_IO_Error 】和 【Last_SQL_Error】 错误信息,进行错误排查
//相关操作
stop slave;
start slave;
show slave status \G;
show master status;
mysql> start slave;
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.18.0.2
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 3184
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 1346
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
看到 Slave_IO_Running: Yes Slave_SQL_Running: Yes 表示成功
7、查看master02 binlog的状态
mysql>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 521 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
8、回到master01 并进入mysql控制台,创建同步账户
mysql> CHANGE MASTER TO MASTER_HOST='172.18.0.3',MASTER_PORT=3309,MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=521;
mysql> start slave;
mysql> show slave status \G
docker mysql 主主同步的更多相关文章
- Docker Mysql数据库主从同步配置方法
一.背景 最近在做内部平台架构上的部署调整,顺便玩了一下数据库的主从同步,特此记录一下操作- 二.具体操作 1.先建立数据存放目录(-/test/mysql_test/) --mysql --mast ...
- Docker Mysql数据库双主同步配置方法
一.背景 可先查看第一篇<Docker Mysql数据库主从同步配置方法>介绍 二.具体操作 1.创建目录(~/test/mysql_test1): --mysql --mone --da ...
- Docker Mysql主主同步配置搭建Demo
主主同步配置和主从配置很相似,仅需稍做修改就可以了,对主从配置有疑问可以查看 上一篇文章. 进行Docker操作前,先建立目录,我的路径是d:/docker/mysql,目录结构如下: --mysql ...
- Docker mysql主主互备和高可用
一.测试环境 1.1 结构图 1.2 版本 操作系统:CentOS 7.3 MySQL版本:5.6.35 Docker版本:18.06.1-ce 使用root用户操作 IP地址说明 IP地址 用途 备 ...
- mycat 1.6.6.1安装以及配置docker 安装mysql 5.7.24 双主多从读写分离主主切换
mycat和mysql的高可用参考如下两个图 简介:应用程序仅需要连接HAproxy或者mycat,后端服务器的读写分离由mycat进行控制,后端服务器数据的同步由MySQL主从同步进行控制. 服务器 ...
- MySql Docker 主主配置
MySql 主主 准备2台Linux服务器,并且在两台服务器上,同时安装docker,国内的同学可以使用aliyun的镜像安装. curl -fsSL https://get.docker.com - ...
- MacOS使用Docker创建MySQL主主数据库
主从同步配置可以参考上一篇MacOS使用Docker创建MySQL主从数据库 一.创建MySQL数据库容器配置文件对应目录 我们在当前用户下创建一组目录,用来存放MySQL容器配置文件,(Linux下 ...
- 4.MySQL 主主(m-m) 同步生产库标准同步操作实施流程
通过MySQL参数配置使用主主前提: 1.表的主键自增. ################################################################# #m1-m ...
- MySQL数据的主从复制、半同步复制和主主复制详解
一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...
- LVS+MYCAT+读写分离+MYSQL主备同步部署手册
LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1 配置MYSQL主备同步…. 2 1.1 测试环境… 2 1.2 配置主数据库… 2 1.2.1 ...
随机推荐
- Redis深入学习笔记(三)RDB及AOF流程
RDB是Redis持久化数据的一种方式,是执行时间点的Redis内存快照,redis数据还原时加载rdb文件,Redis的主从数据同步也是基于RDB实现的. RDB流程: 1)执行bgsave命令,R ...
- PADS导入DXF板框,不能将开放的2D线转换成闭合的板框错误
刚开始学会用PADS,学习的时候都是在PADS里手绘一个板框的.然后实际项目中,都是需要导入结构DXF板框文件,第一次导入就发现了问题. 第一次导入DXF后,需要将DXF转换为板框,但提示 “不能将开 ...
- (转)K-近邻算法(KNN)
K-近邻算法(KNN)概述 KNN是通过测量不同特征值之间的距离进行分类.它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别 ...
- 狗鱼IT教程:推介最强最全的Spring系列教程
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建. 简单来说,Spring是一个分层的JavaSE/EEfull-stack( ...
- 使用 Angular Console 提升开发体验
Angular Console Angular Console 是一个用于扩展 Angular CLI 的强大工具,通过提供一个图形界面的形式,方便开发者使用 CLI 的功能. Angular CLI ...
- eclipse使用报错集锦
问题1.Eclipse启动时总是提示“subversive connector discovery”解决方案 解答1:在eclipse_workSpace(工作空间下)\.metadata\.plug ...
- Verilog笔记——Verilog数字系统设计(第二版)夏宇闻
本片记录Verilog学习笔记,主要是和以往用的C语言的不同之处,以例子.代码的形式记录.学习以<Verilog数字系统设计>(第二版)为参考资料,援助作者夏宇闻. 1. C语言和Veri ...
- android checkbox自定义(文字位置、格式等)
第一种:在原生中只调整显示位置等: <CheckBox android:id="@+id/checkBox8" android:layout_width="wrap ...
- 云栖大会day2总结 上午
第二天上午主要是参与了开发者专场 上 09:00-09:40 线上线下融合时代的工程师成长 李佩 饿了么高级算法总监 09:40-10:20 如何统一阿里巴巴代码规范:探寻工程师文化之路 玄坛 阿里巴 ...
- java学习--修饰符
Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 访问控制修饰符 访问控制修饰符用来修饰类和类内部的成员变量和成员方法,来确定其访问权限 类的访问控制修饰符只有两种 defa ...