mysqldump备份时导致所有数据表锁定,无法提供服务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: mysqldump备份时导致所有数据表锁定,无法提供服务

背景



有接到用户反馈:系统页面卡住不动。。


这个问题发生在生产环境下数据库的每日备份过程中,一个20+G的数据库,在定时备份时(关于如何配置线上数据库定时备份,可参考文章MySQL指定数据库定时备份)导致数据库卡死,持续时长5分钟左右,在此期间线上服务无响应。。


分析


备份一个库:mysqldump -hhost -uroot -ppassword dbname > /opt/backup.sql


直接使用上述语句备份数据库,存在的问题是:备份完成之前,会把所有的表锁住,导致无法写入。。


这在生产环境下是不可接受的,而且这才20+G,后续数据库Size会越来越大,备份的时间必然也越长。。


那么,有没有一种方法在完成备份的同时并不锁定表呢??往下看。


解决



在使用mysqldump备份时,加一个参数:--single-transaction,这样,便可以在备份库的时候并不锁定数据表。


mysqldump -hhost -uroot -ppassword --single-transaction dbname > /opt/backup.sql


原理说明:


Some internals on how this actually works - before the utility starts fetching data from the server, it sends it a START TRANSACTION command. This command serves few goals in this case. The first one, is to have a consistent backup created, from a specific point in time, regardless of changes that occur after the backup started. The second goal is to prevent those locks from happening, as we are performing our actions as part of a database transaction.


Notes: 仅对支持事务的表有效,比如InnoDB,对非事务型的表比如MyISAM则没有效果。


另外需要注意的是,当使用--single-transaction这个参数备份大型数据库时,可考虑和--quick参数结合使用。--quick可以让mysqldump在备份的过程中每次只取一行数据,而不是把所有行都缓存到内存里,这主要考虑了服务器内存限制,以防备份失败。


mysqldump -hhost -uroot -ppassword --single-transaction --quick dbname > /opt/backup.sql


这样,在备份时并不会对数据表加锁,线上业务完全不受影响,经测试,备份耗时基本不变。


Reference: How to backup MySQL database using Mysqldump without locking?


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
lua字符串与十六进制数据转换
lua字符串与十六进制数据转换
575 2
|
Ubuntu Linux 开发工具
Linux超级强大的十六进制dump工具:XXD命令,我教你应该如何使用!
Linux超级强大的十六进制dump工具:XXD命令,我教你应该如何使用!
731 0
|
测试技术
12 Mac 下MQTT免费测试工具MQTTBox
12 Mac 下MQTT免费测试工具MQTTBox
719 0
|
小程序 API 数据安全/隐私保护
github短视频去除水印项目Douyin_TikTok_Download_API介绍
当下正值短视频盛行的时代。在我们浏览短视频的同时,经常能发现一些精美的图片、引人入胜的文案以及吸引眼球的视频,想要将它们保存到本地。然而,保存下来的图片或视频通常伴随着不太愉悦的水印,这显著降低了使用体验。因此,我时常思考是否存在途径能够下载一些无水印的图片。虽然有许多小程序等可以保存无水印的图片或视频,但它们往往伴随着一些令人不悦的广告或付费等。今天,在浏览 GitHub 时偶然发现了一个开源项目,名为“Douyin_TikTok_Download_API”,它能够满足我们的需求。在本文中,我将详细介绍这个项目,并分享如何进行部署和使用。
1649 1
github短视频去除水印项目Douyin_TikTok_Download_API介绍
|
3月前
|
自然语言处理 DataWorks 算法
数据开发再提速!DataWorks正式接入Qwen3-Coder
阿里云DataWorks平台正式接入Qwen3-Coder模型,用户通过Copilot智能助手可实现自然语言交互生成代码,提升数据开发效率。支持SQL/Python代码生成、优化及Notebook文件创建,适用于数据分析与算法构建,助力企业高效开发。
433 0
|
SQL 缓存 关系型数据库
pymysql commit
【10月更文挑战第14天】pymysql commit
382 7
|
11月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
925 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
前端开发 JavaScript 开发者
探究单页应用(SPA)与多页应用(MPA):技术的选择与对比
在当今快节奏的互联网时代,单页应用(SPA)和多页应用(MPA)是两种常见的前端开发架构。本文将深入探讨这两种应用类型的特点、优势和不足,并提供一些帮助开发者做出选择的指导。
|
网络协议
TCP协议中TIME_WAIT状态的分析
`TIME_WAIT`状态是TCP协议设计中的一个重要组成部分,它通过确保数据传输的可靠性和连接的正确关闭来提升网络通信的稳定性。尽管 `TIME_WAIT`可能导致资源占用,适当的系统配置和网络编程实践可以最小化其潜在的负面影响。理解 `TIME_WAIT`状态及其背后的逻辑是每一位网络开发人员和系统管理员必须掌握的知识点。
1015 1