MySQL8.3.0 master/slave 主从复制方案

news2024/11/28 18:48:22

一 、什么是MySQL主从

MySQL主从(Master-Slave)复制是一种数据复制机制,用于将一个MySQL数据库服务器(主服务器)的数据复制到其他一个或多个MySQL数据库服务器(从服务器)。这种复制机制可以提供数据冗余、增加读取性能、实现高可用性、灾难恢复和数据分析等功能。

二、MySQL主从的作用

  • 数据冗余和备份
  • 分摊读取负载
  • 提供高可用性
  • 灾难恢复和故障转移
  • 数据分析和报表生成

三、MySQL 8.3.0 过时的并需要移除的 replication 选项和变量。

注意MySQL 8.3.0 版本中很多参数已经移除不在使用,千万注意:

许多与 MySQL replication相关的选项和变量在以前的 MySQL 版本中已被弃用,并已从 MySQL 8.3 中删除。现在尝试使用其中任何一个都会导致服务器引发语法错误。这些选项和变量列于此处:

  • slave-rows-search-algorithms:复制应用程序在应用更新或删除时用于查找表行的算法现在始终为HASH_SCAN,INDEX_SCAN,并且用户不再可配置。
  • log_bin_use_v1_events:这允许运行 MySQL 5.7 及更高版本的源服务器复制到不再支持或维护的早期版本的 MySQL。
  • relay-log-info-file、 --relay-log-info-repository、 --master-info-file、 --master-info-repository:这些已经被crash-safe 表取代,并且不再受支持。
  • transaction_write_set_extraction
  • group_replication_ip_whitelist: group_replication_ip_allow list 代替使用。
  • group_replication_primary_member: 不再需要; 通过查询 Performance Schema 中replication_group_members表的MEMBER_ROLE列。
  • –skip-host-cache: 该选项已被删除;改为启动服务器 --host-cache-size=0。
  • –innodb和–skip-innodb: 这些选项已被删除。存储 InnoDB引擎始终处于启用状态,并且无法禁用它。
  • –character-set-client-handshake和–old-style-user-limits: 这些选项以前用于与非常旧的 MySQL 版本兼容,这些版本不再受支持或维护,因此不再有任何有用的用途。
  • **过时的 CMake 选项 ** 以下用于使用 CMake 编译服务器的选项已过时并已被删除:
    • USE_LD_LLD: 使用WITH_LD=lld代替。
    • WITH_BOOST、 DOWNLOAD_BOOST、 DOWNLOAD_BOOST_TIMEOUT:不再需要这些选项; MySQL 现在在从源代码编译时包含并使用捆绑版本的 Boost。
  • GTID-based replication 和 IGNORE_SERVER_IDS: 当使用全局事务标识符 (GTID) 进行复制时,已应用的事务将被自动忽略。这意味着IGNORE_SERVER_IDS与 GTID 模式不兼容。如果 gtid_mode是 ON,CHANGE REPLICATION SOURCE TO则非空 IGNORE_SERVER_IDS列表将被拒绝并出现错误。同样,如果使用要忽略的服务器 ID 列表创建任何现有复制通道, SET gtid_mode=ON也会被拒绝。在开始基于 GTID 的复制之前,检查并清除所涉及服务器上任何被忽略的服务器 ID 列表;您可以通过检查SHOW REPLICA STATUS的输出来做到这一点 。在这种情况下,您可以通过发出CHANGE REPLICATION SOURCE TO 空列表来清除服务器 ID 列表 ,如下所示:
CHANGE REPLICATION SOURCE TO IGNORE_SERVER_IDS = ();

四、手动搭建 MySQL master/slave 主从复制集群

本文采用Docker 容器的方式搭建集群。容器已经完整的封装好主从集群的相关环境变量信息,只需要做相关的初始化配置即可快速完整主从复制搭建。
获取MySQL Docker

docker pull registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0

