主从同步配置可以参考上一篇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. CSS相关,手画三角形,正方形,扇形

    三角形 实现一个三角形 <!DOCTYPE html> <html> <head> <title>三角形</title> <style ...

  2. 【leetcode】1293 .Shortest Path in a Grid with Obstacles

    You are given an m x n integer matrix grid where each cell is either 0 (empty) or 1 (obstacle). You ...

  3. git pull、git fetch、git merge、git rebase的区别

    一.git pull与git fetch区别 1.两者的区别       两者都是更新远程仓库代码到本地. git fetch相当于是从远程获取最新版本到本地,不会自动merge. 只是将远程仓库最新 ...

  4. 【Linux】【Shell】【text】Vim

    文本编辑器: 文本:纯文本,ASCII text:Unicode: 文本编辑种类: 行编辑器:sed 全屏编辑器:nano, vi vi: Visual Interface vim: Vi IMpro ...

  5. SpringBoot项目找不到主类或无法加载主类

    问题描述 启动springboot项目的时候发现启动失败,查看日志发现因为找不到主类或无法加载主类. 解决 我这个项目是拉取的别人git上的项目,看了一下目录结构发现没有编译后的文件(target目录 ...

  6. 使用Booststrap布局网页页面

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8&qu ...

  7. 1888-jerry99的数列--factorial

    1 #define _CRT_SECURE_NO_WARNINGS 1//jerry99的数列 2 #include<bits/stdc++.h> 3 int prime[40000] = ...

  8. myfs 操作系统课内实验 文件管理系统 Ext2

    To 学弟学妹们: 写这个随笔原意是记录一下这个很有趣的实验 ,记录一下写的时候的细节和思路. 要是光是抄这个代码,反而使得这个实验失去了意义. 加油,这个实验收获真的很大. 任务描述: 用一个空白文 ...

  9. Flink Exactly-once 实现原理解析

    关注公众号:大数据技术派,回复"资料",领取1024G资料. 这一课时我们将讲解 Flink "精确一次"的语义实现原理,同时这也是面试的必考点. Flink ...

  10. Java如何生成随机数 - Random、ThreadLocalRandom、SecureRandom

    Java7 的Random伪随机数和线程安全的ThreadLocalRandom 一.Random伪随机数: Random 类专门用于生成一个伪随机数,它有两个构造器: 一个构造器使用默认的种子(以当 ...