docker容器配置mysql5.7主从复制

news2024/12/26 23:11:36

介绍

本文将通过docker创建3个mysql数据库容器,实现数据库主从复制功能,三个数据库容器分别为主库mysql-master:3307,从库mysql-slave-01:3308,mysql-slave-02:3309。使用的是mysql5.7版本

1. 拉取mongo镜像
docker pull mysql:5.7
2. 创建容器并配置启动
  1. 创建主数据库容器mysql-master
docker run -p 3307:3306 --name mysql-master -v /home/lingxl/docker-data/mysql/mysql-master/log:/var/log/mysql -v /home/lingxl/docker-data/mysql/mysql-master/data:/var/lib/mysql -v /home/lingxl/docker-data/mysql/mysql-master/conf:/etc/mysql/conf.d --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  1. 编写配置文件,在路径/home/lingxl/docker-data/mysql/mysql-master/conf下创建my.cnf文件,路径为上边配置的数据卷路径。
    内容如下:
[mysqld]
##置server_id, 同一局域网中需要唯一
server_id=101
##定不需要同步的数据库名称
binlog-ignore-db=mysql
##启二进制日志功能
log-bin=mall-mysql-bin
##置二进制日志使用内存大小(事务)
binlog_cache_size=1M
##置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
##二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
##跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
##如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
  1. 重启容器
docker restart mysql-master
  1. 进入容器,并创建数据同步用户
docker exec -it <container_id>  /bin/bash
mysql -uroot -p
CREATE USER 'slave01'@'%' IDENTIFIED BY '123456';
CREATE USER 'slave02'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'slave01'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'slave02'@'%';
FLUSH PRIVILEGES;

查看主数据库同步信息

show master status;
  1. 创建从数据库容器mysql-slave-01
docker run -p 3308:3306 --name mysql-slave01 -v /home/lingxl/docker-data/mysql/mysql-slave01/log:/var/log/mysql -v /home/lingxl/docker-data/mysql/mysql-slave01/data:/var/lib/mysql -v /home/lingxl/docker-data/mysql/mysql-slave01/conf:/etc/mysql/conf.d --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  1. 配置mysql-slave-01从数据库my.cnf,注意server_id必须唯一
    文件路径:/home/lingxl/docker-data/mysql/mysql-slave01/conf
[mysqld]
##置server_id, 同一局域网中需要唯一
server_id=102
##定不需要同步的数据库名称
binlog-ignore-db=mysql
##启二进制日志功能
log-bin=mall-mysql-bin
##置二进制日志使用内存大小(事务)
binlog_cache_size=1M
##置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
##二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
##跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
##如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_Llog配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
  1. 创建从数据库容器mysql-slave-02
docker run -p 3309:3306 --name mysql-slave02 -v /home/lingxl/docker-data/mysql/mysql-slave02/log:/var/log/mysql -v /home/lingxl/docker-data/mysql/mysql-slave02/data:/var/lib/mysql -v /home/lingxl/docker-data/mysql/mysql-slave02/conf:/etc/mysql/conf.d --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  1. 配置mysql-slave-01从数据库
    文件路径:/home/lingxl/docker-data/mysql/mysql-slave02/conf
[mysqld]
##置server_id, 同一局域网中需要唯一
server_id=103
##定不需要同步的数据库名称
binlog-ignore-db=mysql
##启二进制日志功能
log-bin=mall-mysql-bin
##置二进制日志使用内存大小(事务)
binlog_cache_size=1M
##置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
##二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
##跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
##如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_Llog配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
  1. 重新启动从数据库
docker restart  mysql-slave01
docker restart  mysql-slave02
  1. 配置数据库主从复制

相关参数:
master_host: 主数据库的lP地址;
master_port: 主数据库的运行端口;
master_user: 在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_fle:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:.连接失败重试的时间间隔,单位为秒。

具体命令:

change master to master_host='宿主机IP',master_port=3307(主库端口号),master_user='slave(主库创建的用户)',master_password='123456',master_log_file='mall-mysql-bin.000002(show master status; 查看的相关刻度)',master_log_pos=154,master_connect_retry=30;

