使用Docker搭建MySQL主从复制(一主一从)

news2024/12/26 21:10:00

Docker安装MySQL

docker pull mysql:5.7
docker images mysql

在这里插入图片描述

安装步骤

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

docker run -p 3307:3306 --name mysql-master -v /usr/local/docker/mysql5.7/data/mysql-master/logs:/var/log/mysql -v /usr/local/docker/mysql5.7/data/mysql-master/data:/var/lib/mysql -v /usr/local/docker/mysql5.7/data/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

2.进入 /usr/local/docker/mysql5.7/data/mysql-master/conf 目录下新建 my.cnf 文件,文件内容如下

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
#设置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.改完配置后重启mysql-master实例,重启后查看容器状态

docker restart mysql-master
docker ps

4.进入mysql-master容器,进入mysql服务

docker exec -it mysql-master bash
mysql -uroot -p123456

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

CREATE USER 'slave'@'%'IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.*TO'slave'@'%';

6.新建从服务器实例3308

docker run -p 3308:3306 --name mysql-slave -v /usr/local/docker/mysql5.7/data/mysql-slave/logs:/var/log/mysql -v /usr/local/docker/mysql5.7/data/mysql-slave/data:/var/lib/mysql -v /usr/local/docker/mysql5.7/data/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

7.进入 /usr/local/docker/mysql5.7/data/mysql-slave/conf 目录下新建 my.cnf 文件,文件内容如下

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
#设置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.改完配置后重启mysql-slave实例

docker restart mysql-slave

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

show master status;

在这里插入图片描述

10.进入mysql-slave容器

docker exec -it mysql-slave bash
mysql -uroot -p123456

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

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

change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;

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

show slave status \G;

在这里插入图片描述

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

start slave;

14.查看从数据库状态

show slave status \G;

在这里插入图片描述

15.主从复制测试

主机新建库、使用库、新建表、写入数据
从句使用库、查询记录

CREATE DATABASE db1;

USE db1;

CREATE TABLE t1(id int, name varchar(20));

INSERT INTO t1 VALUE (1, '李白');
INSERT INTO t1 VALUE (2, 'bai_qi');

SELECT * FROM t1;

在这里插入图片描述

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

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

相关文章

Java # 类加载子系统

一、概述 1、 类加载器子系统负责从文件系统或者网络中加载.Class文件 2、classloader只负责类的加载,至于他是否能够运行由执行引擎来决定 3、加载的类的信息会存放在方法区(元空间)中 二、加载过程 ​​​​​​​ 1、加载阶段 1、通…

Docker Desktop - WSL kernel version too low

win10命令行运行 wsl --update 如果报启动docker还是报网络连接错误,命令行执行以下命令并重启 netsh winsock reset

PackageNotFoundError: No package metadata was found for bitsandbytes解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

ESLint是什么?

ESLint 介绍 ESLint 是一款插件,主要用来检测编写的( JavaScript )代码是否符合规范。当然在一个团队中也会自定义一些规范条件。另外正常情况下我们不需要单独安装 ESLint 去使用,这里只是为了做演示。例如 vue-cli 脚手架搭建的…

CSS自学框架之表单

