Docker -- 部署Mysql主从服务

news2024/11/8 19:31:47

以下是配置一主两从的Mysql服务的具体流程。

文章目录

    • 创建用于挂载的目录
    • 修改cnf配置
    • 拉取mysql服务镜像
    • 自定义docker网络
    • 启动容器
    • 主库配置
      • 查看主库状态
      • 创建从库备份用户
    • 从库配置
      • 修改Master信息
      • 启动slave服务
      • 查看slave服务状态是否正常

创建用于挂载的目录

保证数据的持久化,防止容器重启后数据丢失

  • 主节点
    /tools/docker-mysql/master/data
    /tools/docker-mysql/master/conf
    /tools/docker-mysql/master/logs
    
  • 从一
    /tools/docker-mysql/slave1/data
    /tools/docker-mysql/slave1/conf
    /tools/docker-mysql/slave1/logs
    
  • 从二
    /tools/docker-mysql/slave2/data
    /tools/docker-mysql/slave2/conf
    /tools/docker-mysql/slave2/logs
    

修改cnf配置

  • 主节点
    vi  /tools/docker-mysql/master/conf/master.cnf
    [mysqld]
    log-bin=mysql-bin
    server-id=100
    
  • 从一
    vi  /tools/docker-mysql/slave1/conf/slave1.cnf
    [mysqld]
    log-bin=mysql-bin
    server-id=101
    
  • 从二
    vi  /tools/docker-mysql/slave2/conf/slave2.cnf
    [mysqld]
    log-bin=mysql-bin
    server-id=102
    

拉取mysql服务镜像

这里拉取的是最新的镜像

docker pull mysql/mysql-server:latest

自定义docker网络

用来为容器指定IP时,提供可用的IP段。

docker network create --subnet=172.18.0.0/24 dockernet

启动容器

  • 主节点
    docker run \
    -itd \
    -v /tools/docker-mysql/master/conf:/etc/mysql/conf.d \
    -v /tools/docker-mysql/master/data:/var/lib/mysql \
    -v /tools/docker-mysql/master/logs:/var/log/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -p 3311:3306 \
    --name mysql-master \
    --restart=always \
    --network dockernet \
    --ip=172.18.0.2 \
    -d mysql:latest
    
  • 从一
    docker run \
    -itd \
    -v /tools/docker-mysql/slave1/conf:/etc/mysql/conf.d \
    -v /tools/docker-mysql/slave1/data:/var/lib/mysql \
    -v /tools/docker-mysql/slave1/logs:/var/log/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -p 3312:3306 \
    --name mysql-slave1\
    --restart=always \
    --network dockernet \
    --ip=172.18.0.3 \
    -d mysql:latest
    
  • 从二
    docker run \
    -itd \
    -v /tools/docker-mysql/slave2/conf:/etc/mysql/conf.d \
    -v /tools/docker-mysql/slave2/data:/var/lib/mysql \
    -v /tools/docker-mysql/slave2/logs:/var/log/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -p 3313:3306 \
    --name mysql-slave2\
    --restart=always \
    --network dockernet \
    --ip=172.18.0.4 \
    -d mysql:latest
    

主库配置

查看主库状态

docker exec -it 主库容器ID /bin/bash

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

创建从库备份用户

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

create user 'backup'@'%' identified WITH mysql_native_password by '123456';

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' ;

从库配置

修改Master信息

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

// mysql-bin.000003 是我们在主库查看状态时查找到的 File 信息
// 157 是我们在主库查看状态时查找到的 Position 信息
change master to master_host='172.18.0.2',master_user='backup',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=157;

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' ;

启动slave服务

start slave;

查看slave服务状态是否正常

show slave status;

以下状态为 Yes 表示运行正常。
在这里插入图片描述
运行异常时,可以查看 Last_Error 中的异常信息。

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

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

相关文章

Databend 内幕大揭秘第二弹 - Data Source

