学无止境
欢迎关注我的公众号
接收定期更新文章
别再用 Navicat 慢速导出了!教你用 mysqldump 一键批量导出远程库
2025-12-30 11:18:56
1583

 

今天遇到一个挺有意思的问题:

Linux 服务器上没有安装 MySQL(或 MariaDB),但我想用 mysqldump 导出远程数据库。

1)这是很常见的场景 —— 比如你的数据库在另一台服务器(如阿里云 RDS、腾讯云 CDB 或其他 DB 服务器),而当前这台 Linux 机器只是跳板机或应用服务器。
2)部分客户端工具导出的sql文件每个insert就是一条数据,数据量大的情况下速度相当慢。

0、 做个解释哈!

mysqldump 是 MySQL 客户端工具的一部分,即使本地没有 MySQL 服务,只要安装了 MySQL 客户端(包含 mysqldump,就可以连接远程数据库并导出数据。

所以:你不需要在本机运行 MySQL 服务,只需要安装 MySQL 客户端工具包

那我们有哪些方式导出mysql数据库呢?

1、安装 MySQL 客户端(含 mysqldump)

方法一:通过系统包管理器安装(推荐)

▶ Ubuntu / Debian:

      
1
2

sudo apt update
sudo apt install mysql-client -y

安装后即可使用:

      1mysqldump -h<远程IP> -u<用户名> -p<密码> 数据库名 > backup.sql

▶ CentOS / AlmaLinux / Rocky Linux / Alibaba Cloud Linux:

      
1
2
3
4
5
6

# 对于 MySQL 官方客户端(推荐)
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm -y
sudo yum install mysql-community-client -y
 
# 或使用系统自带的 MariaDB 客户端(兼容)
sudo yum install mariadb -y

安装 mariadb 包也会提供 mysqldump 命令(MariaDB 的版本,但完全兼容 MySQL)。

方法二:只下载 mysqldump(不推荐,复杂)

你可以从 MySQL 官网下载 MySQL ShellMySQL Client Utilities 的 tar 包,解压后直接使用 bin/mysqldump
但这种方式需要手动处理依赖(如 libncurses、libssl),不如用包管理器方便

2、docker环境下使用(亦推荐)

若你当前服务器已安装过docker,可以方便的使用该方法。 该方法首次会拉取镜像,创建容器用完之后自动删除容器,确保服务器的环境的干净。

      
1
2
3
4
5
6
7
8
9
10
11

docker run --rm \
  mysql:8.0 \
  mysqldump \
    -h rm-xxx.mysql.rds.aliyuncs.com \
    -P 3306 \
    -u admin \
    -p'MySecurePass123!' \
    --single-transaction \
    myapp_db > myapp_db_$(date +%F).sql
    
#若需要忽略某个日志表,重复添加 --ignore-table=jiarui-erp.api_call_logs 即可

3、mysqldump 使用命令

      
1
2
3
4
5
6
7
8
9
10

mysqldump \
  -h rm-bp123456789.mysql.rds.aliyuncs.com \
  -P 3306 \
  -u admin \
  -p'your_password' \
  --single-transaction \
  --ignore-table=数据库名称.表名 \
  --routines \
  --triggers \
  mydb > mydb_backup_$(date +%F).sql

⚠️ 注意:

  • -p 后直接跟密码(无空格)可避免交互输入,但有安全风险(建议用配置文件或交互式输入)

  • • 如果密码含特殊字符,用单引号包裹:-p'P@ss!w0rd'

4、 常见误区

误区正确理解
必须安装 MySQL 服务才能用 mysqldump❌ 只需客户端工具
mysqldump 只能导出本地数据库❌ 支持 -h 远程连接
没有 root 权限就不能安装❌ 普通用户可通过 --prefix 编译安装,但用包管理器最简单
每次必须导入数据库的所有表❌ 可以--ignore-table参数忽略不需要的表

 


MySQL导出
远程备份
Linux运维
Docker技巧
欢迎关注我的公众号,获取更多文章