主从同步配置可以参考上一篇MacOS使用Docker创建MySQL主从数据库

一、创建MySQL数据库容器配置文件对应目录

我们在当前用户下创建一组目录,用来存放MySQL容器配置文件,(Linux下可以省略此步骤)参考下图:

二、主主配置文件

mone对应的my.cnf配置文件为

[mysqld]
server_id = 1
log-bin= mysql-bin replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema read-only=0
relay_log=mysql-relay-bin
log-slave-updates=on
auto-increment-offset=1
auto-increment-increment=2

mtwo对应的my.cnf配置文件为

[mysqld]
server_id = 2
log-bin= mysql-bin replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema read-only=0
relay_log=mysql-relay-bin
log-slave-updates=on
auto-increment-offset=2
auto-increment-increment=2

三、创建两个MySQL数据库容器

创建mone数据库容器

docker run --name monemysql -d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/yumaster/test/mysql_doublemaster/mone/data:/var/lib/mysql -v /Users/yumaster/test/mysql_doublemaster/mone/conf/my.cnf:/etc/mysql/my.cnf -v /Users/yumaster/test/mysql_doublemaster/mone/mysql-files:/var/lib/mysql-files mysql/mysql-server

创建mtwo数据库容器

docker run --name mtwomysql -d -p 3318:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/yumaster/test/mysql_doublemaster/mtwo/data:/var/lib/mysql -v /Users/yumaster/test/mysql_doublemaster/mtwo/conf/my.cnf:/etc/mysql/my.cnf -v /Users/yumaster/test/mysql_doublemaster/mtwo/mysql-files:/var/lib/mysql-files mysql/mysql-server

此时我们打开Docker仪表板可以看到,两个容器已经运行起来了。而且端口就是我们之前创建的对应端口

四、主主数据库配置

mone 数据库容器配置:

//进入mone容器
docker exec -it monemysql mysql -u root -p123456
//创建一个用户来同步数据,每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE 权限。mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';(这样有可能在slave创建与master连接时报错)

CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
//对用户进行授权
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';
//查看状态,记住File、Position的值,在mtwo中将用到
show master status;
//查询mone容器的IP,会在slave设置主库连接时用到
docker inspect monemysql | grep IPA;

mtwo 数据库容器配置:

//进入mone容器
docker exec -it mtwomysql mysql -u root -p123456
//设置主库链接,master_host即为容器IP,master_log_file和master_log_pos即为在mone容器中,通过show master status查出来的值;
change master to master_host='172.17.0.4',master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=661,master_port=3306;
//创建一个用户来同步数据,每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE 权限。mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';(这样有可能在slave创建与master连接时报错)

CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
//对用户进行授权
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';
//启动同步
start slave;
//查看状态
show master status;

设置完mtwo之后,再进入mone容器

//进入mone容器
docker exec -it monemysql mysql -u root -p123456
//设置mtwo主库链接
change master to master_host='172.17.0.5',master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=661,master_port=3306;
//启动同步
start slave;

五、双主配置验证

在mone与mtwo容器中查看状态:

show slave status\G; 

当Slave_IO_Running与Slave_SQL_Running均为Yes,说明双主配置成功;

无论在mone,还是在mtwo中创建数据库,新增数据,两边都可以同步到数据

create database mone_demo;
use mone_demo;
create table userinfo(username varchar(50),age int);
insert into userinfo values('Tom',18);
select * from userinfo;

