统信UOS系统中,PostgreSQL、MySQL或达梦等数据库数据文件默认不包含在.uimg备份中,须单独逻辑导出或物理复制,否则整机还原后将丢失最新数据甚至无法启动。

统信UOS系统中运行的PostgreSQL、MySQL或达梦等数据库,其数据文件默认不包含在系统级.uimg备份中,必须单独导出逻辑备份或复制物理数据目录,否则还原整机镜像后数据库将丢失最新写入记录甚至无法启动。
确认数据库类型与服务状态
打开终端,依次执行以下命令判断当前安装的数据库及运行情况:
sudo systemctl list-units --type=service | grep -E "(postgresql|mysql|mariadb|dmserver)"
若无输出,说明未启用主流数据库服务;若有输出且状态为“active (running)”,记下服务名(如 postgresql.service),后续操作需基于该服务名展开。未确认服务状态前不可直接停库或拷贝数据目录,否则可能造成元数据损坏。
PostgreSQL数据库备份与恢复
方法一:使用pg_dump导出逻辑备份(推荐日常使用)
1、切换至postgres用户并导出全库:sudo -u postgres pg_dumpall > /media/usb/pg_backup_$(date +%Y%m%d_%H%M).sql
2、若仅需备份指定数据库,改用:sudo -u postgres pg_dump myappdb > /media/usb/myappdb_$(date +%Y%m%d).sql
3、备份文件生成后,立即校验首行是否含“-- PostgreSQL database dump”字样,避免因权限不足导致空文件。
方法二:停服后复制data目录(适用于裸机迁移或紧急快照)
1、停止服务:sudo systemctl stop postgresql
2、确认数据目录位置:sudo -u postgres psql -c "SHOW data_directory;" | grep "/var/lib/postgresql"
3、打包整个data目录:sudo tar -czf /media/usb/pg-data-$(date +%Y%m%d).tar.gz /var/lib/postgresql/*/main
【必须确保目标外接设备有足够空间,且tar命令执行期间不得重启或启动postgres服务】
MySQL/MariaDB数据库备份与恢复
第一步:确认MySQL root密码是否已知
若忘记root密码,不可强行跳过认证——此时应先通过mysqld_safe --skip-grant-tables重置,否则后续备份会失败。
第二步:执行逻辑导出
① 导出全部数据库:mysqldump -u root -p --all-databases > /media/usb/mysql-all-$(date +%Y%m%d_%H%M).sql
② 仅导出业务库(如wordpress):mysqldump -u root -p wordpress > /media/usb/wordpress-$(date +%Y%m%d).sql
③ 执行后输入密码,成功时无报错输出,文件末尾应含“-- Dump completed”标识。
第三步:恢复操作
将.sql文件复制回UOS系统后,执行:mysql -u root -p
注意:恢复前需确保目标数据库名不存在,否则会报“Database exists”错误;可先执行 drop database wordpress; 再创建空库。
达梦数据库(DM8)备份与恢复
达梦不兼容mysqldump或pg_dump,必须使用其自带的dmp工具链:
1、以dmdba用户登录:su - dmdba
2、进入安装目录bin子目录:cd /opt/dm8/bin
3、执行全库备份:./dmrman CTLSTMT="BACKUP DATABASE '/opt/dm8/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/home/dmdba/dmbak/full_bak_20261027'"
4、备份集生成路径为/home/dmdba/dmbak/full_bak_20261027,该目录下含backup.info与多个*.bak文件,缺一不可。
5、恢复时需先停库:sudo systemctl stop DmServiceDMSERVER
6、再执行:./dmrman CTLSTMT="RESTORE DATABASE '/opt/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmbak/full_bak_20261027'"
【达梦恢复后必须执行RECOVER DATABASE命令完成前滚,否则实例无法启动】











