银河麒麟系统需通过命令行实现MySQL/PostgreSQL定时备份:MySQL用mysqldump导出并gzip压缩,PostgreSQL用pg_dump支持文本或自定义格式;校验用head查看SQL头,自动备份需shell脚本+crontab,并避免密码明文存储。

银河麒麟系统中需要通过命令行对MySQL、PostgreSQL等数据库执行可定时、可验证、可恢复的备份操作,避免图形界面不可用或权限受限时无法保护核心业务数据。
备份MySQL/MariaDB数据库
这一步操作起来很简单,直接在终端执行一条mysqldump命令即可生成SQL格式备份文件。
第一步:打开终端,切换到具有数据库读取权限的用户(如root或应用专用账号)。
第二步:执行完整备份命令:【mysqldump -u root -p --all-databases > /backup/all_dbs_$(date +\%Y\%m\%d_\%H\%M).sql】。输入密码后,将导出所有数据库结构与数据;若只备份单个库,把--all-databases替换为myapp_db。
第三步:为防止备份文件过大或传输慢,建议实时压缩:mysqldump -u root -p myapp_db | gzip > /backup/myapp_db_$(date +\%Y\%m\%d).sql.gz。注意不要漏掉管道符|,否则gzip无法接收输入流。
第四步:校验备份有效性,运行zcat /backup/myapp_db_$(date +\%Y\%m\%d).sql.gz | head -n 20查看前20行是否含CREATE TABLE语句——这是确认SQL内容未损坏的关键动作。
备份PostgreSQL数据库
PostgreSQL默认不启用密码自动读取,必须确保.pgpass文件已配置或使用-W参数交互式输密,否则备份会中断。
方法一:单库逻辑备份
执行pg_dump -U postgres -W -Fp -v myapp_db > /backup/myapp_db_$(date +\%Y\%m\%d).sql。其中-Fp表示纯文本格式,便于人工检查;-v开启详细日志,失败时能快速定位表级错误。
方法二:自定义格式+压缩归档
运行pg_dump -U postgres -W -Fc -Z9 -v myapp_db > /backup/myapp_db_$(date +\%Y\%m\%d).dump。【-Z9代表最高压缩比,但会显著增加CPU负载,生产环境建议-Z6】。该格式支持选择性还原单张表,比SQL格式更灵活。
构建每日自动备份脚本
手动执行容易遗漏,用shell脚本+crontab实现无人值守。
1. 创建脚本文件:sudo nano /usr/local/bin/kylin_db_backup.sh
2. 写入内容(以MySQL为例):
#!/bin/bash<br> BACKUP_DIR="/backup/db"<br> DATE=$(date +\%Y\%m\%d_\%H\%M)<br> mkdir -p $BACKUP_DIR<br> mysqldump -u root -pYourPassWordHere --single-transaction myapp_db | gzip > $BACKUP_DIR/myapp_db_$DATE.sql.gz<br> find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
3. 赋予执行权限:sudo chmod +x /usr/local/bin/kylin_db_backup.sh
4. 添加定时任务:sudo crontab -e,追加一行:0 2 * * * /usr/local/bin/kylin_db_backup.sh,表示每天凌晨2点执行。
注意:密码明文写在脚本里存在泄露风险,生产环境应改用~/.my.cnf配置文件并设置chmod 600权限。

















