在开始前,请先确保满足以下2个必要条件,避免后续操作卡壳:
该方式无需写代码,界面直观,适合所有水平的用户,操作后系统会自动生成备份脚本和定时任务。
登录宝塔面板后,点击左侧导航栏的「数据库」按钮,进入数据库管理界面,找到需要备份的数据库,点击对应行右侧的「备份」按钮(图标为旋转的箭头+云盘)。
点击备份后,首先弹出的是单次备份窗口,默认备份目录为「/www/backup/database」(可点击修改按钮调整路径,建议保留在非系统盘的独立分区,避免系统盘占满影响网站运行),勾选好需要备份的库后,点击「立即备份」,等待10-30秒(库大小决定时间),显示「备份成功」后,可在下方的「备份记录」标签页中查看、下载、删除已生成的备份包。
点击数据库管理界面顶部的「计划任务」按钮(图标为时钟),进入计划任务管理页:
添加完成后,在计划任务列表中找到刚创建的备份任务,点击对应行右侧的「执行」按钮(图标为三角形播放键)手动触发一次,执行完成后:
该方式支持自定义备份路径、压缩方式、推送至第三方云存储(如阿里云OSS、腾讯云COS),适合有特殊需求的用户。
登录宝塔面板后,点击左侧导航栏的「终端」按钮,进入终端界面,输入服务器root密码(密码输入时不会显示字符,输入完成后按回车键即可)。

在终端中执行以下命令,创建并编辑备份脚本(脚本名可自定义,这里用db_backup.sh):
```bash vi /www/server/panel/scripts/db_backup.sh ```进入vi编辑器后,按「i」键进入插入模式,复制以下完整脚本并粘贴(替换脚本开头的配置项为自己的实际信息):
```bash !/bin/bash -- 配置项开始 -- 数据库类型:mysql/mariadb/postgresql/mongodb DB_TYPE="mysql" 数据库用户名 DB_USER="root" 数据库密码(注意:如果密码包含特殊字符,建议加单引号包裹) DB_PASS='your_db_password' 数据库主机地址(本地数据库用localhost或127.0.0.1) DB_HOST="127.0.0.1" 数据库端口(MySQL/MariaDB默认3306,PostgreSQL默认5432,MongoDB默认27017) DB_PORT="3306" 需要备份的数据库列表(多个库用空格分隔,全选可写all) DB_LIST="db1 db2 db3" 备份文件保存路径(建议保留在非系统盘的独立分区) BACKUP_DIR="/www/backup/database_custom" 备份文件保留天数 BACKUP_DAYS="7" -- 配置项结束 -- 创建备份目录(如果不存在) mkdir -p $BACKUP_DIR 获取当前日期时间,用于命名备份文件 DATE=$(date +%Y-%m-%d-%H-%M-%S) 备份数据库逻辑 if [ "$DB_TYPE" = "mysql" ] || [ "$DB_TYPE" = "mariadb" ]; then if [ "$DB_LIST" = "all" ]; then mysqldump -u$DB_USER -p$DB_PASS -h$DB_HOST -P$DB_PORT --single-transaction --all-databases | gzip > $BACKUP_DIR/all_databases_$DATE.sql.gz else for DB_NAME in $DB_LIST; do mysqldump -u$DB_USER -p$DB_PASS -h$DB_HOST -P$DB_PORT --single-transaction $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME_$DATE.sql.gz done fi elif [ "$DB_TYPE" = "postgresql" ]; then 切换到postgres用户执行备份(PostgreSQL默认要求) if [ "$DB_LIST" = "all" ]; then su - postgres -c "pg_dumpall | gzip > $BACKUP_DIR/all_databases_$DATE.sql.gz" else for DB_NAME in $DB_LIST; do su - postgres -c "pg_dump $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME_$DATE.sql.gz" done fi elif [ "$DB_TYPE" = "mongodb" ]; then if [ "$DB_LIST" = "all" ]; then mongodump --host $DB_HOST --port $DB_PORT --username $DB_USER --password $DB_PASS --authenticationDatabase admin --gzip --archive=$BACKUP_DIR/all_databases_$DATE.archive.gz else for DB_NAME in $DB_LIST; do mongodump --host $DB_HOST --port $DB_PORT --username $DB_USER --password $DB_PASS --authenticationDatabase admin --db $DB_NAME --gzip --archive=$BACKUP_DIR/$DB_NAME_$DATE.archive.gz done fi fi 删除超过保留天数的备份文件 find $BACKUP_DIR -type f -name ".sql.gz" -o -name ".archive.gz" -mtime +$BACKUP_DAYS -exec rm -f {} \; ```粘贴完成后,按「Esc」键退出插入模式,输入「:wq」并按回车键保存并退出vi编辑器。
在终端中执行以下命令,给脚本添加可执行权限:
```bash chmod +x /www/server/panel/scripts/db_backup.sh ```在终端中执行以下命令,手动触发一次备份:
```bash /www/server/panel/scripts/db_backup.sh ```等待执行完成后,进入「/www/backup/database_custom」目录(可通过左侧导航栏的「文件」按钮进入),确认有新的备份包生成。
进入宝塔面板的「计划任务」管理页:
备份的最终目的是恢复,以下是宝塔面板可视化恢复的方法:
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图