docker 部署mysql主从复制
一:环境准备
1:创建mysql主库镜像
docker run -p 3307:3306 --name mysql_m \
-v /opt/mysql_m/log:/var/log/mysql \
-v /opt/mysql_m/data:/var/lib/mysql \
-v /opt/mysql_m/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
2:在/opt/mysql-m/conf 创建文件 my.cnf,并做如下配置
cd /opt/mysql_m/conf
vi my.cnf[mysqld]
#设置 server_id
server_id=1
# 指定不需要同步的数据库名称
binlog-ignore-db=mysql
# 开启二进制日志功能
log-bin=mall-mysql-bin
#设置日志使用内存大小
binlog_cache_size=1M
# 设置使用的日志格式( mixed,statement,row)
# statement:以SQL语句的形式记录更改操作。
# row:以行级别的方式记录更改操作,即记录每个被修改的行的具体内容。
# mixed:将statement和row两种方式结合使用,在某些情况下使用statement,在其他情况下使用row。
binlog_format=mixed
# 二进制日志过期清理时间。默认值为0,表示不自动清理
expire_logs_days=3
# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断## 如 :1062>错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
3:重启主库
docker restart mysql_m
4:创建启动slave容器
docker run -p 3308:3306 --name mysql_s \
-v /opt/mysql_s/log:/var/log/mysql \
-v /opt/mysql_s/data:/var/lib/mysql \
-v /opt/mysql_s/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
5:在/opt/mysql_s/conf 创建文件 my.cnf,并做如下配置
[mysqld]
##设置server_id , 同一局域网中需要唯一
server_id=2
##指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备slave作为其他数据库实例的master时使用
log-bin=mall-mysql-slave1-bin
##设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
##设置使用二进制日志格式(mixed,statement,row)
binlog_format=mixed
##而简直日志过期清理时间,默认值为0,表示不自动清理
expire_logs_days=3
##跳过主从复制中遇到的所有错我或指定类型的错误,避免slave端复制中断
##如:1062错误指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log 配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates 表示 slave 将复制时间写进自己的二进制日志
log_slave_updates=1
## slave设置为只读 (具有super权限的用户除外)
read_only=1
6:重启从库
docker restart mysql_s
查看容器是否正常运行
docker ps -- 查看运行中的容器
docker ps -a -- 查看所有未被删除的容器
docker logs -f 容器ID -- 查看该容器的运行日志
二:搭建主从复制
1:主库设置
进入Master容器内部并登录mysql
[root@localhost conf]# docker exec -it mysql_m /bin/bash
root@bda078cb18de:/# mysql -uroot -p123456
2:在Master上建立帐户并授权 Slave
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
3:查询master状态
mysql> show master status;
+-----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| mall-mysql-bin.000003 | 438 | | mysql | |
+-----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
其中File 与 Position 的值需要我们暂时记住:
File:mall-mysql-bin.000003 为当前binlog日志文件名
Position:438 为当前binlog日志偏移量
4:进入Slave容器内部并登录mysql
[root@localhost conf]# docker exec -it mysql_s bin/bash
root@e6eaee0b8e9a:/# mysql -uroot -p123456
5:与Master建立主从关系
CHANGE MASTER TO MASTER_HOST='192.168.1.31',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_PORT=3307,
MASTER_LOG_FILE='mall-mysql-bin.000003',
MASTER_LOG_POS=438;
其中:
CHANGE MASTER TO MASTER_HOST=’主机的IP地址’,
MASTER_USER=’slave'(刚刚配置的用户名),
MASTER_PASSWORD=’123456′(刚刚授权的密码),
Master_port=3307 (Master主机开放的端口,)
MASTER_LOG_FILE=’mysql-bin.具体数字’,MASTER_LOG_POS=具体值(之前的Position);
6:启动从库复制功能
start slave;在这里出现错误,可通过以下命令重置。
stop slave;
reset master;
7:查看从服务器状态
mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.31Master_User: slaveMaster_Port: 3307Connect_Retry: 60Master_Log_File: mall-mysql-bin.000003Read_Master_Log_Pos: 438Relay_Log_File: mall-mysql-relay-bin.000002Relay_Log_Pos: 325Relay_Master_Log_File: mall-mysql-bin.000003Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 438Relay_Log_Space: 537
其中:Slave_IO_Running 与 Slave_SQL_Running都是Yes则说明主从配置成功!
当Slave_IO_Running: No 时,在再看往下查看异常Error信息,也可重复以上的步骤:重置主从配置->获取Master日志名与偏移量-> 重新建立主从配置
此时,在主库上的DDL及插入、更新都会在从库进行复制。
至此,MySQL主从复制搭建完成。
三:检测mysql复制是否生效
1:在主数据库中创建表测试同步是否生效
create database master;--创建表
create table test1 (id int, name varchar(100));
--插入数据
insert into test1 values(1,'zhangsan');
2:查看主库状态
mysql> show master status;
+-----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------------+----------+--------------+------------------+-------------------+
| mall-mysql-bin.000003 | 1069 | | mysql | |
+-----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
3:在从数据库中查看数据是否已同步
mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.31Master_User: slaveMaster_Port: 3307Connect_Retry: 60Master_Log_File: mall-mysql-bin.000003Read_Master_Log_Pos: 1069Relay_Log_File: mall-mysql-relay-bin.000002Relay_Log_Pos: 956Relay_Master_Log_File: mall-mysql-bin.000003Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 1069mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mdb1 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)mysql> select * from mdb1.test1;
+------+----------+
| id | name |
+------+----------+
| 1 | zhangsan |
+------+----------+
1 row in set (0.00 sec)
相关文章:
docker 部署mysql主从复制
一:环境准备 1:创建mysql主库镜像 docker run -p 3307:3306 --name mysql_m \ -v /opt/mysql_m/log:/var/log/mysql \ -v /opt/mysql_m/data:/var/lib/mysql \ -v /opt/mysql_m/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD123456 \ -d mysql:5.7 2&…...
C++打怪升级(十一)- STL之list
~~~~ 前言1. list是什么2. list接口函数的使用1. 构造相关默认构造n个val构造迭代器范围构造拷贝构造 2 赋值运算符重载函数2 析构函数3 迭代器相关begin 和 endrbegin 和rend 4 容量相关emptysize 5 元素访问相关frontback 6 修改相关push_backpop_backpush_frontpop_frontins…...
Python编程陷阱(七)
陷阱26:不要使用list.reverse方法来反转列表 列表是Python中最常用的数据结构之一,它可以存储任意类型的元素,并且可以动态地增加或删除元素。有时候,我们需要将列表中的元素反转,比如打印或排序它们的值,就需要使用list.reverse方法或[::-1]切片来反转列表。但是,如果我…...
Python如何调用ixchariot进行吞吐量测试
Python如何调用ixchariot进行吞吐量测试 要使用Python调用IxChariot进行吞吐量测试,您可以使用 subprocess 模块来执行IxChariot的TCL命令行。下面是一个简单的示例代码: import subprocess# 定义IxChariot的安装路径和测试脚本路径 ixchariot_path &q…...
51单片机应用从零开始(五)·加减乘除运算
51单片机应用从零开始(一)-CSDN博客 51单片机应用从零开始(二)-CSDN博客 51单片机应用从零开始(三)-CSDN博客 51单片机应用从零开始(四)-CSDN博客 详解 KEIL C51 软件的使用建立工程…...
Meta降本增效大招之:弃用产品
今晚无意间进入去哪儿技术沙龙的直播间,听到他们要删除50%的代码和停掉50%的服务。我就想起Meta公司最近写的这篇博客:Automating product deprecation。 这篇博客对于效能平台的建设非常具有指导意义。文章最后有原文链接和我个人的总结。 这是一个系列…...
Adobe Illustrator——原创设计的宝藏软件
今天,我们来谈谈一款在Adobe系列中曾经多次给大家都提到的原创性极强的设计理念丰富的矢量图形编辑软件——Adobe Illustrator。 Adobe Illustrator,其定位是一款与Photoshop相类似对矢量图形进行编辑的软件。 Adobe Illustrator,作为全球最著…...
LEEDCODE 220 存在重复元素3
class Solution { public:int getId(int a, int valuediff){// 值// return a/(valuediff1);return a < 0 ? (a ) -) / (valuediff 1) - 1 : a / (valuediff 1);}public: unordered_map<int, int> bucket;bool containsNearbyAlmostDuplicate(vector<int>&am…...
从内网到公网:使用Axure RP和内网穿透技术发布静态web页面的完整指南
文章目录 前言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创建一条固定…...
第三天课程 RabbitMQ
RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应&am…...
Ubuntu18.04编译OpenCV时遇到无法下载ADE的问题
安装OpenCV过程中编译时出现下载ADE失败的问题 报错如下: -- ADE: Downloading v0.1.2a.zip from https://github.com/opencv/ade/archive/v0.1.2a.zip -- Try 1 failed CMake Warning at cmake/OpenCVDownload.cmake:248 (message):ADE: Download failed: 28;&quo…...
基于JavaWeb+SSM+社区居家养老服务平台—颐养者端微信小程序系统的设计和实现
基于JavaWebSSM社区居家养老服务平台—颐养者端微信小程序系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 在复杂社会化网络中,灵活运用社会生活产生的大数据&am…...
算法实战:亲自写红黑树之五 删除erase的平衡
本文承接自: 算法实战:亲自写红黑树之一-CSDN博客 算法实战:亲自写红黑树之二 完整代码-CSDN博客 算法实战:亲自写红黑树之三 算法详解-CSDN博客 算法实战:亲自写红黑树之四 插入insert的平衡-CSDN博客 目录 一、入口…...
春秋云境靶场CVE-2021-41402漏洞复现(任意代码执行漏洞)
文章目录 前言一、CVE-2021-41402描述二、CVE-2021-41402漏洞复现1、信息收集1、方法一弱口令bp爆破2、方法二7kb扫路径,后弱口令爆破 2、找可能可以进行任意php代码执行的地方3、漏洞利用找flag 总结 前言 此文章只用于学习和反思巩固渗透测试知识,禁止…...
12 Go的接口
概述 在上一节的内容中,我们介绍了Go的作用域,包括:局部作用域、全局作用域、命名空间作用域等。在本节中,我们将介绍Go的接口。Go语言中的接口是一种类型,它定义了一组函数的集合。接口是一种抽象的描述,它…...
Python编程-----并行处理应用程序
目录 一.进程 二.线程 三.Python标准库中并行处理的相关模块 Threading模块 (1)使用Thread对象创建线程 (2)自定义派生于Thread的对象 (3)线程加入join() (4)用户线程和daemon线程 (5)Timer线程 线…...
kubernetes集群编排——istio
官网:https://istio.io/latest/zh/about/service-mesh/ 部署 [rootk8s2 ~]# tar zxf istio-1.19.3-linux-amd64.tar.gz [rootk8s2 ~]# cd istio-1.19.3/[rootk8s2 istio-1.19.3]# export PATH$PWD/bin:$PATH demo专为测试准备的功能集合 [rootk8s2 istio-1.19.3]# i…...
mfc140u.dll丢失的解决方法,以及mfc140u.dll解决方法的优缺点
在使用电脑过程中,有时会遇到一些与动态链接库文件(DLL)相关的错误。其中,mfc140u.dll丢失的错误是较为常见的一种。当这个关键的mfc140u.dll文件丢失或损坏时,可能会导致某些应用程序无法正常运行。在本文中ÿ…...
2源码安装网络协议
2.2源码安装/网络协议 一、源码包应用场景 有时我们所用的内核版本太旧,系统自带的库(如libstdc.so.6)版本低或者依赖的其他软件版 本较低,导致无法安装目标软件。 软件/库其实是对机器汇编指令集的封装,在X86体系下…...
未来服务器操作系统的趋势与展望
摘要: 随着云计算、大数据和人工智能不断的发展,服务器操作系统也需要随之进行新一轮的升级。本文通过分析当前服务器操作系统的现状,探讨了未来服务器操作系统的趋势和展望,并针对一些关键问题提出了解决方案。 一、引言 服务器…...
三层交换+单臂路由+ACL网络配置
一、拓扑与IP规划设备VLAN网关IP地址PC1/PC32192.168.2.254192.168.2.1/2PC23192.168.3.254192.168.3.1PC44192.168.4.254192.168.4.1PC55192.168.5.254192.168.5.1PC66192.168.6.254192.168.6.1二、交换机配置LSW1system-view vlan batch 2 3 4 5 6 interface GigabitEthernet…...
西门子PID调节仿真程序:1200/1500 PLC 的学习利器
西门子PID调节仿真程序1200plc和1500plc通用,只需一个PLC实物,就能轻松实现PID工艺对象的仿真,是学习PID的参数的好工具。针对这套程序,录制了一段视频解说,手把手教你如何使用博途PID调节工具和触摸屏PID画面的操作。…...
Unity资源提取工具AssetStudio完全指南:从问题解决到专业应用
Unity资源提取工具AssetStudio完全指南:从问题解决到专业应用 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and addi…...
2025届毕业生推荐的六大AI辅助论文平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 它可以助力进行文献梳理,帮助研究者快速筛选出有价值的文献资料,人工…...
OpenCore Legacy Patcher实战指南:突破硬件限制的4个关键步骤
OpenCore Legacy Patcher实战指南:突破硬件限制的4个关键步骤 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 老旧Intel Mac面临官方系统支持终止…...
如何用Notepad--打造跨平台开发环境:国产编辑器的逆袭之路
如何用Notepad--打造跨平台开发环境:国产编辑器的逆袭之路 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- …...
实战应用:基于快马ai为全栈项目快速构建集成wsl2开发环境
实战应用:基于快马AI为全栈项目快速构建集成WSL2开发环境 最近在准备一个全栈项目,需要同时开发Python Django后端和Vue.js前端。为了保持开发环境的一致性,我决定使用WSL2来搭建开发环境。下面记录下我的完整配置过程,希望能帮助…...
Thorium浏览器深度解析:如何打造比Chromium快30%的高性能浏览器?
Thorium浏览器深度解析:如何打造比Chromium快30%的高性能浏览器? 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are t…...
经营分析会哪些指标最重要?老板最该看的10个经营分析指标
开经营分析会,最怕的就是数据。很多老板一开经营分析会就头疼:这么多数字,我到底该看哪个?做了十多年财务管理了,我一直在内部推行一套极简框架:所有经营讨论,都必须围绕这10个根本指标展开。这…...
WeKnora知识库迁移方案:从其他系统平滑过渡
WeKnora知识库迁移方案:从其他系统平滑过渡 1. 引言 知识库迁移听起来可能很复杂,但其实就像搬家一样,只要提前规划好,整个过程可以很顺利。无论你之前用的是Confluence、MediaWiki还是其他知识管理系统,迁移到WeKno…...
