mysql docker 主从配置
主从复制相关
前置条件:
docker安装的mysql是5.7.26版本
1. 编排docker-compose文件如下:
version: '3'
services:
  mysql-master:
    volumes: # 挂载数据卷,因为docker如果重新启动容器之后mysql的数据会清空,因此这里采取持久化,挂载到本地文件夹
      - '/etc/mysql/master/data:/var/lib/mysql'
    container_name: masterNode #自定义生成的容器名称
    build:
      context: ./
      dockerfile: master/Dockerfile
    environment:
      - 'MYSQL_ROOT_PASSWORD=123456'
    links:
      - mysql-slave
    ports:
      - '3306:3306'
    restart: always
    hostname: mysql-master
  mysql-slave:
    volumes:
      - '/etc/mysql/slave/data:/var/lib/mysql'
    container_name: slaveNode
    build:
      context: ./
      dockerfile: slave/Dockerfile
    environment:
      - 'MYSQL_ROOT_PASSWORD=123456'
    ports:
      - '3307:3306'
    restart: always
    hostname: mysql-slave
目录结构如下:
docker-compose.yml
master
      Dockerfile
      my.cnf
slave
    Dockerfile
    my.cnf
master下Dockerfile
FROM mysql:5.7.26
MAINTAINER YTJ
ADD ./master/my.cnf /etc/mysql/my.cnf
my.cnf如下:
[mysqld]
## 设置server_id,一般设置为IP,注意要唯一
server_id=100
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志功能,可以随便取,最好有含义(关键就是这里了)
log-bin=replicas-mysql-bin
## 为每个session分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
slave下Dockerfile
FROM mysql:5.7.26
MAINTAINER YTJ
ADD ./slave/my.cnf /etc/mysql/my.cnf
my.cnf如下:
[mysqld]
## 设置server_id,一般设置为IP,注意要唯一
server_id=101
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=replicas-mysql-slave-bin
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=replicas-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
2 .docker-compose up -d启动服务
3. 配置master
docker exec -it <master_containter_id> /bin/bash进入master内部
mysql -u root -p 输入密码123456进入mysql命令行
创建数据库同步用户:
CREATE USER 'testSyn'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'testSyn'@'%';
查看master状态:show master status;

File和Position对应的值后面要用到。
4. 配置slave
进入mysql命令行
连接master:
change master to master_host='masterNode', master_user='testSyn', master_password='123456', master_port=3306, master_log_file='replicas-mysql-bin.000003', master_log_pos=621, master_connect_retry=30;
master_host: Master 的IP地址
master_user: 在 Master 中授权的用于数据同步的用户
master_password: 同步数据的用户的密码
master_port: Master 的数据库的端口号
master_log_file: 指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos: 从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。
查看从库状态:show slave status \G;Slave_IO_Running,和Slave_SQL_Running都是NO
启动slave:start slave;
show slave status \G;
mysql docker 主从配置的更多相关文章
- [转帖]mysql数据库主从配置
		
mysql数据库主从配置 https://www.toutiao.com/i6680489302947791371/ 多做实验 其实挺简单的 很多东西 要提高自信 去折腾. 架构与我 2019-04- ...
 - mysql的主从配置以及主主配置
		
基础环境 系统:linuxmysql版本:5.5主服务器IP:192.168.1.101从服务器IP:192.168.1.102 1.主服务器(master)要打开二进制日志2.从服务器(slave) ...
 - Mysql的主从配置
		
前言:这次学习分布式的思想要配置mysql的主从复制和读写分离,我在主从配置上踩到很多坑,在此演示一遍配置过程,并附上问题的说明和自己的一些见解 Mysql主从复制的原理 附上原理图: mysql的主 ...
 - Mysql数据库主从配置
		
一.为什么要使用数据库主从架构 一个网站损耗资源最厉害的就是数据库,最易崩溃的也是数据库,而数据库崩溃带来的后果是非常严重的.数据库分为读和写操作,在实际的应用中,读操作的损耗远比写操作多太多,因此读 ...
 - mysql传统主从配置与主从监控
		