首先我们看一下表单样式,下面共有5张截图 一、CSS代码 /*表单*/fieldset{border: none;margin-bottom: 2em;}fieldset > *{ margin-bottom: 1em }fieldset:last-child{ margin-bottom: 0 }fieldset legend{ margin: 0 0 1em }/* legend标签是CSS中用于定义…

邀请函|澎峰科技邀您参加CCF HPC China2023

一年一度的全球超算盛会! 以“算力互联智领未来”为主题的第十九届全国高性能计算学术年会(CCF HPC China 2023)将于8月24-26日(展览23-25日)在青岛红岛国际会议展览中心举办。 九大院士领衔 打造顶级超算盛会 力邀…

9 个值得推荐的 VUE3 UI 框架

本文推荐几个比较流行的 VUE3 UI 框架,同时提供出色的开发人员体验,合理利用,又或者学习借鉴都是不错的选择,排名不分先后。 Ant Design Vue Ant Design Vue 是一个非常成熟的框架,使用 Ant Design Vue 创建用户界面…

XUbuntu22.04之快速切换Terminal与Chromium窗口(一百八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

前沿分享-通过经皮神经刺激来治疗糖尿病神经性疼痛

经皮神经电刺激(PENS)设备用于对糖尿病周围神经病变引起的慢性、顽固性疼痛进行多次治疗。 放在耳朵上的这种可穿戴设备在几天内持续提供低水平的脉冲电流。 这是一种安全有效的非麻醉性替代治疗慢性疼痛的方法。还有一张设备放在糖足上的照片&#xff0…

Midjourney Prompt 提示词速查表 v5.2

Midjourney 最新的版本更新正不断推出令人兴奋的新功能。这虽然不断扩展了我们的AI绘图工具箱,但有时也会让我们难以掌握所有实际可以使用的功能和参数。 针对此问题, 小编整理了 "Midjourney Prompt 提示词速查表",这是一个非常方便的 Midjo…

Java Vue Uniapp MES生产执行管理系统

本MES系统是一款B/S结构、通用的生产执行管理系统,功能强大! 系统基于多年离散智造行业的业务经验组建,主要目的是为国内离散制造业的中小企业提供一个专业化、通用性、低成本的MES系统解决方案。 联系作者获取

[NDK]从Opengles到Vulkan-基础篇(10)-混合

关于绘制调用的流程 我们可以看到整个流程步骤 1 光栅化2 裁剪测试3 多重采样4 深度测试5 模板测试6 混合7 抖动8 输出帧数据 这一节会涉及到颜色混合。 关于混合 颜色混合的应用:混合可以应用在原有的画面的基础上,添加头像,添加其他遮罩贴图这些内容时使用。 混合其实,…

mysql主从复制搭建(一主一从)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言MySQL复制过程分为三部: 一、准备工作二、配置>主库Master三、配置>从库SlaveSlave_IO_Running: YesSlave_SQL_Running: Yes 四、测试至此&am…

学习笔记整理-BOM-01-基础知识

一、 BOM常用对象 BOM(Browser Object Model,浏览器对象模型)是JS与浏览器窗口交互的接口。一些与浏览器改变尺寸、滚动条滚动相关的特效,都要借助BOM技术。 1. Window对象 window对象是当前JS脚本运行所处的窗口,而这…

最新Burp Suite入门技术

点击星标,即时接收最新推文 本文选自《web安全攻防渗透测试实战指南(第2版)》 五折购买链接:u.jd.com/3ibjeF6 Burp Suite的安装 Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地…

word 应用 打不开 显示一直是正在启动中

word打开来显示一直正在启动中,其他调用word的应用也打不开,网上查了下以后进程关闭spoolsv.exe,就可以正常打开word了

Python学习笔记_基础篇(三)_数据类型之列表

一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list (元素的集合) 列表用[] 元祖:tuple 元祖用() 字典:dict 注&a…

中电金信:技术实践|Flink多线程实现异构集群的动态负载均衡

导语:Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。本文主要从实际案例入手并结合作者的实践经验,向各位读者分享当应用场景中异构集群无法做到负载均衡时,如何通过Flink的自定义多线程来实现异…

LangChain入门:构建LLM驱动的应用程序的初学者指南

LangChain & DemoGPT 一、介绍 你有没有想过如何使用大型语言模型(LLM)构建强大的应用程序?或者,也许您正在寻找一种简化的方式来开发这些应用程序?那么你来对地方了!本指南将向您介绍LangChain&#x…

Jquery 复选框点击生成标签 源代码

html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>服务资源管理</title><link rel"stylesheet" type"text/css" href"../lib/layui/css/layui.css" /><link rel"st…