与主从复制相关的环境变量:

  • MYSQL_REPLICATION_MODE:复制模式。可能的值master/ slave。没有默认值。
  • MYSQL_REPLICATION_USER:首次运行时在master服务器上创建的REPLICATION用户。没有默认值。
  • MYSQL_REPLICATION_PASSWORD:REPLICATION用户密码。没有默认值。
  • MYSQL_MASTER_HOST:master主机名/IP(slave节点参数)。没有默认值。
  • MYSQL_MASTER_PORT_NUMBER:master服务器端口(slave节点参数)。默认为3306.
  • MYSQL_MASTER_ROOT_USER:master上有权访问MYSQL_DATABASE(slave节点参数)的用户。默认为root
  • MYSQL_MASTER_ROOT_PASSWORD:master上有权访问MYSQL_DATABASE(slave节点参数)的用户的密码。没有默认值。
  • MYSQL_MASTER_DELAY:数据库复制延迟(slave节点参数)。默认为0.

在复制集群中,您可以拥有一个master服务器和零个或多个slave服务器。启用复制后,master节点处于读写模式,而slave节点处于只读模式。为了获得最佳性能,建议限制对从属设备的读取。

第 1 步:创建复制主服务器

第一步是启动MySQL master。

docker run --name mysql-master \
  -e MYSQL_ROOT_PASSWORD=master_root_password \
  -e MYSQL_REPLICATION_MODE=master \
  -e MYSQL_REPLICATION_USER=my_repl_user \
  -e MYSQL_REPLICATION_PASSWORD=my_repl_password \
  -e MYSQL_USER=my_user \
  -e MYSQL_PASSWORD=my_password \
  -e MYSQL_DATABASE=my_database \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0

在上面的命令中,容器被配置为master使用MYSQL_REPLICATION_MODE参数。MYSQL_REPLICATION_USER使用和参数指定复制用户MYSQL_REPLICATION_PASSWORD。

第2步:创建复制从站

接下来我们启动一个 MySQL 从属容器。

docker run --name mysql-slave --link mysql-master:master \
  -e MYSQL_REPLICATION_MODE=slave \
  -e MYSQL_REPLICATION_USER=my_repl_user \
  -e MYSQL_REPLICATION_PASSWORD=my_repl_password \
  -e MYSQL_MASTER_HOST=mysql-master \
  -e MYSQL_MASTER_ROOT_PASSWORD=master_root_password \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0

在上面的命令中,容器被配置为slave, 使用MYSQL_REPLICATION_MODE参数。slave节点使用MYSQL_MASTER_HOST、MYSQL_MASTER_ROOT_USER和参数MYSQL_MASTER_ROOT_PASSWORD连接到master。它还会转储主服务器中的现有数据。replication user使用MYSQL_REPLICATION_USER和参数MYSQL_REPLICATION_PASSWORD指定,并且应与master节点上指定的相同。
现在已经启动并运行一个两节点 MySQL 主/从复制集群。还可以通过添加/删除从属服务器来扩展集群,而不会导致任何停机。
通过 Docker Compose,可以使用以下命令设置主/从复制:

version: '3.9'

services:
  mysql-master:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0'
    ports:
      - '3306'
    volumes:
      - /path/to/mysql-persistence:/bitnami/mysql/data
    environment:
      - MYSQL_REPLICATION_MODE=master
      - MYSQL_REPLICATION_USER=repl_user
      - MYSQL_REPLICATION_PASSWORD=repl_password
      - MYSQL_ROOT_PASSWORD=master_root_password
      - MYSQL_USER=my_user
      - MYSQL_PASSWORD=my_password
      - MYSQL_DATABASE=my_database
  mysql-slave:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0'
    ports:
      - '3306'
    depends_on:
      - mysql-master
    environment:
      - MYSQL_REPLICATION_MODE=slave
      - MYSQL_REPLICATION_USER=repl_user
      - MYSQL_REPLICATION_PASSWORD=repl_password
      - MYSQL_MASTER_HOST=mysql-master
      - MYSQL_MASTER_PORT_NUMBER=3306
      - MYSQL_MASTER_ROOT_PASSWORD=master_root_password