MacOS使用Docker创建MySQL主主数据库的更多相关文章

  1. MacOS使用Docker创建MySQL主从数据库

    一.拉取MySQL镜像 通过终端获取最新的MySQL镜像 docker pull mysql/mysql-server 二.创建MySQL数据库容器配置文件对应目录 我们在当前用户下创建一组目录,用来 ...

  2. Docker创建MySQL集装箱

    原文链接:Docker创建MySQL集装箱 这样做的目的是创建一个MySQL的image,出来的容器里自己主动启动MySQL服务接受外部连接 步骤: 1. 首先创建一个文件夹并在文件夹下创建一个Doc ...

  3. docker 下mysql 和postgresql 数据库的搭建以及数据文件的迁移和备份

    service docker start - docker 启动 service docker stop - docker 关闭 1.docker 镜像创建—使用的默认镜像有数据卷 docker pu ...

  4. Azure MySQL PaaS (3) 创建MySQL异地只读数据库 (Master-Slave)

    <Windows Azure Platform 系列文章目录> Azure MySQL PaaS服务提供异地只读的功能,我们可以在主站点,比如Azure上海数据中心,创建MySQL主节点. ...

  5. docker 创建mysql镜像,并成功进行远程连接

    1.安装 1.1 拉取镜像 docker pull mysql 拉取成功可以验证一下 docker images 1.2 创建并启动一个mysql容器 docker run --name ly-mys ...

  6. Docker创建Mysql容器并通过命令行连接到容器

    拉取网易蜂巢的mysql-server:5.6 docker pull hub.c.163.com/nce2/mysql:5.6 创建mysql5.6容器 1master+3个slave docker ...

  7. 使用docker创建mysql容器

    1.拉取mysql容器   docker pull mysql:5.7

  8. Docker创建mysql镜像

    原文: https://blog.csdn.net/uk8692/article/details/49386679 https://blog.csdn.net/qq362228416/article/ ...

  9. 使用docker创建MySQL容器,并在springboot中使用

    最近在看网上找了个springboot的项目试试,在项目中需要的MySQL版本是5.7,但是本机的MySQL只有5.5.因此想着在我的服务器上跑一个MySQL:5.7的容器解决这一问题,但是在实际操作 ...

随机推荐

  1. 在 vscode.dev 中直接运行 Python !纯浏览器环境,无后端!

    其实有挺长一段时间没有写自己的 VS Code 插件了! 还是要感谢我们 DevDiv 组的 Flexible Friday 活动,让我可以在工作日研究自己感兴趣的项目. Flexible Frida ...

  2. 并发 并行 进程 线程 协程 异步I/O python async

    一些草率不精确的观点: 并发: 一起发生,occurence: sth that happens. 并行: 同时处理. parallel lines: 平行线.thread.join()之前是啥?落霞 ...

  3. oracle 执行计划的获取方法

    1.用explain plan for来获取执行计划 explain plan for <sql>; select * from table(dbms_xplan.display()); ...

  4. App内容分享

    1.发送文本内容 发送简单的数据到其他应用,比如社交分分享的内容,意图允许用户快速而方便的共享信息. //分享简单的文本内容 public void btnShareText(View view) { ...

  5. Java设计模式—Proxy动态代理模式

    代理:设计模式 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 图 1. 代 ...

  6. 重量级&轻量级

    重量级 就是说包的大小,还有就是与个人项目的耦合程度,重量级的框架与项目耦合程度大些 代表EJB容器的服务往往是"买一送三",不要都不行 轻量级 就是相对较小的包,当然与项目的耦合 ...

  7. jQuery选择器整理+知识总结

    jQuery选择器 没有不会遗忘的知识,还是做个总结吧! 一.基本分类 jQuery选择器大致可以分为两类,基本选择器和过滤选择器,总体结构体系如下:   二.基本选择器 基本选择器又可以分为三种,分 ...

  8. vs2019+windows服务+nancy+打包

    一.创建windows服务  二.nuget包添加nancy 1.nancy 2.0.0和Nancy.Hosting.Self 2.0.0插件 2.项目添加文件夹Modules,在Modules文件夹 ...

  9. Linux下安装数据库sqlite3

    目录 一.简介 二.安装 三.测试 一.简介 SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.SQLite 是在世界上最广泛部署的 SQL 数据库引擎 ...

  10. 阿里云RDS备份 恢复到本地

    目录 一.恢复准备 二.具体操作 一.恢复准备 阿里云RDS默认配置了全备份+binlog,可以精准恢复到某个时间点上. 可以下载备份的包到本地,进行本地恢复,要预留好本地的数据库容量和cpu等规格, ...