docker容器导入导出MySQL数据

流程图

流程图

# 备份
docker exec mysql mysqldump -uroot -p database_name > backup.sql
# 恢复
docker exec -i mysql mysql -uroot -p database_name < backup.sql

# 备份
docker exec mysql mysqldump --single-transaction --set-gtid-purged=off \
--ignore-table=orms.onl_cgform_enhance_js --routines --triggers --events \
-uroot -p"root" testdb | gzip > /data/database_backup/full20260106.sql.gz

# 恢复
nohup docker exec -i mysql sh -c 'exec mysql -uroot -proot testdb' < full-20260106.sql &

异地备份方案

异地备份服务器windows 10.10.1.1 ,安装rsync服务端,配置如下:
rsyncd.conf

uid=0
gid=0
use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
port = 8733

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/c/work
read only = false
transfer logging = yes


[patch_backup]    <<<<<
path = /cygdrive/d/DMP/testpath
read only = false
transfer logging = yes

客户端LINUX命令如下

只同步更新的文件,已经同步过的文件不会再同步,把本地文件同步到备份服务器

# rsync --port=8733 -avzrtopg --progress /data/database_backup/ 10.10.1.1::patch_backup  <<<<<

客户端配合crontab命令

05 3 * * * /bin/sh /data/scripts/sync_backup_server.sh > /data/database_backup/logs/exec_sync_to_backupserver.log 2>&1

备注:
从备份服务器下载文件到本地并删除服务端的文件

## rsync的名称
export rycname=sjztfims

## dmp文件路径 
export dmp=/OSdata/DMP/${systemname}

rsync --port=873 -avzrtopg --progress --remove-source-files --delete 10.10.1.1::${rycname} $dmp

更多推荐