MySQL 8.0 复制搭建与可观测监控

news2024/9/9 1:29:05

文章目录

  • 前言
    • 1. 环境准备
    • 2. 克隆数据
    • 3. 建立复制关系
    • 4. 可观测监控
      • 4.1 监控延迟
      • 4.2 复制状态
      • 4.3 更细粒度的监控
  • 参考

前言

2020 年美国科技界纷纷响应 Black Lives Matter,BLM 维权运动,将带有种族色彩的词汇替换,MySQL 也将 master、slave 等关键字进行替换,但是没有彻底删除,留给用户过渡的空间。在 2024 年 4 月 30 日 MySQL 发布的 8.4 LTS 版本中带有种族色彩的关键字已经彻底删除。本篇文章将介绍在新版本中搭建备库的语法,还有一些基于新特性搭建和监控复制的有趣的方法。

1. 环境准备

MySQL 8.0 复制中比较大的突破就是 clone 特性,让搭建一个备份非常简单。在主库有数据的情况下,搭建备库需要先做一个全量备份,因为主库的 Binlog 很难全部都保留。然后基于全备的位点建立复制关系,建立复制关系的位点也无需记录,可以使用 GTID 特性。

以下是环境信息,source 就是主库,replica 就是备节点。

服务器角色版本Server_id
172.16.104.55sourceMySQL 8.0.36553306
172.16.104.57replicaMySQL 8.0.36573306

以下是复制相关的参数要求,需开启 GTID 另外 binlog_format 为 row 模式。

# 集群中 server_id 要唯一
server_id = 553306
gtid_mode = on
enforce_gtid_consistency = on
binlog_format = ROW

2. 克隆数据

默认主节点和备节点的参数都一致,除了了一些标记本节点的参数。

安装克隆插件,主备节点 都要安装:

install plugin clone soname 'mysql_clone.so';

确认 clone 插件的状态:

-- SQL:
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';

-- 输出:
+-------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+-------------+---------------+
| clone       | ACTIVE        |
+-------------+---------------+

主节点 创建 clone 专用的账号:

CREATE USER 'donor_user'@'%' IDENTIFIED BY 'password';
GRANT BACKUP_ADMIN on *.* to 'donor_user'@'%';

备节点 添加主节点的白名单:

SET GLOBAL clone_valid_donor_list = '172.16.104.55:3306';

备节点 发起克隆,结束后数据库会重启:

CLONE INSTANCE FROM 'donor_user'@'172.16.104.57':3306 IDENTIFIED BY 'password';

备节点 查看 clone 结果,可以看到主节点 Binlog 位点和 GTID 信息:

select * from performance_schema.clone_status\G

至此,已经获取到主节点的全量数据,接下来需要建立复制关系。

3. 建立复制关系

备节点 创建专用的复制账号:

create user repl@'%' identified by 'password';
grant replication slave on *.* to repl@'%';

备节点 创建复制通道,CHANNEL 为复制通道的名称:

CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='172.16.104.55',
  SOURCE_USER='repl',
  SOURCE_PASSWORD='password',
  GET_SOURCE_PUBLIC_KEY = 1,
  SOURCE_AUTO_POSITION = 1
  FOR CHANNEL 'mysql_rplica';

执行完成后,启动复制

start replica;

查看复制状态:

show replica status\G

4. 可观测监控

针对主备复制,比较习惯使用 show slave status 语句来监控主备复制的状态和延迟,在 8.0 版本 MySQL 提供了更精细粒度的监控,延迟可以精确到毫秒。

在 performance_schema 中,提供了 12 张复制相关的表,但是这些表的含义比较难理解,而且官方对这些表的介绍也很简单,一位 Oracle 工程师,提供一些视图,降低了 performance_schema 的使用成本,从而获得更精细粒度的监控。

视图下载地址:mysql_8_replication_observability.sql

安装非常简单,执行 SQL 文本即可。

4.1 监控延迟

select * from sys.replication_lag;
[performance_schema]>select * from sys.replication_lag;
+--------------+-----------------------+------------------------+
| channel_name | max_lag_from_original | max_lag_from_immediate |
+--------------+-----------------------+------------------------+
| mysql_rplica | 00:00:08.768837       | 00:00:08.768837        |
+--------------+-----------------------+------------------------+

4.2 复制状态

查看每个复制线程的状态,如下面的结果所示,使用的是 4 个 worker 的多线程复制:

