docker 安装mysql 主从复制

news2024/12/24 12:49:31

一、搭建主服务器的mysql

1.1 先新建文件夹

mkdir -p /data/dockerData/mysql-master/conf

 1.2 进入/data/dockerData/mysql-master/conf目录下新建my.config,

[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.3 用上面配置运行容器,创建3307端口的主库

docker run -p 3307:3306 \
--name mysql-master \
-v /data/dockerData/mysql-master/log:/var/log/mysql \
-v /data/dockerData/mysql-master/data:/var/lib/mysql \
-v /data/dockerData/mysql-master/conf/my.config:/etc/mysql/my.config \
-e MYSQL_ROOT_PASSWORD=1234 \
-d mysql:5.7

1.4 进入主节点mysql-master容器实例,进入数据库

1-今日容器
docker exec -it 主节点容器实例 /bin/bash
2-登录mhsql
mysql -u root -proot

1.5 查看bin日志

show global variables like '%log_bin%';

log_bin为ON是开启状态 

 

1.6 在master数据库(主库)中创建同步用户授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

1-创建用户
CREATE USER 'slave'@'192.168.1.%' IDENTIFIED BY 'slave';
2-设置密码
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
3-授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

刷新权限

flush privileges;

 二、创建从节点

 2.1先新建文件夹

mkdir -p /data/dockerData/mysql-slave/conf

 2.2 进入/data/dockerData/mysql-slave/conf目录下新建my.config,设置从库为只读

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
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=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免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

2.3 用上面配置运行容器,创建3308端口的从库

docker run -p 3308:3306 \
--name mysql-slave\
-v /data/dockerData/mysql-slave/log:/var/log/mysql \
-v /data/dockerData/mysql-slave/data:/var/lib/mysql \
-v /data/dockerData/mysql-slave/conf/my.config:/etc/mysql/my.config \
-e MYSQL_ROOT_PASSWORD=1234 \
-d mysql:5.7

三、同步

3.1 在主节点数据库查看主从同步状态

show master status;

3.2 进入主库,配置主从复制

change master to master_host='宿主机ip(192.168.1.1)', master_user='slave', master_password='1234', 
master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=1030, master_connect_retry=30;

 上面参数详细解释

master_host:主数据库的IP地址;

master_port:主数据库的端口;

master_user:在主数据库创建的用于同步数据的用户账号;

master_password:在主数据库创建的用于同步数据的用户密码;

master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;

master_log_pos:指定从数据库从哪个位置开始复制数据,通过主数据的状态,获取Position参数;

master_connect_retry:连接失败重试的时间间隔,单位为秒。
 

四、检查是否完成同步 

4.1 登录从节点

1-进入容器
docker exec -it 主节点容器实例 /bin/bash
2-登录mhsql
mysql -u root -proot

4.2 查看同步状态 

 show slave status \G;

4.3 在从节点数据库开启主从同步

start slave;

显示下面,成功

mysgl> start slave:Query 0K,0 rows affected (0.17 sec)

4.4 再次查看状态,状态显示为yes 表示成功,最后自己插入点数据试试

show slave status \G;

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

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

相关文章

Redis7--基础篇7(哨兵sentinel)

1. 关于哨兵的介绍 1、监控redis运行状态,包括master和slave(主从监控) 2、哨兵可以将故障转移的结果发送给客户端(消息通知) 3、当master down机,能自动将slave切换成新master(故障转移&#…

学生档案管理系统设计

摘要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量…

20、pytest中的参数化

官方实例 # content of test_expectation.pyimport pytestpytest.mark.parametrize("test_input, expected",[("35",8),("24",6),("6*9",42)]) def test_eval(test_input, expected):assert eval(test_input) expected# content of …

Vmware虚拟机简介和安装

作者:余小小 常见的虚拟机 vmwarevirtualBox Vmware 运行在win系统上centos运行在Vm上 先安装vm,在安装centos系统 Vmware介绍 不用分区或者重开机,就可以在同一台pc上使用多种操作系统完全隔离,且保护不同的操作系统环境和文…

掌控安全 暖冬杯 CTF Writeup By AheadSec

本来结束时发到了学校AheadSec的群里面了的,觉得这比赛没啥好外发WP的,但是有些师傅来问了,所以还是发一下吧。 文章目录 Web签到:又一个计算题计算器PHP反序列化又一个PHP反序列化 Misc这是邹节伦的桌面背景图什么鬼?…

【分享】PDF文件不能编辑的3个原因

PDF文件具有很好的兼容性,可靠性,安全性,是很多人办公常用的电子文档格式。但有时候想要编辑PDF时,却发现不能编辑,是什么原因呢?下面小编来分享一下常见的3个原因。 原因1: PDF文件是扫描件&a…

035.Python面向对象_三大特性_封装、继承、多态

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

Android studio中如何生成jar包?

文章目录 需求背景目录结构gradle结构makeJar的语法解析 执行makeJar 任务拿到jar包 需求背景 别部门做C语言开发的同学开发了一个库,需要给我们Android端去调用。 我们拿到源码,首先需要做的是通过CMake去把C源码编译链接成动态库。 当然静态库也行&am…

NDIS协议驱动开发指南

文章目录 NDIS协议驱动开发指南1. 技术概览2. NDIS协议驱动2.1 BindAdapterHandlerEx2.2 SendNetBufferListsCompleteHandler2.3 ReceiveNetBufferListsHandler2.4 ProtocolNetPnpEvent 3. NET_BUFFER_LIST4. ndisprot实例5. 总结 NDIS协议驱动开发指南 我们知道,在…

Could not resolve all files for configuration ‘:app:debugCompileClasspath‘.

修改前 修改后 maven {url https://developer.huawei.com/repo/}

3DSEE:AI驱动的3D模型语义搜索引擎

3DSEE (3D SEmantic Engine)是基于 AI 技术的 3D 模型语义搜索引擎,可以自动提取 3D 模型内涵的语义信息并存储入库,以帮助用户使用自然语言或关键字高效地检索 3D 模型。3DSEE 提供完善的二次开发 API,无论使用Java、…

键盘打字盲打练习系列之反复练习——3

一.欢迎来到我的酒馆 盲打,反复练习! 目录 一.欢迎来到我的酒馆二.数字符号键位指法 二.数字符号键位指法 前面的一个章节重点介绍了主键盘区字母键位的指法:基准键位指法、QWERTY字母键位指法、ZXCVBNM字母键位指法。大概练习一天的时间&…

【力扣】240.搜索二维矩阵

题目意思是从该矩阵之中查找出是否有和target一样的值,若有则返回true,无则返回false。这里我用的是java。总共有三种方法,分别是暴力解题法(能过),二分查找法(就是将二维数组拆分成m个二维数组…

2.8寸 ILI9341 TFTLCD 学习移植到STM32F103C8T6

2.8寸 ILI9341 TFTLCD 学习移植到STM32F103C8T6 文章目录 2.8寸 ILI9341 TFTLCD 学习移植到STM32F103C8T6前言第1章 LCD简介1.1 LCD硬件接口介绍 第2章 LCD指令介绍第3章 LCD 8080驱动方式3.1 8080写时序3.2 8080读时序 第4章 LCD 驱动代码部分4.1 修改代码部分4.2 代码工程下载…

【力扣】54. 螺旋矩阵

题解: 这里当然就不能只是通过双循环来解题了,因为会烦死。这道题的关键点在于左右边界的确定,参考官方解题法在这里写出我的解题思路。 首先看图,螺旋且顺时针,所以我们可以先遍历从左至右的,上边界加一…

[原创][2]探究C#多线程开发细节-“线程的无顺序性“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delph…

【2023全网最全教程】web自动化测试入门

一、自动化测试基本介绍 1 自动化测试概述: 什么是自动化测试?一般说来所有能替代人工测试的方式都属于自动化测试,即通过工具和脚本来模拟人执行用例的过程。 2 自动化测试的作用 减少软件测试时间与成本改进软件质量通过扩大测试覆盖率…

大数据:sql,数据挖掘刷题

大数据:sql 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学&…

Java 线程池到底是如何复用线程的

原理概述 其实 Java 线程池的实现原理很简单,说白了就是一个线程集合 workerSet 和一个阻塞队列 workQueue。 当用户向线程池提交一个任务时,线程池会先将任务放入 workQueue 中。workerSet 中的线程会不断的从 workQueue 中获取线程然后执行。当 work…

U3 词法分析

文章目录 一、定义1、任务2、构造3、输出形式 二、(有穷状态)自动机三、正则文法和状态图四、词法分析程序流程1、单词及内部表示2、词法分析程序需要引用的公共(全局)变量和过程 五、自动机1、DFA(确定的有穷状态自动…