使用以下方法扩展slave数量:

docker-compose up --detach --scale mysql-master=1 --scale mysql-slave=3

上面的命令将 Slave 的数量增加到3,您可以用同样的方式缩小规模。

注意:您不应增加/减少master节点的数量。始终只有一个主节点运行。

五、QingHub Studio快熟一键搭建 MySQL Master/Slave 主从复制

  • 进入QingHub Studio 广场,-> 标准应用 > 查找【MySQL8.3.0 主从复制方案】
    image.png
  • 安装订阅该服务
    image.png
  • 进入QingHub Studio 部署设计器-新建部署
    image.png
    image.png
  • 直接把刚刚安装的MySQL服务拖到设计器中。
    image.png
    image.png
  • 选择部署目标服务器,一键部署(前提是该服务已经按装好agent)
    image.png
  • 部署成功后启动服务,并检查状态,完成服务部署。实时监控服务状态
    image.png
后续

在完成MySQL 主从部署之后,可以基于此服务,继续部署其他应用节点,直接拖拽到该设计器即可。QingHub Studio 部署设计器完全做到:
可视化,可操作,可修改,可监控,可执行

Qinghub Studio 在线体验

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

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

相关文章

Shoplazza闪耀Shoptalk 2024,新零售创新解决方案引领行业新篇章!

在近期举办的全球零售业瞩目盛事——Shoptalk 2024大会上,全球*的零售技术平台-店匠科技(Shoplazza)以其*的创新实力与前瞻的技术理念,成功吸引了与会者的广泛关注。此次盛会于3月17日至20日在拉斯维加斯曼德勒湾隆重举行,汇聚了逾万名行业精英。在这场零售业的盛大聚会上,Shop…

MATLAB | 怎样绘制更有立体感的柱状图

之前写了一篇文章说明了MATLAB图例可以自己diy,这次又有了diy的机会,我开发了一个简单的小工具,能够实现绘制伪3d的柱状图,大概效果如下: 使用说明 由于涉及的代码比较接近MATLAB底层的图形对象,有点东西还…

MySQL学习笔记------事务