在从数据库中开启主从复制, 桥接式网络,宿主机IP的获取方式可以通过 docker network inspect bridge

change master to master_host='172.17.0.1',master_port=3307,master_user='slave01',master_password='123456',master_log_file='mall-mysql-bin.000001',master_log_pos=154,master_connect_retry=30;
start slave;

查看主从同步状态

show slave status \G;

在这里插入图片描述

  1. 主从复制测试
    在主数据库上插入一条数据。
insert into table01 values(1, 'test226');

在这里插入图片描述

在从数据库上进行查看,能够查看到。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1472189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

并发编程线程安全性之可见性有序性

可见性 可见性: 就是说一个线程对共享变量的修改&#xff0c;另一个线程能够立刻看到 通俗点说&#xff0c;就是两个线程共享一个变量&#xff0c;无论哪一个线程修改了这个变量&#xff0c;另外一个线程都能够立刻看到上一个线程对这个变量的修改 产生线程安全问题的原因 计…

支付流程的理解

开发指引-JSAPI支付 | 微信支付商户平台文档中心 业务流程图&#xff1a; 首先&#xff0c;从业务流程&#xff0c;当有人问你的时候&#xff0c;反问&#xff1a;公司有没有确认跟支付宝合作还是跟微信合作&#xff0c;看有没有签订协议&#xff0c;有的话&#xff0c;要确认…

C# OpenCvSharp Tracker 目标追踪

目录 效果 项目 代码 下载 C# OpenCvSharp Tracker 目标追踪 效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Extensions; using OpenCvSharp.Tracking; using System; using System.Drawing; using System.Reflection; using System.Windows.Forms; namespace C…

iconfont的组件化使用方法(SVG)

目录 一、需求描述二、操作步骤1.在iconfont中选择项目需要使用的图标2.在项目中创建iconfont.js3.创建svgIcon组件 一、需求描述 将iconfont图标库选择的图标以SVG的形式引入项目并通过组件化的形式在项目中引用可控制图标的大小和颜色 二、操作步骤 1.在iconfont中选择项目…

【论文笔记之 YIN】YIN, a fundamental frequency estimator for speech and music

本文对 Alain de Cheveigne 等人于 2002 年在 The Journal of the Acoustical Society of America 上发表的论文进行简单地翻译。如有表述不当之处欢迎批评指正。欢迎任何形式的转载&#xff0c;但请务必注明出处。 论文链接&#xff1a;http://audition.ens.fr/adc/pdf/2002_…

单片机精进之路-5矩阵键盘扫描

如下图&#xff0c;先在p3口输出0xfe&#xff0c;再读取p3口的电平&#xff0c;如果没有按键按下&#xff0c;temp & 0xf0还是0xf0&#xff0c;如果又第一个键按下&#xff0c;temp & 0xf0还是0xee&#xff0c;其他按键由此类推可得。 //4*4键盘检测程序,按下键后相应…

【笔记】【电子科大 离散数学】 2.命题

文章目录 数理逻辑定义 命题定义不是命题的例子 原子命题和复合命题定义约定 命题联结词否定联结词定义例子真值表 合取联结词定义例子真值表 析取联结词定义例子 蕴含联结词定义例子真值表 等价联结词定义例子真值表 命题符号化及其应用速查表格优先级复合命题符号化布尔检索演…

golang学习1,dea的golang-1.22.0

参考&#xff1a;使用IDEA配置GO的开发环境备忘录-CSDN博客 1.下载All releases - The Go Programming Language (google.cn) 2.直接next 3.window环境变量配置 4.idea的go插件安装 5.新建go项目找不到jdk解决 https://blog.csdn.net/ouyang111222/article/details/1361657…

docker存储驱动

目录 一、写时复制和用时分配 二、联合文件系统 2.1、aufs ​编辑 2.2、分层的问题 2.3、overlay 2.4 文件系统区别 三、容器跑httpd案例 3.1、案例1&#xff1a;端口映射 3.2、案例2&#xff1a;制作httpd应用镜像 3.3、案例3&#xff1a;docker数据卷挂载 3.4、案…

