【赵渝强老师】使用mydumper备份MySQL

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 本文介绍了使用mydumper工具进行MySQL数据库备份与恢复的操作方法。相比单线程工作的mysqldump,mydumper支持多线程,速度提升可达10倍。其功能包括事务性表快照、快速压缩、导出binlog等,并提供详细的参数说明和操作步骤。文章通过实例演示了安装mydumper、创建存储目录、全库备份、指定数据库及表备份、删除数据库以及使用myloader恢复数据的完整流程,并附带视频讲解,帮助用户更好地理解和应用该工具。

b257.png

MySQL在备份方面包含了自身的mysqldump工具,但其只支持单线程工作,这就使得它无法迅速的备份数据。而mydumper作为一个实用工具,能够良好支持多线程工作,这使得它在处理速度方面十倍于传统的mysqldump。其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么会引起DML阻塞。但一般现在的MySQL都有主从,备份也大部分在从上进行,所以锁的问题可以不用考虑。这样,mydumper能更好的完成备份任务。mydumper具备以下特点:


  • 轻量级C语言写的
  • 执行速度比mysqldump快10倍
  • 事务性和非事务性表一致的快照(适用于0.2.2以上版本)
  • 快速的文件压缩
  • 支持导出binlog
  • 多线程恢复(适用于0.2.1以上版本)
  • 以守护进程的工作方式,定时快照和连续二进制日志(适用于0.5.0以上版本)
  • 开源组件(GNU GPLv3)


视频讲解如下:


下面通过具体的步骤来演示如何使用mydumper进行数据库的热备份与恢复。


(1)安装mydumper

yum install -y \
https://github.com/maxbube/mydumper/releases/download/v0.9.5/mydumper-0.9.5-2.el7.x86_64.rpm


(2)查看mydumper的帮助信息

mydumper --help
# 输出的信息如下:
Usage:
  mydumper [OPTION...] multi-threaded MySQL dumping
Help Options:
  -?, --help             Show help options
Application Options:
  -B, --database         Database to dump
  -T, --tables-list      Comma delimited table list to dump 
                            (does not exclude regex option)
  -O, --omit-from-file   File containing a list of database.table 
entries to skip, one per line 
(skips before applying regex option)
  -o, --outputdir        Directory to output files to
  ......


下表是mydumper常用参数的说明。

image.png


(3)创建mydumper备份的存储目录。

mkdir -p /databackup/mydumper/all/


(4)备份所有数据库

mydumper -u root --password=Welcome_1 \
--socket /tmp/mysql.sock \
--outputdir /databackup/mydumper/all/
# 提示:这里的--socket /tmp/mysql.sock参数是必须的。在默认情况下mydumper在加载/var/lib/mysql/mysql.sock文件。如果该文件不存在,将出现下面的错误信息。
** (mydumper:69463): CRITICAL **: Error connecting to database: 
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'


(5)查看目录/databackup/mydumper/下的内容

tree /databackup/mydumper/all | more
# 输出的信息如下:
/databackup/mydumper/all
├── demo1.audit_message-schema.sql
├── demo1.audit_message.sql
├── demo1.classes-schema.sql
├── demo1.dept-schema.sql
├── demo1.dept.sql
├── demo1.emp-schema.sql
├── demo1.emp.sql
├── demo1.indextable1-schema.sql
├── demo1.indextable1.sql
......


(6)查看文件/databackup/mydumper/demo1.emp.sql的内容

cat /databackup/mydumper/demo1.emp.sql
# 输出的信息如下:
/*!40101 SET NAMES binary*/;
/*!40014 SET FOREIGN_KEY_CHECKS=0*/;
/*!40103 SET TIME_ZONE='+00:00' */;
INSERT INTO `emp` VALUES
(7369,"SMITH","CLERK",7902,"1980/12/17",800,NULL,20),
(7499,"ALLEN","SALESMAN",7698,"1981/2/20",1600,300,30),
(7521,"WARD","SALESMAN",7698,"1981/2/22",1250,500,30),
(7566,"JONES","MANAGER",7839,"1981/4/2",3670,NULL,20),
(7654,"MARTIN","SALESMAN",7698,"1981/9/28",1250,1400,30),
(7698,"BLAKE","MANAGER",7839,"1981/5/1",2850,NULL,30),
(7782,"CLARK","MANAGER",7839,"1981/6/9",2550,NULL,10),
(7788,"SCOTT","ANALYST",7566,"1987/4/19",3000,NULL,20),
(7839,"KING","PRESIDENT",-1,"1981/11/17",5950,NULL,10),
(7844,"TURNER","SALESMAN",7698,"1981/9/8",1500,NULL,30),
(7876,"ADAMS","CLERK",7788,"1987/5/23",1100,NULL,20),
(7900,"JAMES","CLERK",7698,"1981/12/3",950,NULL,30),
(7902,"FORD","ANALYST",7566,"1981/12/3",3000,NULL,20),
(7934,"MILLER","CLERK",7782,"1982/1/23",1400,NULL,10);
# 提示:可以看出mydump也将数据备份成了SQL语句。


