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 ...
随机推荐
- Chrome 58.xxx,iisExpress 创建的SSL网站显示安全正式错误Error:net::ERR_CERT_COMMON_NAME_INVALID
https://www.reddit.com/r/sysadmin/comments/677hep/chrome_58_not_supporting_self_signed_certificates/ ...
- jmeter接口测试-GET请求路径中包含特殊字符或中文导致Response400报错
问题描述:接口测试中异常用例GET请求路径中包含特殊字符或中文,运行jmeter会报错,取样器中只能看到Response400,响应结果为空 解决思路: 对于通过BODY发送的中文内容可以用Jmete ...
- [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK 1.5 and higher 问题--MyEclipse设置JDK版本
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML doc ...
- SQL Server 2008 R2中配置作业失败后邮件发送通知
SQL Server日常维护中难免会遇到作业失败的情况.失败后自然需要知道它失败了,除了例行检查可以发现出错以外,有一个较实时的监控还是很有必要的.比较专业的监控系统比如SCOM虽然可以监控作业执行情 ...
- bootstrap-treeview 如何实现全选父节点下所有子节点及反选
转(https://www.augsky.com/992.html) 选中父节点时,父节点下所有子节点也都全部选中 1,HTML代码 <h2>TreeView Checkable</ ...
- 使用GSON工具实现json和其他数据格式间转换
1 package gson; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.google.gson. ...
- (Python基础)集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 以下代码演示了去重,增删改查,以及关系测试供参考学习 ...
- Linux安装rar
1.下载RAR 官网下载地址:https://www.rarlab.com/download.htm wget下载:wget http://www.rarsoft.com/rar/rarlinux-x ...
- IDL打包发布exe(包含ENVI环境)
IDL利用make_rt函数打包发布exe时,输出路径不能包含中文!!!
- WEB日志分析工具(Webslizer和AWstats)
https://www.cnblogs.com/xiaowenshu/p/10030139.html#top