【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.31container_name: mysql-masterenvironment:TZ: Asia/ShanghaiMYSQL_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=1privileged: true
  • slave
version: '3'
services:mysql-slave:image: mysql:8.0.31container_name: mysql-slaveenvironment:TZ: Asia/ShanghaiMYSQL_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=1privileged: 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. 进入主容器,在服务下执行开始监听复制

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

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

相关文章

图形学初识--直线插值算法

文章目录 为什么需要插值算法?插值算法是什么?有哪些常见的插值算法呢?1. 线性插值(Linear Interpolation)2. 多项式插值(Polynomial Interpolation)3. 样条插值(Spline Interpolati…

Blazor 下支持 Azure AD 的多套登录方案

比如上图配置了两套不同的登录方案,各有自己的 TenantId 和 ClientId ,要同时支持他们的登录(其实在同一套 TenantId 和 ClientId 里面配置多个登录账户不就好了,但是......那套登录的管理是在客户自己的Azure AD账户管理下的&…

SpringBoot3 解决NoResourceFoundException: No static resource favicon.ico.异常

SpringBoot3 解决NoResourceFoundException: No static resource favicon.ico.异常 spring boot3项目中浏览器中访问报错找不到favicon.ico,虽然不影响使用,用api工具也可以忽略这个异常,但是防止浏览器访问时出现异常干扰日志,所…

oracle数据库解析过高分析

解析非常高,通过时间模型可以看到解析占比非常高 解析大致可以分为硬解析( hard parse)、软解析( soft parse)和软软解析( soft soft parse)。如,执行一条 SQL 的时候,如…

Google Find My Device:科技守护,安心无忧

在数字化的时代,我们的生活与各种智能设备紧密相连。而 Google Find My Device 便是一款为我们提供安心保障的实用工具。 一、Find My Decice Netword的定义 谷歌的Find My Device Netword旨在通过利用Android设备的众包网络的力量,帮助用户安全的定位所…

STM32F4_HAL控制GPIO输出——跑马灯实验

1、GPIO工作模式 1.1 端口输入数据寄存器(IDR) 1.2 端口输出数据寄存器(ODR) 1.3 端口置位/复位寄存器(BSRR) 为什么有了 ODR 寄存器,还要这个 BSRR 寄存器呢?我们先看看 BSRR 的寄…

23种设计模式(持续输出中)

一.设计模式的作用 设计模式是软件从业人员长期总结出来用于解决特定问题的通用性框架,它提高了代码的可维护性、可扩展性、可读性以及复用性。 二.设计模式 1.工厂模式 工厂模式提供了创建对象的接口,而无需制定创建对象的具体类,工厂类…

华为OD机试 - 剩余银饰的重量(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

【Python】 如何对对象列表进行排序,有点意思

在Python中,我们经常需要对对象列表进行排序,这可以通过多种方式实现。当对象是一个自定义类实例时,排序通常基于对象的一个或多个属性。Python提供了内置的sorted()函数和列表的sort()方法,它们都允许我们指定一个排序的关键字。…

iPhone彻底删除的照片怎么恢复?专业技巧助您解忧

在使用iPhone的过程中,我们可能会因为误操作或其他原因将一些重要的照片彻底删除。然而,即使照片被彻底删除,也并不意味着它们就永远消失了,它们只是被打上了“可覆盖的空间”的标签。 在照片被新数据覆盖之前,我们仍…

C语言学习【C控制语句:循环】

C语言学习【C控制语句:循环】 while循环 /* 根据用户键入的整数求和 */#include "stdio.h"int main(void) {long num;long sum 0L; /* 把sum初始化为0 */int status;printf("Please enter an integer to be summed");printf(&quo…

基于微信小程序的校园捐赠系统的设计与实现

校园捐赠系统是一种便捷的平台,为校园内的各种慈善活动提供支持和便利。通过该系统,学生、教职员工和校友可以方便地进行捐赠,并了解到相关的项目信息和捐助情况。本文将介绍一个基于Java后端和MySQL数据库的校园捐赠系统的设计与实现。 技术…

快速开发 Chrome插件

什么是 Chrome 插件 Chrome 插件程序是一种用于增强 Google Chrome 浏览器功能的小型软件应用程序。它们可以帮助用户自定义浏览体验、添加新功能、集成外部服务以及自动化任务等。扩展程序使用 HTML、CSS 和 JavaScript 编写,利用 Chrome 提供的 API 来与浏览器及…

18.分布式监控zabbix-proxy

zabbix proxy 使用场景: 监控远程区域设备监控本地网络不稳定区域当 zabbix 监控上千设备时,使用它来减轻 server 的压力简化分布式监控的维护 环境规划: zabbix-server:外网IP地址192.168.111.66 zabbix-proxy:外网IP地址192.168.111.11 内网IP地址…

AI工具推荐:提升工作效率与生活质量

有哪些好用,且国内可用的AI工具? 副本 在AI大发展的年代,还有人在工作、生活中没有使用过AI吗? 今天为大家推荐几款国内可用、好用的AI工具,不论是自媒体文案写作、打工人汇报PPT、还是论文、公文写作,总…

设计系统采购与安装:乙级资质申请的技术准备

在设计系统采购与安装方面,为乙级资质申请所做的技术准备涉及多个方面。以下是一些关键的技术准备事项: 明确技术需求:首先,需要明确乙级资质申请所需的技术系统类型和规格。这可能包括但不限于设计软件、工程管理系统、项目管理系…

【Linux】之【Get√】查看linux CPU 架构 ---- amd64、x86、x86_64、arm64

关于Linux软件下载时:amd64、x86、x86_64、arm64 的说明 archuanme -alscpu

【设计模式深度剖析】【2】【创建型】【工厂方法模式】

👈️上一篇:单例模式 | 下一篇:抽象工厂模式👉️ 目录 工厂方法模式概览工厂方法模式的定义英文原话直译 工厂方法模式的4个角色抽象工厂(Creator)角色具体工厂(Concrete Creator)角色抽象产品&#x…

关于光照模型

关于光照模型 早期学习笔记,转载自早期Excel。 存在大量格式错误、可读性非常低,建议等待作者修复后阅读、或者作为查找性材料使用。 中文名英文名/缩写说明长什么样兰伯特光照模型Lambert Lighting1.兰伯特反射(Lambert)是最常见的一种漫反射&#x…

iptables防火墙【其二 实验篇】

保存&#xff0c;还原规则 防火墙规则的备份和还原 导出&#xff08;备份&#xff09;所有表的规则 iptables-save > /opt/ipt.txt 导入&#xff08;还原&#xff09;规则 iptables-restore < /opt/ipt.txt 将iptables规则文件保存在 /etc/sysconfig/iptables 中&#xf…