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

news2025/2/28 20:06:12

🌸🌸 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. 进入主容器,在服务下执行开始监听复制

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

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

相关文章

Ubuntu18.04 OpenSSH升级

升级前版本: rootecs-m2eqyb:/opt# ll total 20912 drwxr-xr-x 2 root root 4096 May 10 16:23 ./ drwxr-xr-x 24 root root 4096 May 10 14:38 ../ -rw-r--r-- 1 root root 1848766 May 10 16:23 openssh-9.7p1.tar.gz -rw-r--r-- 1 root root 18038…

如何快速申请免费单域名SSL证书

申请免费的单域名SSL证书通常涉及以下几个步骤,虽然具体细节可能会根据不同的证书颁发机构(CA)有所差异。以下是通用的申请流程: 1.选择证书颁发机构: 访问提供免费单域名SSL证书的证书颁发机构网站,例如JoySSL等。 2.注册账号…

「51媒体」广西媒体资源,南宁活动媒体邀约

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 广西地区拥有丰富的媒体资源,在广西做活动,参加展览可以邀请他们到场采访报道。 央媒驻站:广西新华 广西人民 广西光明 广西央广 广西国际在线 广西中…

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

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

使用宏实现,在EXCEL 打印后,将某个栏位数据自动+1

需求 在Excel中打印后,将某个栏位数据自动1。比如需要修改栏位数据为xxx-xx-1,打印后变为xxx-xx-2 实现: 打开Excel文件并按下Alt F11打开VBA编辑器。在VBA编辑器中,找到您的工作簿名称,比如VBAProject (YourWorkboo…

Discourse 中可能使用的 HMAC 算法 Java 实现

在 DiscourseConnect 中,对数据的签名使用的是 HMAC 算法。 实际使用的算法为 HmacSHA256。 Java 生成签名的方法很简单。 String hmac new HmacUtils(HmacAlgorithms.HMAC_SHA_256, "55619458534897682511405307018226").hmacHex(ssoPayload);HmacUti…

js中的 map 方法遍历

map方法// map 方法不改变原本的数组 所以要将map之后的值赋值给一个新的变量 // ...item 的作用是 // 将调用 map 函数的数组里的所有数据 都复制到新的,接收map之后的数组中 // 在此基础上 再覆盖或者添加新的数据,如 outpatient 和 recommended 属性/…

短视频矩阵管理系统:高效运营的智能解决方案

在数字化时代,短视频已成为内容传播和品牌推广的重要渠道。随着短视频平台的不断涌现,如何高效管理和运营多个账号,成为了许多企业和个人面临的问题。短视频矩阵管理系统应运而生,它通过一系列智能化功能,为短视频的创…

高仿果汁导航模板

参考原文:果汁导航风格模板_1234FCOM专注游戏工具及源码例子分享 极速云

Prometheus 聚合查询的两个方案

问题背景 多个 Prometheus 集群或者多个 VictoriaMetrics 集群,在 Grafana 和夜莺里通常需要创建多个不同的数据源,这也就意味着,数据没法聚合查询,比如统一做一下 sum 之类的运算会比较麻烦,本文讲述两种 Prometheus…

数字营销:以大数据作引擎,推动企业全面数字化升级

数字营销本质乃是以大数据为核之心,促使营销活动高效运作,消费者线上线下数据的无缝衔接、企业内外部数据的贯通、公域引流私域运营等,皆已成为企业运营的标准配置。 数据即等同于市场,市场即等同于用户,用户乃是企…

物联网网关在电梯按需维保方案中起到什么作用?梯联网网关

为减少电梯故障和预防电梯事故,保障人身和财产安全,基于物联网技术的电梯按需维保已在全国多地陆续推行,做到了电梯安全隐患预测式排查,处理问题更具科学性、针对性和精准性,有效提升了电梯运行的安全性。那么&#xf…

【Linux学习】进程地址空间与写时拷贝

文章目录 Linux进程内存布局图&#xff1a;内存布局的验证 进程地址空间写时拷贝 Linux进程内存布局图&#xff1a; 地址空间的范围&#xff0c;在32位机器上是2^32比特位,也就是[0,4G]。 内存布局的验证 代码验证内存布局&#xff1a; 验证代码&#xff1a; #include<s…

搭建第一个SpringBoot+Vue项目

Maven&#xff1a;项目管理工具&#xff0c;对Java项目进行自动化的构建和依赖管理 SpringBoot的特点 只需要很少的配置或者默认配置 能够使用内嵌的Tomcat、Jetty服务器&#xff0c;不需要部署war文件 提供定制化的启动器Starters&#xff0c;简化Maven配置&#xff0c;开…

【Qt】深入探索Qt主窗口与菜单栏:构建高效用户界面的实践指南

文章目录 前言1. 什么是Main Window?2. 详细了解一下其中的 菜单栏&#xff1a;2.1. 创建菜单栏2.2. 添加快捷键2.3. 添加子菜单2.4. 添加分割线2.5. 添加图标 3. 内存泄漏问题&#xff1a;总结 前言 在现代软件开发中&#xff0c;用户界面的设计对于提升用户体验至关重要。Q…

DELPHI通过WebService进行数据交互

WebService是一种可以跨语言和平台的数据交互模式&#xff0c;使用非常广泛&#xff0c;与JSon数据格式结合&#xff0c;更是当前非常流行的一种模式&#xff0c;本章针对DELPHI通过WebService进行数据的交互做一个相对简单例子应用。 本文使用的DELPHI 版本为&#xff1a;DEL…

Linux基础之程序地址空间

目录 一、程序地址空间的基本概念 二、程序地址空间的结构​编辑 三、虚拟地址和物理地址的关系 四、为什么要使用程序地址空间 一、程序地址空间的基本概念 要理解我们的程序地址空间&#xff0c;首先就要认识下面这张图&#xff1a; 这张图上所表示的内容&#xf…

java中写word换行符 poi 换行

省流&#xff1a; 表格外的文本&#xff0c;使用“\r”或者“(char)11”来换行&#xff0c;建议用"\r"。 表格内的文本&#xff0c;使用“(char)11”来换行。 正文&#xff1a; 测试用word文档&#xff1a; t1.doc内容如下&#xff1a; t2.doc内容如下&#xff…

基于xilinx fpga RFSOC系列的Ultrascale+ RF Data Converter ip详解说明

目录 1 概述2 IP功能2.1 ADC性能2.2 DAC性能3 IP端口4 代码框架4.1 ADC功能框图4.2 DAC功能框图5 收发数据时序5.1 ADC数据格式5.2 DAC数据格式6 时钟配置6.1 ADC/DAC参考时钟7 数据格式配置模式7.1 ADC的配置模式7.1.1 Real -> real;7.1.2 Real ->IQ;7.1.3 IQ -> IQ;…

掌握2个手机数据恢复软件,快速恢复丢失的数据!

我们使用手机存储了大量的个人和重要数据&#xff0c;包括照片、视频、联系人、短信等等。然而&#xff0c;数据丢失的风险也随之增加。不小心删除、手机损坏、系统崩溃等问题都可能导致宝贵的数据消失。 幸运的是&#xff0c;现在有许多强大而高效的手机数据恢复软件可以帮助…