介绍
紧接上文在KylinOS-Server-V10-SP3中配置好了达梦数据库DM8,创建了普通用户webapp来避开权限问题。同时配置了Nginx+Flask实现了一个基础的前后端交互网页。

按照剩余题目要求,需要实现以下内容
数据库集群搭建
- 主从集群搭建:完成达梦数据库主从集群搭建,实现主从节点数据实时同步,确保主节点故障时,从节点可正常切换,保障数据库⾼可⽤。
数据库配置与管理
- 数据库管理:创建数据库表空间、数据表、专⽤应⽤⽤⼾,分配合理权限;导⼊测试数据(数据量规模⾃定,需满⾜应⽤查询需求);配置数据库备份策略(备份⽅式、频率⾃定),确保数据安全,可正常完成备份与恢复操作。
先前准备
首先需要保证各项服务的正常运行与联通
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| [root@Kylin-Server-02 erp]# systemctl status nfs ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled) Drop-In: /run/systemd/generator/nfs-server.service.d └─order-with-mounts.conf Active: active (exited) since Thu 2026-05-21 15:36:30 CST; 5 days ago Main PID: 48732 (code=exited, status=0/SUCCESS) Tasks: 0 Memory: 0B CGroup: /system.slice/nfs-server.service
5月 21 15:36:30 Kylin-Server-02 systemd[1]: Starting NFS server and services... 5月 21 15:36:30 Kylin-Server-02 rpc.nfsd[48732]: rpc.nfsd: knfsd is currently down 5月 21 15:36:30 Kylin-Server-02 rpc.nfsd[48732]: rpc.nfsd: Writing version string to kernel: -2 +3 +4 +4.1 +4.2 5月 21 15:36:30 Kylin-Server-02 rpc.nfsd[48732]: rpc.nfsd: Created AF_INET TCP socket. 5月 21 15:36:30 Kylin-Server-02 rpc.nfsd[48732]: rpc.nfsd: Created AF_INET6 TCP socket. 5月 21 15:36:30 Kylin-Server-02 systemd[1]: Started NFS server and services.
[root@Kylin-Server-02 erp]# systemctl status erp-app.service ● erp-app.service - ERP Application (Flask Backend) Loaded: loaded (/etc/systemd/system/erp-app.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2026-05-27 14:09:44 CST; 35min ago Main PID: 54991 (python3) Tasks: 4 Memory: 44.2M CGroup: /system.slice/erp-app.service ├─54991 /usr/bin/python3 /data/www/erp/app.py └─54993 /usr/bin/python3 /data/www/erp/app.py
5月 27 14:13:08 Kylin-Server-02 python3[54993]: 192.168.44.1 - - [27/May/2026 14:13:08] "GET / HTTP/1.1" 200 -
[root@Kylin-Server-02 erp]# df -h /data/backup /data/logs /data/app 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/klas-root 37G 21G 17G 56% / /dev/mapper/klas-root 37G 21G 17G 56% / /dev/mapper/klas-root 37G 21G 17G 56% / [root@Kylin-Server-02 erp]# rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 58803 status 100024 1 tcp 41031 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100021 1 udp 50281 nlockmgr 100021 3 udp 50281 nlockmgr 100021 4 udp 50281 nlockmgr 100021 1 tcp 43077 nlockmgr 100021 3 tcp 43077 nlockmgr 100021 4 tcp 43077 nlockmgr
|

配置数据库
首先配置数据库热备,也就是开启数据库归档模式,此时需要完全关闭达梦数据库
1 2 3
| ps -ef | grep dmserver kill -9 PID /home/dmdba/dmdbms/bin/DmServiceDMSERVER stop
|
修改dm.ini,找到/dmdata/data/DAMENG下的dm.ini打开,将ARCH_INI设置为1,保存退出

