如何在 MySQL / MariaDB 中跳过多张表导出或指定多张表导出备份

A kitten
蒋川
B 端产品经理,卡拉云联合创始人
阅读时长 1 分钟

如何在 MySQL / MariaDB 中跳过多张表导出或指定多张表导出备份

当我们对 MySQL / MariaDB 数据库进行备份时,有时候我们需要针对某些表进行导出,或者我们需要仅忽略跳过某几张表之后再对整个数据库进行备份。这种需求还挺常见,本教程将详细讲解如何跳过或指定数据库中的表进行导出备份。

先决条件

  • 一台安装好 MySQL Server 的服务器(如果你还没有配置 MySQL,可按照我写的教程部署 MySQL
  • 拥有适当权限的 Root 账号

准备数据

打开你的 MySQL Server ,将以下代码复制到命令行中执行。此段代码创建了 1 个库及 4 个表。

后文我们将使用这些数据进行演示。

CREATE DATABASE IF NOT EXISTS kalacloud_data;

USE kalacloud_data;

CREATE TABLE kalacloud_01 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
);

CREATE TABLE kalacloud_02 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
);

CREATE TABLE kalacloud_03 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
);

CREATE TABLE kalacloud_04 (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
);

我们新建了 1 个库和 4 张表

准备数据

1. 导出备份时,跳过一张表备份

mysqldump --ignore-table=db_name.table_name -u[user_name] -p[password] da_name > kalacloud_backup_01.sql

在 shell 中使用导出命令时,加上 -ignore-table 参数,来忽略其中一张表

实战示例:

mysqldump --ignore-table=kalacloud_data.kalacloud_02 -ukalacloud -p kalacloud_data > kalacloud_backup_01.sql

返回结果示例:

跳过一张表备份

导出后,我们使用 cat 命令查看导出的 sql 文件,文件中包含表名为 kalacloud_01、03、04 的表,02 这张表被跳过了。

扩展阅读:如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV

2. 导出备份时,跳过多张表备份

有两种方法可以跳过多张表对 MySQL 库进行备份,大家可根据自己的实际应用场景进行选择。

假设我们要跳过 02 和 03 这两张表备份整个数据库

方法一:--ignore-table 的多遍使用,跳过多张指定表导出备份

mysqldump --ignore-table=kalacloud_data.kalacloud_02 --ignore-table=kalacloud_data.kalacloud_03 -ukalacloud -p kalacloud_data > kalacloud_backup_02.sql

返回结果示例:

--ignore-table 的多遍使用,跳过多张指定表导出备份

方法二:使用脚本跳过指定表导出备份

首先我们在 shell 下新建一个脚本 kalacloud-backup.sh

sudo nano kalacloud-backup.sh

使用 nano 新建一个名为 kalacloud-backup.sh 的脚本,然后修改下面代码中数据库的用户名和密码,然后复制进去,保存退出。


USER=kalacloud  #数据库的登录用户名
PASSWORD=password #数据库的密码
HOST=localhost
DATABASE=kalacloud_data
DB_FILE=kalacloud_backup_03.sql
EXCLUDED_TABLES=(
kalacloud_02
kalacloud_03
)

IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
   IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done

echo "Dump structure"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data ${DATABASE} > ${DB_FILE}

echo "Dump content"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info ${IGNORED_TABLES_STRING} >> ${DB_FILE}

然后给你新建的 [kalacloud-backup.sh](http://kalacloud-backup.sh) 脚本添加执行权限

sudo chmod +x ./kalacloud-backup.sh

运行脚本

./kalacloud-backup.sh

返回结果示例:

使用脚本跳过指定表导出备份

扩展阅读:如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南

3. 导出指定一张或多张表备份

mysqldump kalacloud_data -u kalacloud -p --tables kalacloud_01 kalacloud_02 > kalacloud_backup_04.sql

返回结果示例:

导出指定一张或多张表备份

扩展阅读:如何在两台服务器之间迁移 MySQL / MariaDB 数据库 阿里云腾讯云迁移案例

4.使用「卡拉云」一键导入导出数据

除了直接使用命令行对数据进行导入导出外,我们还可以使用卡拉云对数据库中的数据进行处理。

不仅可以像命令行一样灵活,还可根据自己的工作流,定制开发。无需繁琐的前端开发,只需要简单拖拽,即可快速搭建企业内部工具。数月的开发工作量,使用卡拉云后可缩减至数天,欢迎免费试用卡拉云

比如后端工程师接到产品需求,协助导出某类数据等场景,如果这类需求频繁出现,推荐使用卡拉云,卡拉云是新一代低代码开发工具,免安装部署,可一键接入包括 MySQL 在内的常见数据库及 API。

卡拉云可快速接入常见的数据库及API

卡拉云可快速接入的常见数据库及 API

卡拉云可根据公司工作流需求,轻松搭建数据看板,并且可分享给组内的小伙伴共享数据

卡拉云仅需拖拽即可快速生成前端组件

仅需拖拽一键生成前端代码,简单一行代码即可映射数据到指定组件中。

卡拉云可轻松导出各类数据格式

卡拉云可直接添加导出按钮,导出适用于各类分析软件的数据格式,方便快捷。立即开通卡拉云,导入导出你的数据

如果你还有什么疑问,欢迎一起讨论。我的微信 HiJiangChuan

卡拉云联合创始人蒋川的微信

有关 MySQL 教程,可继续拓展学习:

© 2021 卡拉云 Built with ❤️ in Beijing

京ICP备15049164号-9