【mysql】【docker】mysql8-互为主从

🌸🌸 Linux/docker-compose/mysql8 互为主从 优雅部署 🌸🌸

  • 记录下两台Linuxmysql需要热备份,互为主从,后期加上keepalived实现高可用切换

  • 参考博客:答 案

🌸 一、准备文件

在这里插入图片描述

  • 这里有个问题,新版mysql配置文件位置可能有变动,可以安装下进入看下位置,确认下
    • 我这里是/etc/mysql/conf.d/my.cnf,编写docker-compose时不要写错
    • 注意8.0.31my.cnf,有些博主写的mysql.confmysql读取不了
    • 后面启动后查看是否配置成功,若没有,则说明没有成功
      在这里插入图片描述
  1. master(看下注释,不要盲目复制,不然后面更改要重启,麻烦)
[mysqld]
# 设置服务器唯一标识号
server-id=1
# 启用二进制日志,后面是名称,随意更改
log-bin=master-bin
# 指定需要复制的数据库 为空则所有数据库都复制
# binlog-do-db=
# 指定需要忽略的数据库 
binlog-ignore-db=ttt
# 指定二进制日志的格式为行级别
binlog-format=row
# 启用 GTID 模式
gtid-mode=ON
# 强制 GTID 一致性检查
enforce-gtid-consistency=ON
  1. slave(看下注释,不要盲目复制,不然后面更改要重启,麻烦)
[mysqld]
# 设置服务器唯一标识号
server-id=2
# 启用二进制日志,后面是名称,随意更改
log-bin=slave-bin
# 指定需要复制的数据库 为空则所有数据库都复制
# binlog-do-db=
# 指定需要复制的数据库
binlog-ignore-db=ttt
# 指定二进制日志的格式为行级别
binlog-format=row
# 启用 GTID 模式
gtid-mode=ON
# 强制 GTID 一致性检查
enforce-gtid-consistency=ON
  1. docker-compose(注意这里不要用tab进行格式化,请使用空格)
  • master
version: '3'
services:
  mysql-master:
    image: mysql:8.0.31
    container_name: mysql-master
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456  # MySQL root 用户的密码
      MYSQL_DATABASE: ttt  # 要创建的数据库名称
    ports:
      - "3308:3306"  # 映射到从服务器的端口
    volumes:
      - ./mysql-master/data:/var/lib/mysql  # 挂载数据目录
      - ./mysql-master/log:/var/log/mysql  # 挂载日志目录
      - ./mysql-master/config/:/etc/mysql/conf.d/  # 挂载从服务器的配置文件,注意版本,可能不同
    command:
      # 主服务器的命令参数,配置文件写了,这里可以不写,若配置文件没有挂载成功,这里可以写一下
      # --server-id=1 
      # --log-bin=master-bin 
      # --binlog-ignore-db=ttt 
      # --binlog-format=row 
      # --gtid-mode=ON 
      # --enforce-gtid-consistency=ON  

      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    privileged: true
  • slave
version: '3'
services:
  mysql-slave:
    image: mysql:8.0.31
    container_name: mysql-slave
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456  # MySQL root 用户的密码
      MYSQL_DATABASE: ttt  # 要创建的数据库名称
    ports:
      - "3310:3306"  # 映射到从服务器的端口
    volumes:
      - ./mysql-slave/data:/var/lib/mysql  # 挂载数据目录
      - ./mysql-slave/log:/var/log/mysql  # 挂载日志目录
      - ./mysql-slave/config/:/etc/mysql/conf.d/  # 挂载从服务器的配置文件,注意版本,可能不同
    command: 
      # 主服务器的命令参数,配置文件写了,这里可以不写,若配置文件没有挂载成功,这里可以写一下
      # --server-id=3
      # --log-bin=slave-bin 
      # --binlog-ignore-db=ttt 
      # --binlog-format=row 
      # --gtid-mode=ON 
      # --enforce-gtid-consistency=ON  

      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    privileged: true

🌸 二、启动容器

  • mysql文件夹下执行
    • docker-compose up -d
    • 也可指定运行哪一个docker-compose up -d mysql-master mysql-slave
    • 看下配置文件有没有挂载成功,以下说明成功,若没有挂载成功,可尝试在docker-composecommand加配置,一样的效果,都是需要重启的,command是启动时设置配置项,文件中已有注释。
      在这里插入图片描述

