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

一 、什么是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/dataenvironment:- 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_databasemysql-slave:image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:8.3.0'ports:- '3306'depends_on:- mysql-masterenvironment:- 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.hqwc.cn/news/601152.html

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

相关文章

大学侵权责任法试题及答案,分享几个实用搜题和学习工具 #学习方法#知识分享#知识分享

以下软件拥有强大的搜索功能,能够快速找到与题目相关的资料和答案,让大学生们更容易理解和掌握知识点。 1.找题哥 这是一个网站 找题哥-分享考试题库与题目资料,找题哥,包含各类考试试卷试题与答案、在线搜题与练习,分类有医卫…

基于SpringBoot+Vue的社区医院管理服务系统(源码+文档+部署+讲解)

一.系统概述 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括社区医院管理服务系统的网络应用,在外国线上管理系统已经是很普遍的方式,不过国内的管理系统可能还处于起步阶段。社区医院管理服务系统具…

vue-element-admin vue3版本搭建

要搭建一个基于Vue 3版本的vue-element-admin项目,你可以按照以下步骤进行: 首先,确保你的开发环境已经安装了Node.js和npm。Node.js是一个JavaScript运行环境,而npm则是Node.js的包管理器,它们将帮助你安装和管理Vue…

医院要不要安装医疗设备漏费控费管理系统

19339904493(康溪) 不知道大家有没有去医院做过检查,比如说做B超、彩超、多普勒、胃肠镜、心电、脑电,核磁、CT、DR、X光、钼靶、生化分析仪、血球等。你们可能不知道,在做检查、检验的时候还会存在一个漏洞。医院的存…

探索未来游戏:生成式人工智能AI如何重塑你的游戏世界?

生成式人工智能(Generative AI)正以前所未有的速度改变着各行各业的运作模式。其中,游戏产业作为科技应用的前沿阵地,正经历着前所未有的变革。本文将探讨生成式人工智能如何重塑游戏产业,以及这一变革背后的深远影响。…

Python 全栈体系【四阶】(二十二)

第五章 深度学习 二、推荐系统 3. 关联规则 3.1 Apriori “啤酒与尿布”的故事产生于 20 世纪 90 年代的美国沃尔玛超市。沃尔玛的超市管理人员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系…

算法:完全背包问题dp

文章目录 一、完全背包问题的特征二、定义状态三、状态转移四、降维优化五、参考例题5.1、Acwing:3.完全背包问题5.2、Acwing:900. 整数划分 一、完全背包问题的特征 完全背包问题是动态规划中的一种经典问题,它的主要特征可以总结如下&…

互联网需要做安全防护吗?

互联网需要做安全防护,因为网络攻击的风险随时存在。一旦遭受大规模攻击,企业很可能会受到严重影响,甚至会造成巨大的经济损失和品牌声誉受损。因此,建议企业在安全防护方面做好以下几点: 加强网络安全意识教育&#x…

Echarts折线图X轴坐标点显示不全问题解决方案

在前端开发中,Echarts是一个广泛使用的可视化库,它允许我们轻松创建各种复杂的图表,包括折线图、柱状图、饼图等。然而,在使用Echarts创建折线图时,有时会遇到X轴坐标点显示不全的问题。这不仅影响了图表的视觉效果&am…

基于机器学习的信用卡办卡意愿模型预测项目

基于机器学习的信用卡办卡意愿模型预测项目 在金融领域,了解客户的信用卡办卡意愿对于银行和金融机构至关重要。借助机器学习技术,我们可以根据客户的历史数据和行为模式预测其是否有办理信用卡的倾向。本项目通过Python中的机器学习库,构建…

小马识途营销顾问谈如何做好网络口碑营销?

俗话说酒香不怕巷子深,酒香自然有一定的优势,但小马识途营销顾问认为,面对众多的产品,稀有性并不那么容易。所以赢得自己的品牌口碑,获取客户的信任度,才能让企业在市场竞争中长期立于不败之地。具体如何赢…

Echarts多曲线数值与Y周刻度不符合、Echarts tooltip文字设置左对齐、Echarts折线图背景区间色自定义

Echarts多曲线数值与Y周刻度不符合: 问题描述: 在展示多曲线图表的时候,发现图表曲线数值与Y轴刻度对应不上 问题解决方式: 查看下Echarts的配置option中的seriess属性(多曲线的时候这个属性应该是一个数组),然后查看数组中的每个…