select * from replication_status;
+------------------+----------+----------+---------+-------------------+--------------------+
| channel          | io_state | co_state | w_state | lag_from_original | lag_from_immediate |
+------------------+----------+----------+---------+-------------------+--------------------+
| mysql_rplica (1) | ON       | ON       | ON      | 00:00:30.070091   | 00:00:30.070091    |
| mysql_rplica (2) | ON       | ON       | ON      | none              | none               |
| mysql_rplica (3) | ON       | ON       | ON      | none              | none               |
| mysql_rplica (4) | ON       | ON       | ON      | none              | none               |
+------------------+----------+----------+---------+-------------------+--------------------+

4.3 更细粒度的监控

select * from sys.replication_status_full\G
*************************** 1. row ***************************
                 channel: mysql_rplica (1)
                    host: 172.16.104.55
                    port: 3306
                    user: repl
             source_uuid: bc880563-004e-11ef-b91c-fa7581637800
              group_name: 
last_heartbeat_timestamp: 2024-07-30 11:36:24.601625
      heartbeat_interval: 30.000
                io_state: ON
         io_thread_state: Waiting for source to send event
                io_errno: 0
               io_errmsg: 
              io_errtime: 0000-00-00 00:00:00.000000
                co_state: ON
         co_thread_state: Replica has read all relay log; waiting for more updates
                co_errno: 0
               co_errmsg: 
              co_errtime: 0000-00-00 00:00:00.000000
                 w_state: ON
          w_thread_state: Waiting for an event from Coordinator
                 w_errno: 0
                w_errmsg: 
               w_errtime: 0000-00-00 00:00:00.000000
 time_since_last_message: 00:00:29.666315
      applier_busy_state: IDLE
       lag_from_original: none
      lag_from_immediate: none
          transport_time: 108.85 ms
       time_to_relay_log: 2.09 s
              apply_time: 34.50 s
last_applied_transaction: bc880563-004e-11ef-b91c-fa7581637800:2058
 last_queued_transaction: bc880563-004e-11ef-b91c-fa7581637800:2058
queued_gtid_set_to_apply: 

参考

https://dev.mysql.com/blog-archive/mysql-8-and-replication-observability/

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

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

相关文章

UI设计经验心得:优化设计流程与实战技巧分享

随着互联网的快速发展,UI 设计在中国也逐渐发展起来。UI 设计的目的不仅仅是让用户享受视觉享受,而是解决用户如何与互联网设备互动。因此,UI 设计是通过深入研究用户的使用习惯和操作逻辑来设计界面的互动和视觉效果。那么,UI 设…

邮箱API在CRM系统中如何高效的应用与集成?

邮箱API的高级功能和使用指南?怎么安全集成邮箱API? CRM系统已成为企业与客户保持联系的关键工具。通过集成邮箱API,企业可以大幅提升CRM系统的功能和效率。AokSend将探讨邮箱API在CRM系统中的高效应用与集成。 邮箱API:主要功能…

龙迅LT8642UXE 矩阵HDMI *4转HDMI *2输出切换芯片,支持HDMI 2.0,可带HDCP

LT8642UXE描述: LT8642UXE HDMI2.0/1.4交换机具有4:2的开关,符合HDMI2.0/1.4规格,最大6Gbps高速数据速率,自适应均衡RX输入和预先强调的TX输出,以支持长电缆应用程序。LT8642UXE HDMI2.0/1.4交换机自动检测…

JVM—运行时数据区域

Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 1、程序计数器—线程私有 字节码解释器工作时通过改变这个计数器的值,选取下一条执行的字节码指令。程序计数器是程序控制的指示器,分支、循环、跳转、异常处理、线…

适合证券公司的跨网传输解决方案,了解一下

证券公司由于其业务特性,涉及大量的敏感财务数据和交易信息,因此通常会在内部实施网络隔离措施。目的是为了保护数据免受未授权访问和网络攻击,确保数据的安全性和保密性,因此急需寻找安全可靠的跨网传输解决方案,实现…

拆解了数百个独立站,我们总结的高转化页面布局精华

高转化的独立站的页面布局都具备什么要素呢? 我们研究了几百个独立站,结合我们自己的项目经验,总结出转化率相对高的网站布局,都有以下注意的要点清单: 1 品牌Logo基本放在头部左边或者中间 2 首屏大banner 3 社交媒…

【可能是全网最丝滑的LangChain教程】十九、LangChain进阶之Agents

幸福,不是长生不老,不是大鱼大肉,不是权倾朝野。幸福是每一个微小的生活愿望达成。当你想吃的时候有得吃,想被爱的时候有人来爱你。 01 Agent介绍 在LangChain中,Agent 是一个核心概念,它代表了一种能够利…

CTF Web信息搜集 25000字详解

