You need to enable JavaScript to run this app.
导航

使用mysqldump对RDS实例进行备份

最近更新时间2022.08.24 13:37:26

首次发布时间2022.06.08 11:38:14

前言

mysqldump 是 MySQL 原生的备份工具。具有如下优点:

  1. 命令简单,操作方便
  2. 由于是逻辑备份,备份文件中均为 SQL 语句,很方便跨云迁移和不同平台之间的迁移。
关于实验

预计部署时间:20分钟
级别:初级
相关产品:关系型数据库 MySQL 5.7.32 版本
受众: 通用

环境说明
  1. 如果还没有火山引擎账号,点击此链接注册账号

  2. 如果您还没有 VPC,请先点击链接创建VPC

  3. 关系型数据库 MySQL 5.7.32 版本

  4. 云服务器ECS:Centos 7

  5. 在 ECS 主机上准备 MySQL 客户端

实验步骤

准备相关数据

由于仅做测试使用,数据库中仅有少量数据。

mysql> create database rudonx1;
Query OK, 1 row affected (0.04 sec)

mysql> use rudonx1;
Database changed
mysql> create table t1(id int);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t1 values(1);
Query OK, 1 row affected (0.05 sec)

mysql> create view t1_view as select * from t1;
Query OK, 0 rows affected (0.04 sec)

进行单库备份

运行命令如下:

(base) [root@ip-10-0-0-22 ~]# mysqldump -h 111.xx.xx.xx  -urudonx -p'$password' --databases rudonx1  --routines --triggers --set-gtid-purged=off --master-data=2  --single-transaction > mysqldump.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

备份结束后,备份内容在 mysqldump.sql 中。查看文件内容如下(文件中省略部分内容):

(base) [root@ip-10-0-0-22 ~]# cat mysqldump.sql 
-- MySQL dump 10.13  Distrib 5.7.19, for Linux (x86_64)
--
-- Host: xx.xx.xx.xx    Database: rudonx1
-- ------------------------------------------------------
-- Server version       5.7.32-log



--
-- Position to start replication or point-in-time recovery from
--

-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000172', MASTER_LOG_POS=59429210;

--
-- Current Database: `rudonx1`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `rudonx1` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `rudonx1`;

--
-- Table structure for table `t1`
--

DROP TABLE IF EXISTS `t1`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `t1`
--

LOCK TABLES `t1` WRITE;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
INSERT INTO `t1` VALUES (1);
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Temporary table structure for view `t1_view`
--

DROP TABLE IF EXISTS `t1_view`;
/*!50001 DROP VIEW IF EXISTS `t1_view`*/;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
/*!50001 CREATE VIEW `t1_view` AS SELECT 
 1 AS `id`*/;
SET character_set_client = @saved_cs_client;

--
-- Dumping routines for database 'rudonx1'
--

--
-- Current Database: `rudonx1`
--

USE `rudonx1`;

--
-- Final view structure for view `t1_view`
--

/*!50001 DROP VIEW IF EXISTS `t1_view`*/;
……

-- Dump completed on 2022-05-10  8:33:37

进行单表备份

进行单表备份的命令如下,请您参考,其中指定了需要备份 rudonx1.t1 表。

[root@rudonx ~]# mysqldump -h 111.xx.xx.xx -urudonx -p'$password' rudonx1 t1 --set-gtid-purged=OFF > t1.sql

恢复备份文件

MySQL 恢复备份文件非常简单,只需要运行如下命令即可,需要注意的是,/root 为备份文件存放的目录,在执行命令时需要指定。

mysql> source /root/mysqldump.sql

参数解释

  1. --host/-h: MySQL 实例的 IP地址
  2. --password/-p:密码
  3. --port:指定端口号
  4. --user : 指定用户名
  5. --master-data:在备份文件中会生成一条CHANGE MASTER TO语句,该语句中包含了binlog pos, binlog file number,如果源实例没有权限限制,建议设置为2
  6. --set-gtid-purged=value:控制在备份文件中是否添加SET@@global.gtid_purged语句
  7. --all-databases: 备份所有数据库下的所有表
  8. --database/-B:备份指定数据库下的所有表

更多参数,请您参考文档[1]。

清除资源

您可以从 MySQL 和 ECS 控制台中轻松删除实例。如果您不再使用,建议您执行删除操作,以免继续为其付费。

参考文档

[1] https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

如果您有其他问题,欢迎您联系火山引擎技术支持服务