跨境独立站宝塔面板批量导出站点数据库备份实操教程

为什么要批量导出数据库?

运营跨境独立站时,一个服务器上可能挂了七八个甚至十几个站点。
每次备份都需要登录宝塔面板,逐个站点进入数据库页面手动导出。
站点一多,操作重复、容易漏掉,而且占用大量时间。如果能用一行命令或一个脚本把所有数据库一次性导出,每次备份至少节省半小时
本文就给你一套可直接运行的方案。

动手前要准备什么

  • 一台安装了宝塔面板的Linux服务器(CentOS / Ubuntu均可)
  • 已经绑定了多个站点,并且每个站点有对应的数据库(宝塔创建站点时默认会生成同名数据库)
  • 能够通过SSH登录服务器(推荐使用FinalShell、Xshell或直接用宝塔自带的终端)
  • 拥有root权限或sudo权限(脚本中需要使用mysqldump命令)

如果你还没有SSH登录经验,可以打开宝塔面板左侧菜单“终端”,输入服务器root密码即可进入命令行。

一步步写出批量导出脚本

1. 创建备份存放目录

在命令行执行:

mkdir -p /backup/mysql_all
路径可以自己改,但后面脚本中的目录要对应。

2. 获取MySQL数据库列表

宝塔面板中站点的数据库通常命名规则是:站点前缀_数据库名
我们可以用下面命令列出所有数据库:

mysql -u root -p -e "SHOW DATABASES;" | grep -v -E "^(Database|information_schema|performance_schema|mysql|sys)$"

执行后会提示输入MySQL的root密码(默认就是安装宝塔时设置的那个)。

3. 写一个完整脚本实现批量导出

用你喜欢的编辑器(如vim或nano)创建一个文件:

nano /opt/backup_all_db.sh

粘贴以下内容:

#!/bin/bash
# 批量导出宝塔面板中所有非系统数据库
# 适用于跨境独立站多站点备份

# 配置区域
DB_USER="root"
DB_PASS="你的MySQL密码"  # 一定要改成实际密码
BACKUP_DIR="/backup/mysql_all"
DATE=$(date +%Y%m%d%H%M)

# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"

# 获取所有数据库列表,排除系统库
databases=$(mysql -u"$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES;" | grep -v -E "^(Database|information_schema|performance_schema|mysql|sys)$")

# 逐个导出
db_count=0
for db in $databases; do
    echo "正在导出数据库: $db"
    mysqldump --single-transaction --quick -u"$DB_USER" -p"$DB_PASS" "$db" > "$BACKUP_DIR/${db}_${DATE}.sql"
    if [ $? -eq 0 ]; then
        echo "  -> 成功: ${db}_${DATE}.sql"
        ((db_count++))
    else
        echo "  -> 失败: $db"
    fi
done

echo ""
echo "全部完成!共导出 $db_count 个数据库。"
echo "备份文件保存在: $BACKUP_DIR"

4. 赋予执行权限并运行

chmod +x /opt/backup_all_db.sh
bash /opt/backup_all_db.sh

脚本会自动遍历所有非系统数据库,生成以“数据库名_日期时间.sql”命名的文件。跨境独立站常见的数据库数量多,脚本一次跑完非常省心

执行中可能遇到的坑

  • MySQL密码错误:宝塔面板安装时自动生成的MySQL root密码,可以在宝塔面板“数据库”页面查看;如果忘记了,可以执行 cat /www/server/mysql/default.pass 获取。
  • 中文乱码:导出时加上 --default-character-set=utf8mb4 参数:
  mysqldump --default-character-set=utf8mb4 --single-transaction ...
  • 备份文件过大导致服务器卡顿:如果某个站点数据库超过1GB,建议在脚本中对大库使用 --quick--compress,或者单独为它设置备份计划。
  • 权限不足:确保 /backup/mysql_all 目录对运行脚本的用户可写;如果使用root运行则无此问题。

如何确认备份文件可用

1. 检查文件大小

ls -lh /backup/mysql_all/*.sql

每个文件大小应该与站点的数据量匹配,如果某个文件只有几百字节,多半是导出失败。

2. 随机挑一个库验证导入

在测试环境执行:

mysql -u root -p test_db < /backup/mysql_all/站点名_202503011200.sql

没有报错即表示备份有效。

常见问题解答

Q:脚本运行报“command not found: mysql”怎么办?
A:说明MySQL命令行工具未加入PATH。宝塔默认安装后mysql命令在 /www/server/mysql/bin/mysql,可以先用完整路径:/www/server/mysql/bin/mysql -u root -p。或者运行 ln -s /www/server/mysql/bin/mysql /usr/bin/mysql 建立软链接。

Q:我只想导出部分站点的数据库,不想全量导出?
A:在脚本的 databases= 那一行后面加上 | grep "站点关键字" 即可过滤,例如只导出包含 shop_ 前缀的库。

写在最后

跨境独立站站点越多,越需要自动化工具减轻运维负担。
本文给出的脚本经过多次实际执行,可以直接配合宝塔面板的定时任务使用(在宝塔计划任务中添加,每天凌晨自动跑一遍)。
这样你每天早上醒来,备份文件就已经静静地躺在目录里了。
如果遇到其他问题,欢迎在评论区交流。

分享到:
上一篇
家用住宅主机Linux容器数据卷持久化模型文件
下一篇
外贸站宝塔面板网站静态资源合并压缩优化
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意