主从简介 在现代企业中,数据显得尤为重要,而存储数据的数据库选择又五花八门,但无论是何种数据库,均存在着一种隐患. 当数据规模非常大,读写量也很高时,一台数据库已经无法负担全部读写任务,就需要多台数据 ...
 - Centos7下mysql的主从配置
		
最近,有朋友业务并发量比较大,让我帮他配置个主从,来缓解数据库的压力.下面就是我配置的,有需要的朋友可以借鉴下. 首先,我得到2台服务器: 172.18.2.142(主) 172.18.2.141(从 ...
 - Mysql  Master-slave 主从配置
		
MySQL主从复制 场景描述:主数据库服务器:192.168.10.130,MySQL已经安装,并且无应用数据.从数据库服务器:192.168.10.131,MySQL已经安装,并且无应用数据. 2. ...
 - mysql主从复制 主从配置(windows系统上)
		
OS:Windows7 DB:MYSQL5.6.2 1.正常安装第一个mysql(安装步骤省略) 2.在控制面板里停止第一个mysql服务 3.将C:\Program Files\MySQL目录下 ...
 - mysql GTID主从配置
		
主数据库配置 [mysqld] server_id=1 gtid_mode=on enforce_gtid_consistency=on skip_slave_start=1log_bin=maste ...
 
随机推荐
- JDK1.8集合之HashMap
			
目录 简介 内部实现 类的属性 Node数组 重要方法 put()和putVal()方法 get()和getNode()方法 resize()方法 容量设置为2的幂的优点 计算Hash时候 扩容时候 ...
 - python数据库-MySQL数据库高级查询操作(51)
			
一.什么是关系? 1.分析:有这么一组数据关于学生的数据 学号.姓名.年龄.住址.成绩.学科.学科(语文.数学.英语) 我们应该怎么去设计储存这些数据呢? 2.先考虑第一范式:列不可在拆分原则 这里面 ...
 - JSON.stringify() 的深入理解
			
目录 序言 语法 深入理解 序言 最近在看<你所不知道的javascript>[中卷]一书,第一部分是类型和语法.本文是基于这部分的产物.在强制类型转换->抽象值操作-> to ...
 - Redis 使用C#程序操作Redis
			
一.安装操作所需Nuget包 二.写入 redis只是按Key值设置过期时间,不是对value内部的某些值设过期 2.1 string类型 /// <summary> /// 向Redis ...
 - ~~在python中踩过的坑以及问题~~(不断更新)
			
python说简单也不难,但是在这其中大大小小的点 真的是有够折磨人欸! 1. input 输入的时候,即使输入的是数字,数据类型也是字符串 2. 字符串本质上来看可以看作有序数组 3 ...
 - 20131214-EditPlus快捷键-第二十一天
			
EditPlus 快捷键 文件 FileFtpUpload Ctrl+Shift+S 上传文件到 FTP 服务器 FileNew Ctrl+N 新建普通的文本文档 FileNewHtml Ctrl ...
 - 20141126-传智播客.NET3.2版
 - 【原创】一个shell脚本记录(实现rsync生产文件批量迁移功能)
			
#!/bin/bash #Date:2018-01-08 #Author:xxxxxx #Function:xxxxxx #Change:2018-01-17 # #设置忽略CTRL+C信号 trap ...
 - 洛谷:P2952 [USACO09OPEN]牛线Cow Line:题解
			
题目链接:https://www.luogu.org/problemnew/show/P2952 分析: 这道题非常适合练习deque双端队列,~~既然是是练习的板子题了,建议大家还是练练deque, ...
 - git的使用之eclipse Hbuilder
			
工欲善其事,必先利其器 eclipse使用git管理项目 准备 eclipse 码云(github)账号 下载插件 首先电脑已经安装好git了,然后在eclipse中下载git的插件. 打开eclip ...