【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 的时候,如…

星型模型和雪花模型的区别

星型模型和雪花模型都是数据仓库设计中常用的维度建模方法,它们之间的主要区别在于数据组织结构、数据冗余度、查询效率、可扩展性和正规化程度等方面: 星型模型 结构特点:星型模型中,一个中心的事实表连接多个维度表&#xff0…

在电脑中,Apple Mobile Device Support程序是什么?

Apple Mobile Device Support 是一项关键的后台服务,它为 Windows 用户提供了与苹果 iOS 设备(包括 iPhone、iPad 和 iPod)顺畅互动的能力。这项服务的核心功能是为iTunes软件提供必要的支持,使得用户能够将他们的移动设备与电脑连…

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

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

HTML5 历史、地理位置处理、全屏处理

目录 历史HistoryAPI地理位置处理GeolocationAPI全屏处理FullscreenAPIHistoryAPI window.history 对象 window.history 是浏览器提供的一个内置对象,它提供了对浏览器历史记录的访问和操作能力。通过这个对象,开发者可以实现无刷新页面跳转、添加新的浏览历史条目等,从而提…

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

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

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

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

hive表在HDFS的每个文件的大小加大

配置参数: spark.hadoop.hive.exec.orc.default.stripe.size78643200 spark.hadoop.orc.stripe.size78643200 spark.hadoopRDD.targetBytesInPartition78643200 spark.hadoop.hive.exec.dynamic.partition.modenonstrict spark.sql.sources.partitionOverwriteMode…

华为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数据库的校园捐赠系统的设计与实现。 技术…

Java日期Date和LocalDateTime的工具类

Date package com.qiangesoft.utils.date;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 日期工具类** author lq* date 2024-05-23*/ public class DateUtil {public static final String[] CHINESE_WEEK_DAY new String[]{&q…

Excel 公式积累

1.获取当前位置的左侧单元格 引用当前单元格左侧的第一个单元格:OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1) ROW()返回当前单元格的行号,COLUMN()返回当前单元格的列号。 ADDRESS函数可以根据指定行号和列号获得工作表中的某个单元格的地址。例如…

go全部版本下载目录

linux安装教程: Download and install - The Go Programming Language rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gzexport PATH$PATH:/usr/local/go/bin go version 全部版本下载目录: All releases - Th…

鸿蒙本机通信

demo地址 https://github.com/MartinLi89/WanHarmony 目前只学到一部分,不正确的地方,还望大家指正,我会及时更新,谢谢,欢迎评论留言 线程内通信,线程间通信,进程间通信 本篇帖子中描述的比较宽…