MySQL从库维护经验分享

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 监控 关系型数据库
MySQL 延迟从库介绍
本文介绍了MySQL中的延迟从库功能,详细解释了其工作原理及配置方法。延迟从库允许从库在主库执行完数据变更后延迟一段时间再同步,主要用于快速恢复误操作的数据。此外,它还可用于备份、离线查询及数据合规性需求。通过合理配置,可显著提升数据库系统的稳定性和可靠性。
139 4
|
2月前
|
SQL 关系型数据库 MySQL
MySQL操作利器——mysql-connector-python库详解
MySQL操作利器——mysql-connector-python库详解
587 0
|
12天前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
37 5
|
14天前
|
SQL DataWorks 关系型数据库
阿里云 DataWorks 正式支持 SelectDB & Apache Doris 数据源,实现 MySQL 整库实时同步
阿里云数据库 SelectDB 版是阿里云与飞轮科技联合基于 Apache Doris 内核打造的现代化数据仓库,支持大规模实时数据上的极速查询分析。通过实时、统一、弹性、开放的核心能力,能够为企业提供高性价比、简单易用、安全稳定、低成本的实时大数据分析支持。SelectDB 具备世界领先的实时分析能力,能够实现秒级的数据实时导入与同步,在宽表、复杂多表关联、高并发点查等不同场景下,提供超越一众国际知名的同类产品的优秀性能,多次登顶 ClickBench 全球数据库分析性能排行榜。
|
18天前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
28 1
|
1月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
27 2
|
1月前
|
Oracle 关系型数据库 MySQL
shell获取多个oracle库mysql库所有的表
请注意,此脚本假设你有足够的权限访问所有提到的数据库。在实际部署前,请确保对脚本中的数据库凭据、主机名和端口进行适当的修改和验证。此外,处理数据库操作时,务必谨慎操作,避免因错误的脚本执行造成数据损坏或服务中断。
40 0
|
3月前
|
监控 关系型数据库 MySQL
mysql误删的performance_schema库
`performance_schema`库是MySQL性能监控的重要工具,误删除后可以通过上述方法尝试恢复。在操作过程中,重启MySQL服务器是最简单的尝试方法。如果这不起作用,可以尝试使用MySQL的初始化选项,但请注意备份数据以防数据丢失。检查MySQL配置也是一个好的步骤,以确保 `performance_schema`没有被禁用。最后,如果有备份,通过恢复备份来恢复 `performance_schema`库是最保险的方法。在操作过程中,确保遵循最佳实践和操作前备份重要数据。
154 5
|
3月前
|
SQL 关系型数据库 MySQL
MySQL主从:延时从库恢复全解
MySQL主从:延时从库恢复全解
|
3月前
|
SQL 监控 关系型数据库
mysql统计数据库大小
通过这些方法,数据库管理员可以有效地监控和规划MySQL数据库的存储需求,确保数据库的稳定运行。
138 3