创建一个临时的归档目录(相当于中转站的形式)
1 2
| mkdir -p /dmarch chmod -R 777 /dmarch
|
使用mount的形式挂载数据库,这里其实感觉使用./dmservice.sh来启动数据库应该可以,笔者没有尝试,因为看路径来说调用的dm.ini是一致的,就是不清楚mount与非mount区别
1
| /home/dmdba/dmdbms/bin/dmserver /dmdata/DMDB/dm.ini mount
|

使用命令行mount之后命令行暂时保持不关闭挂载到后台,此时使用dmdba用户进行登录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| [root@Kylin-Server-02 bin]# ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通配置状态 登录使用时间 : 2.259(ms) disql V8 SQL> alter database add archivelog 'DEST=/dmarch,TYPE=LOCAL,FILE_SIZE=1024,SPACE_LIMIT=20480';2 操作已执行 已用时间: 7.078(毫秒). 执行号:0. SQL> alter database archivelog; 操作已执行 已用时间: 25.512(毫秒). 执行号:0. SQL> alter database open; 操作已执行 已用时间: 47.272(毫秒). 执行号:0. SQL> select arch_mode from v$database;
行号 ARCH_MODE ---------- --------- 1 Y
已用时间: 18.815(毫秒). 执行号:101. SQL> backup database full backupset '/data/backup/full_20260527'; 操作已执行 已用时间: 00:00:04.168. 执行号:801.
|
注意最后运行备份可能会遇到报错创建失败以及权限不足问题,通过以下命令来纠正
1 2
| [root@Kylin-Server-02 tool]# chown -R dmdba:dinstall /data/backup/* [root@Kylin-Server-02 tool]# chmod 755 /data/backup/*
|
脚本配置
来到达梦数据库的bin文件夹下创建新文件full_backup.sh,向脚本内写入以下内容,并赋予权限
full_backup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #!/bin/bash
DATE=$(date +%F_%H-%M-%S)
LOG=/data/backup/backup.log
echo "===== backup start $DATE =====" >> $LOG ./disql SYSDBA/SYSDBA@127.0.0.1:5236 <<EOF >> $LOG 2>&1
backup database full backupset '/data/backup/full_$DATE';
exit;
EOF
echo "===== backup end =====" >> $LOG
|
赋予权限,chmod +x full_backup.sh并运行./full_backup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [dmdba@Kylin-Server-02 bin]$ ./full_backup.sh [dmdba@Kylin-Server-02 bin]$ cat /data/backup/backup.log ===== backup start 2026-05-27_16-15-13 =====
服务器[127.0.0.1:5236]:处于普通打开状态 登录使用时间 : 2.148(ms) disql V8 SQL> SQL> 2 操作已执行 已用时间: 00:00:04.214. 执行号:1501. SQL> SQL> ===== backup end ===== ===== backup start 2026-05-27_16-28-35 =====
服务器[127.0.0.1:5236]:处于普通打开状态 登录使用时间 : 3.567(ms) disql V8 SQL> SQL> 2 操作已执行 已用时间: 00:00:04.617. 执行号:1701. SQL> SQL> ===== backup end =====
|
结果内容无误之后去往Server1查看NFS备份文件同步状态,一切正常,开始考虑将脚本放入自动计划

定时任务
使用定时器Crontab,进入定时器crontab -e,添加如下规则

可能有人问,为什么不用vim /etc/crontab来设置
- crontab -e 主要是用户级定时任务
- vim /etc/cronta 主要是系统级定时任务
收尾工作
理论上来说定为系统级定时任务更好,这里属于是笔者边做边写的,主要是还是按照个人需求来,配置完成之后设置开机自启并查看服务状态


其实过程中笔者还遇到了许多问题,比如运行脚本之后.disql无法正常运行等,通过./DmService.sh stop重启下服务即可。还有许多许多问题,时过境迁,已无法想起,如果在参照此篇blog配置遇到问题欢迎在下方留言,我会尽我所能解答。