🌸 三、配置主从信息

  • 主要两步
  1. 进入主容器,获取主服务器状态信息
#进入容器内部
docker-compose exec mysql-master bash
 
#输入用户密码
mysql -u root -p
 
#为了避免从服务复制出现权限不足的情况需要执行
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
 
# 查看状态
SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+------------------------------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
+-------------------+----------+--------------+------------------+------------------------------------------+
| master-bin.000003 |      197 |              | ttt              | d732688d-197d-11ef-b514-0242ac120003:1-6 |
+-------------------+----------+--------------+------------------+------------------------------------------+
  1. 进入从容器,在服务下执行开始监听复制
#进入容器
docker-compose exec mysql-slave bash
 
#输入用户密码
mysql -u root -p
 
#配置从服务器复制
CHANGE MASTER TO MASTER_HOST='192.168.1.xxx', MASTER_USER='root', MASTER_PASSWORD='123456',MASTER_PORT=3310, MASTER_LOG_FILE='master-bin.000003', MASTER_LOG_POS=197;

# 开启复制
START SLAVE;

#查看主从配置状态
SHOW REPLICA STATUS\G;
  • 以下为成功
    在这里插入图片描述

🌸 四、配置互为主从

  • 第三步反过来
  1. 进入从容器,获取主服务器状态信息
  2. 进入主容器,在服务下执行开始监听复制

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文了解基于ITIL的运维管理体系框架

本文来自腾讯蓝鲸智云社区用户:CanWay ITIL(Information Technology Infrastructure Library)是全球最广泛使用的 IT 服务管理方法,旨在帮助组织充分利用其技术基础设施和云服务来实现增长和转型。优化IT运维,作为企业…

k8s node NotReady后会发生什么?

K8s 是一种强大的容器编排和管理平台,能够高效地调度、管理和监控容器化应用程序;其本身使用声明式语义管理着集群内所有资源模型、应用程序、存储、网络等多种资源,Node 本身又属于 K8s 计算资源,上面承载运行着各种类型的应用程…

141.字符串:重复的字符串(力扣)

