MySQL从库维护经验分享

作者:MySQL技术 时间:2024-01-26 22:31:18 

前言:

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的时候,我们认为从库运行正常。

总结:

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

来源:https://cloud.tencent.com/developer/article/1750398

标签:mysql,从库维护
0
投稿

猜你喜欢

  • 一篇文章弄懂Python中所有数组数据类型

    2023-01-12 18:25:05
  • 使用xshell实现代理功能并navicat for MySQL 进行测试

    2024-01-23 19:59:05
  • 如何利用Python给自己的头像加一个小国旗(小月饼)

    2023-09-15 20:47:31
  • Pycharm配置anaconda环境图文教程

    2023-11-10 02:18:20
  • 使用python实现微信小程序自动签到功能

    2021-05-30 10:04:11
  • 教你用Type Hint提高Python程序开发效率

    2023-10-21 03:42:24
  • sql数据库批量处理脚本

    2011-11-03 17:23:19
  • python跳过第一行快速读取文件内容的实例

    2022-05-12 12:58:56
  • Python虚拟环境项目实例

    2023-03-07 16:59:01
  • Flask使用Pyecharts在单个页面展示多个图表的方法

    2021-10-12 18:16:35
  • 百度留言本js 大家可以参考下

    2024-04-16 09:31:55
  • Python深度学习之Keras模型转换成ONNX模型流程详解

    2023-01-02 00:32:44
  • 理解MySQL变量和条件

    2024-01-22 21:29:29
  • Python BeautifulReport可视化报告代码实例

    2023-11-12 14:53:13
  • python实现上传样本到virustotal并查询扫描信息的方法

    2023-06-30 19:59:45
  • 浅谈Python中re.match()和re.search()的使用及区别

    2022-05-11 12:48:44
  • 好的产品设计并非始于图片,而是对人的理解

    2009-08-02 20:25:00
  • python中的十大%占位符对应的格式化的使用方法

    2022-04-28 08:54:21
  • python实现无边框进度条的实例代码

    2023-07-23 05:22:59
  • 解决Python列表字符不区分大小写的问题

    2022-09-10 20:43:52
  • asp之家 网络编程 m.aspxhome.com