(7)备份指定数据库demo1

mkdir -p /databackup/mydumper/demo1/
mydumper -u root --password=Welcome_1 \
--socket /tmp/mysql.sock \
--database demo1 \
--outputdir /databackup/mydumper/demo1/


(8)备份指定数据库demo1下指定的表(员工表和部门表)

mkdir -p /databackup/mydumper/multi_tables/
mydumper -u root --password=Welcome_1 \
--socket /tmp/mysql.sock \
--database demo1 \
--tables-list emp,dept \
--outputdir /databackup/mydumper/multi_tables/


(9)删除demo1数据库

mysqladmin -uroot -pWelcome_1 drop demo1
# 输出的信息如下:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the 'demo1' database [y/N] y
Database "demo1" dropped


(10)使用myloader执行恢复数据库demo1

mysqladmin -uroot -pWelcome_1 create demo1 
myloader -u root -p Welcome_1 --socket /tmp/mysql.sock \
--database demo1 \
-d /databackup/mydumper/demo1/
# 提示:在执行恢复之前,demo1如果没有,则需要事先创建。


(11)检查数据是否恢复




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】MySQL的事务隔离级别
数据库并发访问时易引发数据不一致问题。如客户端读取到未提交的事务数据,可能导致“脏读”。MySQL通过四种事务隔离级别(读未提交、读已提交、可重复读、可序列化)控制并发行为,默认为“可重复读”,以平衡性能与数据一致性。
297 0
|
4月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
415 10
|
4月前
|
存储 关系型数据库 MySQL
【赵渝强老师】MySQL数据库的多实例环境
MySQL多实例是指在一台服务器上运行多个MySQL服务,通过不同端口提供独立的数据服务。各实例共享安装程序,但使用各自的配置文件和数据文件,实现资源高效利用。本文详细介绍了如何通过“mysqld_multi”工具配置和启动多个MySQL实例,并演示了目录创建、初始化、配置文件修改及实例启动等操作步骤。
219 1
|
6月前
|
存储 关系型数据库 MySQL
【赵渝强老师】使用select...into outfile语句备份MySQL
本文介绍了MySQL中使用`SELECT...INTO OUTFILE`语句将表数据导出为文本文件的方法。通过示例演示了如何备份员工表(emp)的数据,包括创建存储目录、设置权限、配置参数`secure_file_priv`以及解决相关错误的过程。字段分隔符和行终止符可自定义,确保数据格式符合需求。最后展示了备份文件的内容,验证操作成功。
491 36
|
5月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL中的数据库对象
本教程详细介绍了MySQL数据库中的常见对象,包括表、索引、视图、事件、存储过程和存储函数的创建与管理。内容涵盖表的基本操作、索引的使用、视图简化查询、事件调度功能等,并通过具体示例演示相关SQL语句的使用方法。
120 0
|
6月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mysqldump备份MySQL
本文介绍了 MySQL 自带的逻辑备份工具 mysqldump 的使用方法。通过 mysqldump,可以将数据库中的数据转换为对应的 SQL 插入语句,便于备份和还原。文章详细说明了如何备份所有数据库、指定数据库及特定表,排除某些表不备份的操作,以及删除数据库后如何通过备份文件恢复数据。同时提供了视频讲解和具体命令示例,帮助用户更好地理解和应用该工具。
414 5
|
7月前
|
存储 关系型数据库 MySQL
【赵渝强老师】MySQL的备份方案
本文详细介绍了MySQL数据库备份与恢复的多种方式,包括物理备份与逻辑备份的概念及区别、全量备份、增量备份和差异备份的特点,以及热备份与冷备份的适用场景与优缺点。通过图文结合的方式,并辅以视频讲解,帮助读者全面了解MySQL备份策略及其工具选择,为实际操作提供理论支持。
254 9
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
169 3
|
3月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
850 152

推荐镜像

更多