题目描述 代码解决 class Solution { public:// 计算字符串s的next数组&#xff0c;用于KMP算法void getNext(int *next, const string& s){int j 0; // j是前缀的长度next[0] 0; // 初始化next数组&#xff0c;第一个字符的next值为0for (int i 1; i < s.size(); …

TAS5711带EQ和DRC支持2.1声道的20W立体声8V-26V数字输入开环D类数字功放音频放大器

前言 数字功放很难搞&#xff0c;寄存器很多&#xff0c;要配置正确才有声音&#xff0c;要想声音好&#xff0c;要好好调整。 TAS5711出道很多年了&#xff0c;现在仍然在不少功放、音箱中能看到。 TAS5711特征 音频输入/输出 从 18V 电源向 8Q 负载提供 20W 功率 宽 PVDD…

深度学习之Tensorflow卷积神经网络手势识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 手势识别是计算机视觉和人工智能领域的重要应用之一&#xff0c;具有广泛的应用前景&#xff…

常用生物信息学服务器推荐

1、超强性能&#xff0c;AMD 256核心&#xff0c;512线程&#xff0c;2.5TB满通道内存&#xff0c;200T硬盘 CPU&#xff1a;2颗128核心 2.25GHz AMD EPYC 9754 内存&#xff1a;24根96GB DDR5 4800MHz ECC REG 硬盘&#xff1a;1块1TB U.2 SSD系统盘1块15.36TB U.2热数据盘…

2024 年 电工杯(A题)大学生数学建模挑战赛 | 园区微电网风光储协调| 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 CS团队倾注了大量时间和心血&#xff0c;深入挖掘解决方案。通…

pip换源ubuntu

到THU网站上有给定的教程 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ 方法1 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package然后在https://pypi.org/project/nvidia-cublas-cu12/#files 里面搜索你的包名 方法2 python -m pip install --upg…

计算机毕业设计python+django医院住院挂号登记收费系统7ui9s

在该医院信息管理系统中&#xff0c;python技术可以给用户带来极大方便&#xff0c;其主要特点就是可以使用户学习起来方便、快捷&#xff0c;另一方面就是信息储存量也是非常大的&#xff0c;该功能主要被应用为数据库中进行查询和编程。并且该功能的数据应用比较灵活&#xf…

JVM优化之使用Jstack命令查找JVM死锁

JVM优化之使用Jstack命令查找JVM死锁 示例代码 public class DeadLockDemo {private static Object lock1 new Object();private static Object lock2 new Object();public static void main(String[] args) {new Thread(() -> {synchronized (lock1) {try {System.out.p…

新品 | Forge® 1GigE IP67工业相机助力智能农业、食品和饮料行业

近日&#xff0c;51camera的合作伙伴Teledyne FLIR IIS推出Forge 1GigE IP67,它是Forge系列的最新工业相机&#xff0c;旨在在恶劣的工业环境中运行&#xff0c;同时确保高效的生产能力。Forge 1GigE IP67致力于为工厂自动化提供先进成像系统的最新产品。 Forge 1GigE IP67相机…

Spring Cloud整合Sentinel

1、引入依赖 链接: 点击查看依赖关系 父pom <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>Sentinel应用直接引用starter <dependency><groupId&…

IDEA软件和插件安装

安装IDEA版本&#xff1a;IDEA windows 2021.1.3 使用该版本的IDEA&#xff0c;并且安装下面插件后&#xff0c;个人认为非常好用&#xff0c;并且可以不用破解&#xff0c;无限使用企业版&#xff0c;了解具体方法可以留言或私信。 记录几个好用的IDEA插件&#xff0c;后续持…

Linux实验五:进程间通信(一)

目录 一、实验目的二、实验内容三、实验环境四、参考代码五、实验步骤步骤1. 编辑源代码test5.c步骤2. 编译源代码test5.c步骤3. 运行可执行程序test5步骤4. 进一步调试源代码test5.c 六、实验结果七、实验总结 一、实验目的 1、理解Linux进程通信的基本原理和方法&#xff1b…

刷题之从前序遍历与中序遍历序列构造二叉树(leetcode)

从前序遍历与中序遍历序列构造二叉树 前序遍历&#xff1a;中左右 中序遍历&#xff1a;左中右 前序遍历的第一个数必定为根节点&#xff0c;再到中序遍历中找到该数&#xff0c;数的左边是左子树&#xff0c;右边是右子树&#xff0c;进行递归即可。 #include<vector>…

基于微信的家庭理财管理小程序的设计与实现(论文+源码)_kaic

摘 要 随着中国经济的飞速发展&#xff0c;家庭收入不断增高&#xff0c;人们的消费除了简单的维持日常生活之外&#xff0c;还有其他的消费方式&#xff0c;比如旅游、电商购物等&#xff0c;层出不穷的消费方式带给人快乐的同时&#xff0c;也常常让一些人逐渐无法把握住自…

【算法】栈算法——最小栈

题解&#xff1a;最小栈(栈算法) 目录 1.题目2.题解3.总结 1.题目 题目链接&#xff1a;LINK 这个题目题意说的有点绕&#xff0c;说白了让你在常数时间内检索到最小元素就是O(1)时间复杂度下找到栈中最小的元素。 2.题解 思路&#xff1a;这个栈可以内嵌套两个库栈来进行…

了解区块链基础设施,共同构建安全且强大的Sui网络

区块链基础设施的范畴很广&#xff0c;但其核心是那些直接与网络互动的计算机。这些实体通常被称为节点&#xff0c;分为不同的类型&#xff0c;例如维护完整区块链副本的全节点&#xff0c;以及作为共识决定者的验证节点。除了这两种类型之外&#xff0c;还有其他类型的节点&a…

蓝牙(2):BR/EDR的连接过程;查询(发现)=》寻呼(连接)=》安全建立=》认证=》pair成功;类比WiFi连接过程。

4.2.1 BR/EDR 流程&#xff1a; 查询&#xff08;发现&#xff09;》寻呼&#xff08;连接&#xff09;》安全建立》认证》pair成功 4.2.1.1 查询&#xff08;发现&#xff09;流程Inquiry (discovering) 类比WiFi的probe request/response 蓝牙设备使用查询流程来发现附近的…

Solidity的引用类型全解析

引用的本来语意 引用类型&#xff0c;变量本身与变量指向的数据分离&#xff0c;赋值操作是引用拷贝&#xff0c;数据块不受影响通常的面向对象语言中的所有引用类型变量之间的赋值操作&#xff0c;都是引用拷贝这一点在Solidity的引用类型中不再成立&#xff0c;solidity的引…