MySQL从库维护经验分享「终于解决」

MySQL从库维护经验分享「终于解决」前言:MySQL主从架构应该是最常用的一组架构了。从库会实时同步主库传输来的数据,一般从库可以作为备用节点或作查询使用。其实不只是主库需要多关注,从库有时候也要经常维护,本篇文章将会分享几点从库维护…

	MySQL从库维护经验分享[数据库教程]

前言:

MySQL 主从架构应该是最常用的一组架构了。从库会实时同步主库传输来的数据,一般从库可以作为备用节点或作查询使用。其实不只是主库需要多关注,从库有时候也要经常维护,本篇文章将会分享几点从库维护经验,一起来学习吧。

1.主从复制建议采用 GTID 模式

GTID 即全局事务 ID(Global Transaction ID),GTID 实际上是由 server_uuid:transaction_id 组成的。其中 server_uuid 是一个 MySQL 实例的唯一标识, transaction_id 代表了该实例上已经提交的事务数量,并且随着事务提交单调递增,所以 GTID 能够保证每个 MySQL 实例事务的执行(不会重复执行同一个事务,并且会补全没有执行的事务)。

基于 GTID 的主从复制可以取代过去通过 binlog 文件偏移量定位复制位置的传统方式。特别是对于一主多从的架构,借助GTID,在发生主备切换的情况下,MySQL 的其它 Slave 可以自动在新主上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的维护,也减少了人为设置复制位置发生误操作的风险。另外,基于 GTID 的复制可以忽略已经执行过的事务,减少了数据发生不一致的风险。

2.建议从库参数尽量和主库保持一致

为保证主从库数据一致性,建议从库版本与主库一致,相关参数尽量和主库保持一致。比如字符集、默认存储引擎、sql_mode 这类参数要设置一样。特别是一些不可动态修改的参数,建议提前写入配置文件并和主库一致。

3.备份可在从库端进行

MySQL 全量备份会对服务器造成一定压力,有时也会短暂持有全局锁。特别是数据量大,业务繁忙的数据库,全量备份可能会对业务产生影响。建议将备份脚本部署在从库服务器上,全量备份可以放在从库端进行,这样能减少备份过程中对于主库业务的影响。

4.从库建议设为只读

对于数据库读写状态,主要靠 read_only 全局参数来设定,默认情况下,数据库是用于读写操作的,所以 read_only 参数是 0 或 false 状态。这时候不论是本地用户还是远程访问数据库的用户,只要有权限都可以进行读写操作。

为避免从库发生手动更新操作,建议将从库设置为只读,即将 read_only 参数设置为1。 read_only=1 只读模式,不会影响从库同步复制的功能,从库仍然会读取 master 上的日志,并且在 slave 端应用日志,保证主从数据库同步一致。从库设为只读会限制不具有 super 权限的用户进行数据修改操作,普通的应用用户进行 insert 、 update 、 delete 等会产生数据变化的 DML 操作时,都会报出数据库处于只读模式。这样能有效防止从库发生更新操作。

此外,有条件的情况下,从库可以承担部分查询工作。比如一些报表聚合分析查询或者外部服务查询都可以配置从库查询,减少对主库的压力。

5.注意从库监控及主从延迟

从库虽然不如主库那么重要,但平时也要多关注从库监控状态,不要等到需要使用从库时才发现从库早已和主库不一致了。除去一些基础监控,从库端要特别关注复制状态及延迟状态。

我们可以在从库端执行 show slave status; 来查询从库状态,其中主要关注的值有三个,分别为 Slave SQL Running , Slave IO Running 和 Seconds Behind Master 。这三个值分别代表 SQL 线程运行状态、 IO 线程运行状态、从库延迟秒数。只有当 Slave SQL Running , Slave IO Running 为 yes ,然后 Seconds Behind Master 为0的时候,我们认为从库运行正常。

总结:

本篇文章主要分享了个人关于从库维护的几点经验,若有错误,还请指正。其他同学若有相关经验或建议,也可以留言分享讨论哦。

MySQL从库维护经验分享

原文地址:https://blog.51cto.com/10814168/2552248

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6613.html

(0)
上一篇 2023-04-06
下一篇 2023-04-06

相关推荐

  • PostgreSql一个月学习计划

    PostgreSql一个月学习计划
    1.背景 国内使用数据库最多的莫过于mysql,大部分程序员第一次接触数据库就是mysql。(毕竟免费的 = =!)但近年来,有一些黑马出现(如下图),其中…

    2023-04-17
    153
  • 探究 Python 积分

    探究 Python 积分Python是一种具有强大功能和易于学习的编程语言。它已经成为了许多领域中最受欢迎的语言之一——从Web开发到科学计算。在本文中,我们将探究Python中的积分,包括如何使用Python对各种不同类型的积分进行求解,并介绍一些常见的积分公式。

    2024-08-03
    24
  • python数据分析快速入门_数据挖掘入门教程

    python数据分析快速入门_数据挖掘入门教程Python环境搭建本次入门系列将使用Python作为开发语言。要使用Python语言,我们先来搭建Python开发平台。我们将基于Python 2.7版本、以及Python的开发发行版本Anacon

    2023-01-24
    155
  • Python 变量作用域详解

    Python 变量作用域详解Python 是一门强大而灵活的编程语言,其中 Python 变量作用域是每个程序员都应该了解的一个重要部分。Python 变量作用域规定了变量在程序中可见的范围和它们在哪里可以访问。要了解 Python 变量作用域,需要了解全局变量和局部变量,以及它们如何在代码中工作。在本文中,我们将深入研究 Python 变量作用域和它们的规则、类型和用法,以帮助读者更好地理解 Python 编程。

    2024-07-06
    37
  • MongoDB 如何实现嵌套子文档分组「建议收藏」

    MongoDB 如何实现嵌套子文档分组「建议收藏」MongoDB 嵌套结构的数据非常常见, 它通过嵌套子文档,达到一对多的关联关系。但嵌套结构中按分类分组求子文档的数据计算,不能直接通过 $group 聚集运算来实现,需要将嵌套结构解开,由多层嵌套…

    2023-03-05
    151
  • Python中的exp函数

    Python中的exp函数Python中的exp函数是一个数学函数,用于返回e的n次方的值。该函数常用于概率和统计学中的复利计算、指数增长和衰减等领域。

    2024-05-28
    67
  • MySQL Event历史记录

    MySQL Event历史记录需求 SQL Server的作业历史(Job)记录是保存在msdb库中的,很方便就查询相关的Job定义,计划和历史记录,而MySQL的event却没有历史记录。为方便查看event是否正常执行以及执行

    2022-12-24
    169
  • Mybatis官方文档解读「终于解决」

    Mybatis官方文档解读「终于解决」作用域(Scope)和生命周期 理解我们之前讨论过的不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。 SqlSessionFactoryBuilder 这个类可以被实例…

    2023-02-09
    162

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注