sqllabs的order by注入

当我们在打开sqli-labs的46关发现其实是个表格&#xff0c;当测试sort等于123时&#xff0c;会根据列数的不同来进行排序 我们需要利用这个点来判断是否存在注入漏洞&#xff0c;通过加入asc 和desc判断页面有注入点 1、基于使用if语句盲注 如果我们配合if函数&#xff0c;表达…

《Docker 简易速速上手小册》第4章 Docker 容器管理(2024 最新版)

文章目录 4.1 容器生命周期管理4.1.1 重点基础知识4.1.2 重点案例&#xff1a;启动并管理 Python Flask 应用容器4.1.3 拓展案例 1&#xff1a;调试运行中的容器4.1.4 拓展案例 2&#xff1a;优雅地停止和清理容器 4.2 容器数据管理与持久化4.2.1 重点基础知识4.2.2 重点案例&a…

IT行业风向让人琢磨不透,一端狂裁,一端狂吸收……

2024年伊始&#xff0c;全球科技行业显然又掀起了新一波的裁员潮。尽管这轮裁员潮来得不如去年年初那样猛烈&#xff0c;但依然不免令不少人感到措手不及…… 甚至有人开工第一天收到的并不是开门红包&#xff0c;而是裁员说明书&#xff1a; 以前一直以为年前被裁&#xff0c;…

甲基二十四聚乙二醇叠氮,mPEG24 N3,可以和含有 Alkyne 基团的分子反应

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;2563873-82-3&#xff0c;m-PEG24-azide&#xff0c;mPEG24 N3&#xff0c;甲基二十四聚乙二醇叠氮&#xff0c;甲基 PEG24 叠氮 一、基本信息 【产品简介】&#xff1a;M-PEG24-azide is a click chemical reagent…

idea集成git(实用篇)

0.Git常用命令 Git常用命令-CSDN博客 1.下载git Git - Downloads 一路傻瓜式安装即可&#xff08;NEXT&#xff09; 2.软件测试 在Windows桌面空白处&#xff0c;点击鼠标右键&#xff0c;弹出右键菜单 Git软件安装后&#xff0c;会在右键菜单中增加两个菜单 Git GUI He…

2024022502-数据库绪论

数据库绪论 数据管理的三个阶段 人工管理阶段 文件系统阶段 数据库系统阶段 基本术语 数据&#xff08;Data&#xff09; 计算机用来描述事物的记录&#xff08;文字&#xff0e;图形&#xff0e;图像&#xff0e;声音&#xff09;数据的形式本身并不能完全表达其内容&am…

LeetCode第二题: 两数相加

文章目录 题目描述示例 解题思路 - 迭代法Go语言实现 - 迭代法算法分析 解题思路 - 模拟法Go语言实现 - 模拟法算法分析 解题思路 - 优化模拟法主要方法其他方法的考虑 ‍ 题目描述 给出两个非空的链表用来表示两个非负的整数。其中&#xff0c;它们各自的位数是按照逆序的方…

第三百六十八回

文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容&#xff0c;本章回中将介绍如何获取时间戳.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

alembic

alembic是sqlalchemy的作者开发的。 用来做OMR模型与数据库的迁移与映射。 第一个&#xff0c;alembic的所有命令都是以alembic开头 第二&#xff0c;alembic的迁移文件也是通过版本进行控制的。首先&#xff0c;通过pip install alembic进行安装。以下将解释alembic的用法 方…

Linux内核网络

文章目录 前言网络协议栈图解功能 发送Linux内核网络数据包图解流程 接收Linux内核网络数据包图解流程 最后 前言 你好&#xff0c;我是醉墨居士&#xff0c;因为Linux内核涉及的内容极多&#xff0c;我们初学者如果一上来就开始深挖细节&#xff0c;很有可能会在Linux内核代码…

如何使用Axure RP制作web页面并实现无公网ip远程访问——“cpolar内网穿透”

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…