目录 前言信息收集常见信息分类域名信息whois备案CDN子域名解析记录 旁站C段服务器信息端口服务器类型数据库类型waf防火墙 网站信息备份文件备份文件常见的后缀名备份文件常见的文件名gedit备份文件vim备份文件收集方法 敏感目录CMS类型(指纹识别)探针泄…

牛客JS题(十二)列表动态渲染

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 忍者码风reduce注意事项 题干&#xff1a; 我的答案 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"></head><body><ul></ul><…

决策树 和 集成学习、随机森林

决策树是非参数学习算法&#xff0c;可以解决分类问题&#xff0c;天然可以解决多分类问题&#xff08;不同于逻辑回归或者SVM&#xff0c;需要通过OVR&#xff0c;OVO的方法&#xff09;&#xff0c;也可以解决回归问题&#xff0c;甚至是多输出任务&#xff0c;并且决策树有非…

浅谈监听器之后端监听器

浅谈监听器之后端监听器 “后端监听器”&#xff08;Backend Listener&#xff09;是一种高级功能&#xff0c;用于异步地将测试结果数据发送至外部系统&#xff0c;如数据库、消息队列或时间序列数据库等&#xff0c;以便于长期存储、实时分析和可视化展示。 后端监听器的作…

python 可视化探索(二):高级图表与组合图表

总结&#xff1a;本文为和鲸python 可视化探索训练营资料整理而来&#xff0c;加入了自己的理解&#xff08;by GPT4o&#xff09; 原作者&#xff1a;作者&#xff1a;大话数据分析&#xff0c;知乎、公众号【大话数据分析】主理人&#xff0c;5年数据分析经验&#xff0c;前…

centos安装crictl

上章文章已经讲诉了如何安装centos安装containerd-CSDN博客&#xff0c;本文章讲解如何安装crictl 一、官网安装说明文档&#xff0c;官网 二、二进制安装 #!/bin/sh VERSION"v1.30.0" # check latest version in /releases page wget https://github.com/kubernet…

IDEA 本地有jar包依赖文件,但是所有引用的jar包全部爆红

前端时间 看源码&#xff0c;下载源码额按钮不见了&#xff0c;折腾了很久&#xff0c;遂打算重新安装idea&#xff0c;但是重新安装后&#xff0c;发现代码全都爆红&#xff0c;按照晚上说的删除idea 文件夹&#xff0c;idea缓存删除&#xff0c;都不好使&#xff0c;但是看到…

PMP冲刺题及知识点整理

PMP题目整理 冲刺题1错题整理冲刺题1相关重点记录&#xff1a;零散不熟悉知识点整理团队章程责任分配矩阵RAM定义是啥风险识别的工具都有啥 冲刺题2错题整理知识点整理情商风险登记在风险登记册&#xff0c;风险管理计划中没有风险团队章程项目经理来确保进行知识转移交付哪一个…

【C++】STL-红黑树封装出set和map

目录 1、实现红黑树的泛型 2、set和map的插入 3、set和map的迭代器 3.1 operator 3.2 operator-- 3.3 const迭代器 4、find 5、map的operator[] 6、完整代码 6.1 红黑树 6.2 set 6.3 map 1、实现红黑树的泛型 我们先引入上一节中写的红黑树 enum Colour {RED,BL…

Unity Shader 初学者指南

《Unity Shader 初学者指南》(3D Game Shaders For Beginners) 是一个面向初学者的教程项目&#xff0c;由David Lettier创建。该项目通过一系列分步指导&#xff0c;教授如何在3D游戏中实现各种着色技术&#xff0c;包括环境光遮蔽(SSAO)、景深(Depth of Field)、光照、法线贴…

产品经理-​简历内容的可准备点(24)

在互联网岗位中,产品经理是一个没有针对性的专业&#xff0c;知识结构不明确&#xff0c;那该具体准备哪些内容呢&#xff1f; 大家知道大公司实习含金量高&#xff0c;但作为纯产品“小白”&#xff0c;冷启动找实习很困难&#xff08;本科生不太好找产品实习&#xff0c;普通…

OSI七层模型详解

OSI七层模型 OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互连。 一般都叫OSI参考模型&#xff0c;是ISO组织在1985年研究的网络互连模型。该体系结构标准定义了网络互连的七层框架&#xff08;物理层、数据链路层、网络层、传输层、会话层、…

loguru日志模块:简化Python自动化测试的日志管理!

引言 日志是软件开发中的关键组成部分&#xff0c;为开发和测试人员提供了调试和监控应用程序的重要手段。loguru 是一个第三方的 Python 日志库&#xff0c;以其简洁的 API 和自动化的功能脱颖而出。本文将探讨为什么项目中需要日志&#xff0c;loguru 为何受到青睐&#xff…