先是远程连接数据库,服务器是aws的,连接的数据库是aws rds,连接是正常的,通过ssl连接,主机地址填写的是rds端点域名。
面板导入数据库,报错。
然后安装phpadmin从phpadmin导入,正常导入。
面板上点击备份,一样报错。
然后我自己在应用商店安装的MySQL8.4.4容器,测试面板的MySQL是可以正常导入和备份的。
报错如下图:
添加完远程数据库是否有同步远程数据库?
目前的解决方案是写了个脚本用系统的mysqldump备份。
#!/bin/bash
BACKUP_DIR="/opt/db_backup/backup"
LOG_FILE="/opt/db_backup/backup.log"
DB_LIST=(
"db1"
"db2"
"db3"
)
RETENTION_DAYS=14 # 备份保留天数
mkdir -p "$BACKUP_DIR"
touch "$LOG_FILE"
chmod 600 "$LOG_FILE"
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
{
log "===== 备份任务开始 ====="
if ! command -v mysqldump &> /dev/null; then
log "错误:mysqldump 未安装!"
exit 1
fi
log "清理超过 ${RETENTION_DAYS} 天的旧备份..."
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +"$RETENTION_DAYS" -delete
for DB in "${DB_LIST[@]}"; do
TIMESTAMP=$(date +%Y%m%d_%H%M)
BACKUP_FILE="${BACKUP_DIR}/${DB}_${TIMESTAMP}.sql.gz"
log "开始备份数据库: $DB"
if mysqldump --defaults-file=/opt/db_backup/.my.cnf \
--single-transaction \
--routines \
--triggers \
--databases "$DB" | gzip > "$BACKUP_FILE"; then
if [ -s "$BACKUP_FILE" ]; then
log "备份成功 | 文件大小: $(du -h "$BACKUP_FILE" | awk '{print $1}')"
else
log "错误:生成空备份文件!"
exit 2
fi
else
log "错误:$DB 备份失败!"
exit 3
fi
done
log "===== 备份任务完成 ====="
} 2>&1 | tee -a "$LOG_FILE"
然后加入crontab每天定时执行。
面板里面计划任务设置备份目录然后上传到onedrive。
同步了,备份是导入都是失败,尝试备份,我看了系统日志。大概是ssl的问题,日志里面错误的操作:
start to mysqldump | gzip > /opt/1panel/backup/database/mysql/aws/gitea/gitea_2025041613214602aa8.sql.gz.gzip [2025-04-16 13:21:46]
[DEBUG] docker run --rm --net=host -i mysql:8.4.5 /bin/bash -c 'mysqldump --routines -h database-1.example.ap-northeast-1.rds.amazonaws.com -P 3306 -uadmin -p****** --ssl-mode=DISABLED --default-character-set=utf8mb4 gitea
没有指定 --ssl --ssl-ca=[]
或者在mysql里面是 --ssl-mode=VERIFY_IDENTITY \ --ssl-ca=[]
。
我自己机子机子mysql是基于mariadb client的
for DB in dbq1 db2 db3; do
mysqldump --defaults-file=/opt/db_backup/.my.cnf \
--single-transaction \
--routines \
--triggers \
--databases $DB | gzip > /opt/db_backup/backup/${DB}_$(date +%Y%m%d_%H%M).sql.gz
done
ssl证书路径,账号密码地址放在.my.cnf里面
是可以正常备份的