事务 事务是一组操作的集合,他是一个不可分割的单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败 事务操作 create table account(id int comment ID,name varchar(10) …

怎样恢复已删除的照片?教你3个方法,一键恢复!

很多人喜欢以拍照的形式记录生活,手机里的照片就很容易堆积成山,但当内存不够用时就不得不选择删除。可是这些美好的照片始终是很多人心中抹不去的记忆,那么该怎样恢复已删除的照片呢?下面几招,教你一键恢复&#xff0…

基于opencv的猫脸识别模型

opencv介绍 OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及…

使用美化方法设计项目主窗体(二)

使用美化方法设计项目主窗体 分析效果图的实现 效果图: 新建 Windows 窗体 新窗体命名:FrmMain.cs修改窗体的位置:StartPosition:CenterScreen窗体的无边框设计:FormBorderStyle:none修改窗体的大小&a…

JDK下载及安装说明

1.JDK下载 访问oracle官网:http://www.oracle.com 在首页点击Downloads,进入oracle软件下载页。 在下载页面,点击Java。 选择Java (JDK) for Developers,点击。 在 Java SE Downloads 页面,点击中间的DO…

如何挂载img镜像以及lvm分区

上一章节,我在win10下利用qemu安装了一个aarch64的 kylin-server-v10的ISO系统镜像包。安装时将系统安装到了虚拟硬盘kylin-server-v10.img 里,现在有个需求,要读出kylin-server-v10.img中文件系统的内容。 通过fdisk命令可以看到 kylin-ser…

Docker容器(六)网络配置与数据卷

一、高级网络配置 1.1概述 当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。 同时,Docker 随机分配一个本地未占用的私有…

位置编码学习

基本概念 关于位置编码的一切:https://kexue.fm/archives/8130#T5%E5%BC%8F 残差连接 Post Norm 关注深度 残差的意思是给前面的层搞一条“绿色通道”,让梯度可以更直接地回传,但是在Post Norm中,这条“绿色通道”被严重削弱…

助贷行业的业务增长工具:CRM客户管理系统的核心作用与应用流程

在当前助贷行业,企业如何更好地抓住客户需求、提高业务效率、优化服务体验一直是助贷企业关注的焦点。在这个背景下,一款优秀的CRM客户管理系统无疑成为了实现这些目标的关键。本文将探讨这样一款专为助贷行业打造的CRM客户管理系统,看它是如…

极市平台 | 综述:一文详解50多种多模态图像融合方法

本文来源公众号“极市平台”,仅用于学术分享,侵权删,干货满满。 原文链接:综述:一文详解50多种多模态图像融合方法 0 极市导读 本工作总结了50篇论文中Lidar和camera的多模态融合的一些概念方法。笔者结合原文以及自…

重庆餐饮设计公司排行榜曝光,这些企业值得关注!

在如今饮食文化多元化、餐饮产业蓬勃发展的时代,餐饮设计企业扮演着至关重要的角色。一个好的餐厅设计可以为顾客提供舒适、美观的用餐环境,也能够提升餐厅的整体形象和竞争力。重庆作为中国西南地区的经济中心和旅游胜地,餐饮业发展迅速&…

用二八定律分析零售数据,不就更直观了吗?

20%的商品贡献了80%的销售金额,你会不会想知道这些商品的销售金额、毛利、销售金额累计占比、毛利累计占比,会不会想知道这些商品在各个门店的销售表现?看是否能进一步提高销售金额,提高毛利。这样的报表该怎么做?奥威…

JVM高级篇之GC

文章目录 版权声明垃圾回收器的技术演进ShenandoahShenandoah GC体验Shenandoah GC循环过程 ZGCZGC简介ZGC的版本更迭ZGC体验&使用ZGC的参数设置ZGC的调优 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马…

Vue - 你知道Vue中computed和watch的区别吗

难度级别:中高级及以上 提问概率:70% 二者都是用来监听数据变化的,而且在日常工作中大部分时候都只是局限于简单实用,所以到了面试中很难全面说出二者的区别。接下来我们看一下,二者究竟有哪些区别呢? 先说computed,它的主要用途是监听…

Java中网络编程,Junit单元测试详解

文章目录 软件结构C/S结构B/S结构 概述三要素IP (银行的位置)端口 (银行中某个柜台号)协议 (填写取款单的规则)TCP通信程序TCP通信原理客户端发送数据服务端接收数据过程图三次握手 Junit单元测试概述常见的注解使用断言概述使用 软件结构 C/S结构 客户…

Windows深度学习环境----Cuda version 10.2 pytorch3d version 0.3.0

Requirements Python version 3.8.5Pytorch version: pytorch1.6.0 torchvision0.8.2 torchaudio0.7.0 cudatoolkit10.2.89pytorch3d version 0.3.0Cuda version 10.2 感觉readme文件里的不适配,跟pytorch官网不同 以前的 PyTorch 版本 |PyTorch的 # CUDA 10.2 c…

HDLbits 刷题 --Popcount255

A "population count" circuit counts the number of 1s in an input vector. Build a population count circuit for a 255-bit input vector. 译: 一个“population count”电路用于计算输入向量中1的数量。为一个255位的输入向量构建一个人口计数电路…

【免费使用AI工具】国内AI网站集合

文章目录 文心一言腾讯混元助手讯飞星火认知大模型:文心一格(绘图)云雀大模型(文本对话)智谱AI:(GLM大模型)百川智能(百川大模型)MiniMax(ABAB大模型)万维天工ChatGPT3.5镜像网站通义千问文心一言 https://yiyan.baidu.com/ 腾讯混元助手 微信搜索【腾讯混元助手】小…