第十章 MySQL主从复制搭建Docker版

ops/2024/12/22 1:52:39/

目录

1.新建主服务器容器示例3307 

mysql-master%2Fconf%E7%9B%AE%E5%BD%95%E4%B8%8B%E5%88%9B%E5%BB%BAmy.cnf%E9%85%8D%E7%BD%AE%C2%A0-toc" style="margin-left:0px;">2. 进入/mydata/mysql-master/conf目录下创建my.cnf配置 

3.修改完配置后重启master实例

mysql-master%E5%AE%B9%E5%99%A8%C2%A0-toc" style="margin-left:0px;">4.进入mysql-master容器 

5.master容器实例内创建数据同步的用户 

6.新建从服务器容器实例3308

mysql-slave%2Fconf%E7%9B%AE%E5%BD%95%E4%B8%8B%E6%96%B0%E5%BB%BAmy.cnf-toc" style="margin-left:0px;">7.进入/mydata/mysql-slave/conf目录下新建my.cnf

8.修改完配置后重启slave实例

9.在主数据库中查看主从同步状态

mysql-slave%E5%AE%B9%E5%99%A8-toc" style="margin-left:0px;">10.进入mysql-slave容器

11.在从数据库中配置主从复制

12.在从数据库中查看主从同步状态

13.在从数据库中开启主从同步

14.查看从数据库状态发现已经同步

15.主从复制测试 


1.新建主服务器容器示例3307 

docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

mysql-master%2Fconf%E7%9B%AE%E5%BD%95%E4%B8%8B%E5%88%9B%E5%BB%BAmy.cnf%E9%85%8D%E7%BD%AE%C2%A0">2. 进入/mydata/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

3.修改完配置后重启master实例

docker restart mysql-master

mysql-master%E5%AE%B9%E5%99%A8%C2%A0">4.进入mysql-master容器 

docker exec -it mysql-master

5.master容器实例内创建数据同步的用户 

 

这里创建了一个用户名为USER,密码为123456的用户,授予其在所有数据库的所有表上复制从机的权限。%表示该用户可以从任何主机连接到MySQL服务器。

注意:出于安全考虑,应该为slave用户提供最低必要权限,而不是使用GRANT REPLICATION SLAVE,可以仅授予SELECT权限来允许slave用户读取主数据库中的数据。

6.新建从服务器容器实例3308

docker run -p 3308:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

mysql-slave%2Fconf%E7%9B%AE%E5%BD%95%E4%B8%8B%E6%96%B0%E5%BB%BAmy.cnf">7.进入/mydata/mysql-slave/conf目录下新建my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能
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

8.修改完配置后重启slave实例

9.在主数据库中查看主从同步状态

mysql-slave%E5%AE%B9%E5%99%A8">10.进入mysql-slave容器

11.在从数据库中配置主从复制

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

master_host:主数据库的IP地址

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

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

master_port:主数据库的运行端口

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

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

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

12.在从数据库中查看主从同步状态

13.在从数据库中开启主从同步

start slave;

14.查看从数据库状态发现已经同步

Slave_IO_Running:YES

Slave_SQL_Running:YES

表示已经开启同步状态,两个容器已经互通

15.主从复制测试 

数据库创建数据库、表并插入数据,从数据库会实时展示。

create database jgs;
use jgs;
create table t1(id int, mb varchar(100));
insert into t1 values(1, '只要当下坚定信念和目标,持续地付诸努力,结果一定不会差!');
select * from t1;


http://www.ppmy.cn/ops/119678.html

相关文章

汽车革命下半场AI先锋:广汽为新“智”汽车装配大模型“底盘”

汽车革命的上半场是电动化,下半场是智能化,这是全球汽车产业普遍认同的观点。当前,我国汽车产业已经在电动化上半场取得了显著成效,在下半场智能化的全球战场能否胜出,关键看车企的创新意愿和研发实力。 在2024年9月1…

未解决的题目1.leetcode.2306.公司命名

目录 题目 怎么删除字符串的首字母 1.使用 string::erase 哈希中的碰撞冲突 3.1 线性探测法 3.2 链地址法 3.3 再哈希法 3.4 … 哈希函数的设计 4.1 更大的哈希表 4.2 更好的哈希运算 题目 给你一个字符串数组 ideas 表示在公司命名过程中使用的名字列表。公司命名…

滚雪球学Oracle[7.1讲]:Oracle云数据库

全文目录: 前言0. 上期回顾1. Oracle云数据库简介1.1 Oracle Cloud Infrastructure(OCI)的详细解析1.2 云数据库的架构与服务模型1.3 云数据库的安全性与合规性管理 2. 云数据库的部署与管理2.1 OCI上的自动化数据库部署与扩展2.2 使用OCI控制…

嵌入式项目:STM32平衡车详解 (基础知识篇) (基于STM32F103C8T6)

前言: 本文是基于B站草履虫编写的平衡车相关内容,包括模块和基础知识,结合代码进行讲解,将知识进行汇总 (由于本篇内容较长,请结合目录使用) 注:基于开源精神,本文仅供学习参考 目…

Qt-QTreeWidget多元素控件(38)

目录 描述 QTreeWidget 方法 QTreeWidget 信号 QTreeWidgetItem 属性 QTreeWidgetItem 方法 控制 使用 界面操作 代码操作 总结 描述 使⽤ QTreeWidget 表⽰⼀个树形控件.⾥⾯的每个元素,都是⼀个 QTreeWidgetItem ,每个 QTreeWidgetItem 可以包含多个⽂本和图标,每…

【SpringBoot详细教程】-08-MybatisPlus详细教程以及SpringBoot整合Mybatis-plus【持续更新】

目录 🌲 MyBatis Plus 简介 🌾入门案例 🌾 MP 简介 🌲 MP 的CRUD 🌾 新增 🌾 删除 🌾 修改在进行 🌾 根据ID查询 🌾 查询所有 🌲 分页功能 🌾 设置分页参数 🌾 设置分页拦截器 🌲 优化启动 🌾 取消mbatisPlusBanner 🌾 取消Sprin…

基于微信小程序爱心领养小程序设计与实现(源码+参考文档+定制开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

微服务 OpenFeign 解析部署使用全流程

目录 1、什么是OpenFeign 1、Feign是什么??http请求 2、OpenFeign是什么 3、Feign和openFeign有什么区别 2、应用 1、 需要开启nacos 和redis 2、准备工作 【1.对springsession做改动】 【2.对springsession-1做改动】 3、实现http请求管理 4、…