麒麟os上可实现数据库周期性自动备份:一、crontab+mysqldump备份mysql;二、crontab+dexp备份达梦数据库;三、rsync+mysqldump组合实现远程同步备份。

如果您需要在麒麟OS上实现数据库的周期性自动备份,可通过系统级定时任务机制结合数据库导出命令完成。以下是多种可直接部署的定时备份方法:
一、使用crontab配合mysqldump定时备份MySQL
该方法利用MySQL原生导出工具mysqldump生成SQL格式备份文件,并通过crontab设定固定时间执行,适用于单机环境且无需额外服务组件。
1、确认mysqldump已安装并可执行:sudo mysqldump --version
2、创建专用备份目录:sudo mkdir -p /backup/mysql/$(date +%Y%m%d)
3、编写备份脚本/usr/local/bin/mysql_daily_backup.sh:
#!/bin/bash
USER="root"
PASSWORD="your_secure_password"
BACKUP_DIR="/backup/mysql/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
mysqldump -u$USER -p$PASSWORD --all-databases --single-transaction --routines --events > $BACKUP_DIR/full_$(date +%H%M%S).sql 2>/dev/null
gzip $BACKUP_DIR/full_$(date +%H%M%S).sql
find /backup/mysql -type d -mtime +7 -exec rm -rf {} \;
4、赋予脚本执行权限:sudo chmod +x /usr/local/bin/mysql_daily_backup.sh
5、编辑root用户定时任务:sudo crontab -e
6、添加以下行(每日凌晨2点10分执行):10 2 * * * /usr/local/bin/mysql_daily_backup.sh
二、使用crontab调用达梦数据库dexp工具定时备份
该方案专用于达梦数据库,通过逻辑导出命令dexp生成.dmp文件,支持按模式备份与压缩归档,具备明确的保留策略控制能力。
1、确认达梦环境变量已配置:echo $DM_HOME
2、创建备份脚本/usr/local/dm_backup/dm_cron_backup.sh:
#!/bin/bash
export DM_HOME="/home/dmdba/dmdbms"
export PATH=$DM_HOME/bin:$PATH
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
BAK_DIR="/backup/dm/$(date +%Y%m%d)"
mkdir -p $BAK_DIR
SCHEMA="SYSDBA"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
${DM_HOME}/bin/dexp USERID=SYSDBA/SYSDBA@localhost:5237 SCHEMAS=${SCHEMA} FILE=${BAK_DIR}/${SCHEMA}_${TIMESTAMP}.dmp LOG=${BAK_DIR}/${SCHEMA}_${TIMESTAMP}.log COMPRESS=Y
tar -czf ${BAK_DIR}/${SCHEMA}_${TIMESTAMP}.tar.gz -C $BAK_DIR ${SCHEMA}_${TIMESTAMP}.dmp ${SCHEMA}_${TIMESTAMP}.log
rm -f ${BAK_DIR}/${SCHEMA}_${TIMESTAMP}.dmp ${BAK_DIR}/${SCHEMA}_${TIMESTAMP}.log
find /backup/dm -name "*.tar.gz" -mtime +30 -delete
3、设置脚本权限:sudo chmod +x /usr/local/dm_backup/dm_cron_backup.sh
4、添加定时任务:sudo crontab -e
5、插入定时规则(每日2点10分执行):10 2 * * * /usr/local/dm_backup/dm_cron_backup.sh
三、基于rsync+mysqldump组合实现远程同步备份
该方式先本地导出再同步至远程主机,分离备份生成与存储环节,提升安全性与容灾能力,适用于跨网段或NAS备份场景。
1、在本地服务器生成SQL备份并压缩:
sudo mysqldump -uroot -p'password' --all-databases | gzip > /tmp/mysql_full_$(date +%Y%m%d).sql.gz
2、确保已配置SSH无密码登录至目标主机:
ssh-keygen -t rsa -b 4096 && ssh-copy-id user@192.168.10.200
3、执行远程同步命令:
rsync -avz --delete /tmp/mysql_full_$(date +%Y%m%d).sql.gz user@192.168.10.200:/backup/remote_mysql/
4、清理本地临时文件:
rm -f /tmp/mysql_full_$(date +%Y%m%d).sql.gz
5、将上述三步整合为脚本后,加入crontab定时调度,例如设置为每日2点10分运行:10 2 * * * /usr/local/bin/remote_mysql_backup.sh