本篇是 minibend 系列的第二期,将会介绍 Data Source 部分的设计与实现,当然,由于是刚开始涉及到编程的部分,也会提到包括 类型系统 和 错误处理 之类的一些额外内容。 前排指路视频和 PPT 地址 视频(哔哩哔哩&#xf…

23种设计模式之趣味学习篇

23种设计模式之趣味学习篇1. 设计模式概述1.1 什么是设计模式1.2 设计模式的好处2. 设计原则分类3. 详解3.1 单一职责原则3.2 开闭原则3.3 里氏代换原则3.4 依赖倒转原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特法则4. Awakening1. 设计模式概述 我们的软件开发技术也包括一…

【1669. 合并两个链表】

来源:力扣(LeetCode) 描述: 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点…

【算法竞赛学习】csoj:寒假第二场

文章目录前言红包接龙最后一班勇者兔兔兔爱消除吃席兔知识拓展std::greater | 堆优化参考iota函数参考并查集参考sort自定义函数参考树形dp参考使用auto时控制分隔符前言 由于本人菜鸡,所以大多都是使用出题人的代码和思路 如有侵权,麻烦联系up删帖&…

pytorch_sparse教程

pytorch_sparse教程 Coalesce torch_sparse.coalesce(index, value, m, n, op"add") -> (torch.LongTensor, torch.Tensor) 逐行排序index并删除重复项。通过将重复项映射到一起来删除重复项。对于映射,可以使用任何一种torch_scatter操作。 参数 i…

来回修改的投标文件怎么做版本管理?1个工具搞定!

投标是公司市场活动中非常重要的事情,每次投标文件的编写像打仗一样,要修改很多次,不保存每个版本就只能在需要的时候后悔,多个文件、多人编写、多种方案要再最后的几个小时才能定,每次都是弄得鸡飞狗跳的,…

Python卷积神经网络CNN

Python卷积神经网络CNN 提示:前言 Python卷积神经网络CNN 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录Python卷积神经网络CNN前言一、导入包二、介绍三、卷积过滤四、权重五、展示特征图六、用 ReLU…

一文快速入门哈希表

目录一、基本概念1.1 哈希冲突二、整数哈希2.1 哈希函数的设计2.2 解决哈希冲突2.2.1 开放寻址法2.2.2 拉链法三、字符串哈希3.1 应用:重复的DNA序列References一、基本概念 哈希表又称散列表,一种以「key-value」形式存储数据的数据结构。所谓以「key-…

RA4M2开发(1)----使用串口进行打印

为什么使用Cube进行FreeRTOS配置 本篇文章主要介绍如何使用e2studio对瑞萨RA4M2开发板进行串口打印配置。 硬件准备 首先需要准备一个开发板,这里我准备的是芯片型号R7FAM2AD3CFP的开发板: 新建工程 工程模板 保存工程路径 芯片配置 本文中使用R7F…

【GlobalMapper精品教程】043:图片自动矢量化

本文讲解Globalmapper自动矢量化教程,配套案例数据。 参考教程:ArcGIS实验教程——实验三十三:ArcScan自动矢量化完整案例教程 文章目录 一、加载实验数据二、启动矢量化工具三、矢量化栅格四、矢量化结果五、注意事项一、加载实验数据 打开配套实验数据包中的data043.rar…

参数检验与非参数检验

综述 假设检验 参数检验 T检验 T检验是通过比较不同数据的均值,研究两组数据之间是否存在显著差异。 单总体检验:单总体t检验是检验一个样本平均数与一个已知的总体平均数的差异是否显著。当总体分布是正态分布,如总体标准差未知且样本容量小…

算法——垃圾回收算法——标记清除

标记清除简介算法过程1.标记阶段2.清除阶段3.缺点3.1内存碎片化简介 标记清除算法简介。 文章中使用的动画网站地址: 限 pc: 标记清除动画 :http://www.donghuasuanfa.com/platform/portal?pcmark-sweep 算法一览表:https://blog.csdn.net…

23种设计模式之面向对象的设计原则

23种设计模式之面向对象的设计原则1. 设计模式概述1.1 什么是设计模式1.2 设计模式的好处2. 设计原则分类3. 详解3.1 单一职责原则3.2 开闭原则3.3 里氏代换原则3.4 依赖倒转原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特法则4. Awakening1. 设计模式概述 我们的软件开发技术…

18《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限,如果错误欢迎批评指正。 第四章:Protein Binding Leads to Biological Actions (蛋白质的结合会产生生物作用) -偶联结合是调控、信号传…

【Java基础】-【Spring Boot】-【Spring】

文章目录Spring BootSpring Boot的启动流程Spring Boot项目是如何导入包的?Spring Boot自动装配的过程Spring Boot注解Spring的核心Spring AOP既然有没有接口都可以用CGLIB,为什么Spring还要使用JDK动态代理?AOP的应用场景Spring AOP不能对哪…

图论(7)负环和差分约束

一、概念 给定一张有向图,如果存在一个环,环上各边权值之和是负数,则称这个环为负环。 判断方式:bellman-ford算法和spfa算法。抽屉原理 这里只介绍spfa。设立cnt数组表示从1到x的最短路径包含的边数,如果cnt[i]大于…

JZ65 不用加减乘除做加法

【答案解析】:十进制相加思想: 1507 , 先计算不考虑进位的相加结果 12 (因为 57 的不考虑进位的结果是 2 ,遇 10 进位嘛),然后计算进位 57 进位是 10 ,则 10 与 12 再次相加&#xf…

2023年山东最新交安安全员考试题库及答案

百分百题库提供交安安全员考试试题、交安安全员考试真题、交安安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 35.建设行政主管部门或者其他有关部门可以将施工现场的监督检查委托给建设工程()…

Visual Studio 17.5: 有关 C++ 的新特性预览

Visual Studio 17.5 在 C 代码编辑方面带来了一些新的改进,这些改进包括:C 代码中的大括号对着色,拼写检查,多合一搜索,重新设计的成员列表以及宏展开改进等。上述这些改进都融入到了 Visual Studio 的最新预览版本 17…

CTF-Horizontall HackTheBox渗透测试(一)

** 0X01 简介** #Horizontall#难度是一个相对“简单”的 CTF Linux盒子。该CTF环境涵盖了通过利用Strapi RCE 漏洞并使用内部应用程序 (Laravel) 将隧道传输到本地计算机,并且在 Laravel v 7.4.18 上运行 漏洞PoC最来提升权限拿到root用户权限。 ** 1.1信息收集**…