ICollection

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

5 配置集群主机

  一般在配置集群时,先不将数据库实例注册为服务,如果已经注册为服务的,可以使用管理员账户停止服务,在配置过程中使用数据库用户直接启动数据库实例。注意,在注册集群的数据库实例服务时,会加一个参数-m mount。如果已经注册了数据库实例服务,可以使用以下语句卸载。

kylin@KL1:~$ sudo /home/dameng/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceDMSERVER1
是否删除服务(DmServiceDMSERVER1)?(Y/y:是 N/n:否): y
Removed /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER1.service.
删除服务文件(/usr/lib/systemd/system/DmServiceDMSERVER1.service)完成
删除服务(DmServiceDMSERVER1)完成

5.1 启动数据库服务

  使用数据库用户启动数据库实例。第一次启动时会等候较长的时间,看到“SYSTEM IS READY.”才成功的启动数据库实例。

dameng@KL1:~$ dmserver /home/dameng/dmdbms/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
csek2_vm_t = 1440
nsql_vm_t = 328
…………
中间显示很多配置信息,此处省略。
…………
trx: 6765 purged 1 pages
trx: 6767 purged 1 pages
systables desc init success.
ndct_db_load_info finished, code:100.
nsvr_process_before_open begin.
nsvr_process_before_open success.
SYSTEM IS READY.

5.2 开启数据库归档

  此时另外开一个终端,使用dameng用户登录后,用disql连接数据库服务,修改数据库实例参数,开启归档。执行以下语句:
  alter database mount;将数据库置于mount状态。
  alter database archivelog;打开归档模式。
  alter database add archivelog 'dest=/home/dameng/dmdbms/data/DAMENG/arch,type=local,file_size=1024,space_limit=51200';设置归档日志文件,指定归档日志目录、文件大小、空间限制。
  alter database open;将数据库置于open状态。

dameng@KL1:~$ disql sysdba/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.383(ms)
disql V8
SQL> alter database mount;
操作已执行
已用时间: 21.966(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 93.883(毫秒). 执行号:0.
SQL> alter database add archivelog 'dest=/home/dameng/dmdbms/data/DAMENG/arch,type=local,file_size=1024,space_limit=51200';
操作已执行
已用时间: 84.258(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 126.197(毫秒). 执行号:0.

5.3 备份拷贝数据库

  继续在disql中备份数据库。

SQL> backup database backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup';
操作已执行
已用时间: 00:00:06.432. 执行号:66701.

  退出disql,使用scp或者其他方式将备份文件复制到从机对应目录。

SQL> quit
dameng@KL1:~$ scp -r /home/dameng/dmdbms/data/DAMENG/bak/backup dameng@192.168.20.102:/home/dameng/dmdbms/data/DAMENG/bak
dameng@192.168.20.102's password:
backup.meta                                                 100%  114KB  52.4MB/s   00:00
backup.bak                                                  100%   11MB 126.5MB/s   00:00
backup_1.bak                                                100%   21KB  19.3MB/s   00:00

5.4 修改数据库参数

  继续在disql中修改数据库实例参数。其中ALTER_MODE_STATUS=0表示不允许修改数据库实例状态,ENABLE_OFFLINE_TS=2表示不允许备库OFFLINE表空间,MAL_INI=1表示打开MAL系统。

dameng@KL1:~$ disql sysdba/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.383(ms)
disql V8
SQL> sp_set_para_value(2,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 6.758(毫秒). 执行号:67101.
SQL> sp_set_para_value(2,'ENABLE_OFFLINE_TS',2);
DMSQL 过程已成功完成
已用时间: 15.009(毫秒). 执行号:67102.
SQL> sp_set_para_value(2,'MAL_INI',1);
DMSQL 过程已成功完成
已用时间: 7.817(毫秒). 执行号:67103.

5.5 关闭数据库服务

  在启动数据库服务的终端中,使用Ctrl+C结束数据库服务进程。如果是用管理员账号启动的数据库服务,则用管理员账号停止数据库服务。

^CServer is stopping...
listener closed and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[8589848576], used space[77824]
checkpoint begin, used_space[77824], free_space[8589848576]...
checkpoint end, 0 pages flushed, used_space[40960], free_space[8589885440].
full check point end.
shutdown audit subsystem...OK
…………
中间显示很多提示信息,此处省略。
…………
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.

5.6 修改归档配置文件

  开启归档后,系统会在数据库目录下生成归档配置文件dmarch.ini,配置该文件如下内容。具体参数可以参考《DM8 数据守护与读写分离集群》的附录一节。

ARCH_WAIT_APPLY      = 0               # 0表示高性能,1表示事务一致。
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL            # 本地归档类型。
ARCH_FILE_SIZE       = 1024             # 单个归档大小(MB)。
ARCH_SPACE_LIMIT     = 51200            # 归档文件上限(MB)
ARCH_FLUSH_BUF_SIZE  = 2                # 归档刷盘缓存大小(MB)。
ARCH_HANG_FLAG       = 1                # 磁盘不足时,是否挂起。
ARCH_DEST            = /home/dameng/dmdbms/data/DAMENG/arch
[ARCHIVE_REALTIME1]
ARCH_TYPE            = REALTIME         # 归档类型。
ARCH_DEST            = DMSERVER2        # 归档目标实例名。

  如果有多个从机,就配置[ARCHIVE_REALTIME2]、[ARCHIVE_REALTIME3]等等。

5.7 添加链路配置文件

  DAL(Multi-threaded Architecture Link)系统是主备库之间的专用通信线路。在数据库目录下新建dmmal.ini文件,在里面配置如下配置项。

MAL_TEMP_PATH           = /home/dameng/dmdbms/data/DAMENG/malpath/      # 临时文件目录。
MAL_CHECK_INTERVAL      = 10                # MAL链路检测时间间隔。
MAL_CONN_FAIL_INTERVAL  = 10                # 判定MAL链路断开的时间。
MAL_BUF_SIZE            = 512               # 单个MAL缓存大小(MB)。
MAL_SYS_BUF_SIZE        = 2048              # MAL总大小限制(MB)。
MAL_COMPRESS_LEVEL      = 0                 # MAL消息压缩等级,0表示不压缩。

[MAL_INST1]
MAL_INST_NAME           = DMSERVER1         # 实例名。
MAL_HOST                = 192.168.20.101    # MAL系统监听地址。
MAL_INST_HOST           = 192.168.20.101    # 实例对外服务地址。
MAL_INST_PORT           = 5236              # 实例对外服务端口。
MAL_PORT                = 5336              # MAL系统监听端口。
MAL_DW_PORT             = 5436              # 实例守护进程端口。
MAL_INST_DW_PORT        = 5536              # 实例守护请求端口。

[MAL_INST2]
MAL_INST_NAME           = DMSERVER2
MAL_HOST                = 192.168.20.102
MAL_PORT                = 5336
MAL_INST_HOST           = 192.168.20.102
MAL_INST_PORT           = 5236
MAL_DW_PORT             = 5436
MAL_INST_DW_PORT        = 5536

5.8 添加守护配置文件

  在数据库目录下新建dmwatcher.ini文件,在里面配置如下配置项。

[GRP1]                             # 集群的组名称。
DW_TYPE                  = GLOBAL  # 全局守护类型。
DW_MODE                  = AUTO    # MANUAL:故障手切,AUTO:故障自切。
DW_ERROR_TIME            = 20      # 远程守护进程故障认定时间。
INST_ERROR_TIME          = 20      # 本地实例故障认定时间。
INST_RECOVER_TIME        = 60      # 主库守护进程启动恢复的间隔时间。
INST_OGUID               = 45331   # 守护系统唯一 OGUID 值。
INST_AUTO_RESTART        = 1       # 打开实例的自动启动功能。
RLOG_SEND_THRESHOLD      = 0       # 指定主库发送日志到备库的时间阈值,默认关闭。
RLOG_APPLY_THRESHOLD     = 0       # 指定备库重演日志的时间阈值,默认关闭。
INST_INI                 = /home/dameng/dmdbms/data/DAMENG/dm.ini  # dm.ini文件路径。
INST_STARTUP_CMD         = /home/dameng/dmdbms/bin/dmserver        # 命令行方式启动。

5.9 注册数据库服务

  使用管理员用户将数据库、守护程序注册为服务。

kylin@KL1:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER1 -dm_ini /home/dameng/dmdbms/data/DAMENG/dm.ini -m mount
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER1.service → /lib/systemd/system/DmServiceDMSERVER1.service.
创建服务(DmServiceDMSERVER1)完成
kylin@KL1:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p WATCHER -watcher_ini /home/dameng/dmdbms/data/DAMENG/dmwatcher.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWATCHER.service → /lib/systemd/system/DmWatcherServiceWATCHER.service.
创建服务(DmWatcherServiceWATCHER)完成

6 配置集群从机

6.1 创建数据库实例

  使用dameng账号创建数据库实例,实例名需与主库不同。如果使用图形界面创建,创建后需停止数据库实例服务。

dameng@KL2:~$ dminit PATH=/home/dameng/dmdbms/data/ INSTANCE_NAME=DMSERVER2 CHARSET=1 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
initdb V8
db version: 0x7000d
file dm.key not found, use default license!
License will expire on 2026-04-30
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 log file path: /home/dameng/dmdbms/data/DAMENG/DAMENG01.log
 log file path: /home/dameng/dmdbms/data/DAMENG/DAMENG02.log
write to dir [/home/dameng/dmdbms/data/DAMENG].
create dm database success. 2025-09-10 17:25:02

6.2 恢复数据库数据

  使用dmrman命令从主库传来的备份文件中恢复数据库数据,一共三条指令。第一条restore database。

dameng@KL2:~$ dmrman ctlstmt="restore database '/home/dameng/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup'"
dmrman V8
restore database '/home/dameng/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:11][Remaining:00:00:00]
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:12][Remaining:00:00:00]
restore successfully.
time used: 00:00:12.450

  第二条recover database。

dameng@KL2:~$ dmrman ctlstmt="recover database '/home/dameng/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup'"
dmrman V8
recover database '/home/dameng/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:03.432

  第三条recover database update db_magic。

dameng@KL2:~$ dmrman ctlstmt="recover database '/home/dameng/dmdbms/data/DAMENG/dm.ini' update db_magic"
dmrman V8
recover database '/home/dameng/dmdbms/data/DAMENG/dm.ini' update db_magic
file dm.key not found, use default license!
recover successfully!
time used: 00:00:02.356

6.3 修改实例配置文件

  修改数据库实例目录下的配置文件dm.ini,设置ALTER_MODE_STATUS=0、ENABLE_OFFLINE_TS=2、MAL_INI=1、ARCH_INI=1。

6.4 添加归档配置文件

  从集群主机复制dmarch.ini文件到从机,修改主机实例名如下:

ARCH_WAIT_APPLY      = 0               # 0表示高性能,1表示事务一致。
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL            # 本地归档类型。
ARCH_FILE_SIZE       = 1024             # 单个归档大小(MB)。
ARCH_SPACE_LIMIT     = 51200            # 归档文件上限(MB)
ARCH_FLUSH_BUF_SIZE  = 2                # 归档刷盘缓存大小(MB)。
ARCH_HANG_FLAG       = 1                # 磁盘不足时,是否挂起。
ARCH_DEST            = /home/dameng/dmdbms/data/DAMENG/arch
[ARCHIVE_REALTIME1]
ARCH_TYPE            = REALTIME         # 归档类型。
ARCH_DEST            = DMSERVER1        # 归档目标实例名。

6.5 添加链路配置文件

  从集群主机复制dmmal.ini文件到从机,一般无需修改。

6.6 添加守护配置文件

  从集群主机复制dmwatcher.ini文件到从机,一般无需修改。

6.7 注册数据库服务

  使用管理员用户将数据库、守护程序注册为服务,具体方法同主机。

kylin@KL2:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER2 -dm_ini /home/dameng/dmdbms/data/DAMENG/dm.ini -m mount
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER2.service → /lib/systemd/system/DmServiceDMSERVER2.service.
创建服务(DmServiceDMSERVER2)完成
kylin@KL2:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p WATCHER -watcher_ini /home/dameng/dmdbms/data/DAMENG/dmwatcher.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWATCHER.service → /lib/systemd/system/DmWatcherServiceWATCHER.service.
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWATCHER.service → /lib/systemd/system/DmWatcherServiceWATCHER.service.
创建服务(DmWatcherServiceWATCHER)完成

7 配置监视主机

  达梦数据守护集群可以有单独的监视主机,也可以使用数据库服务器兼做监视主机。达梦的监视服务配置中,规定MON_DW_CONFIRM=1的配置的监视服务只能启动一个,第二个再启动的时候就会报错。可以配置多实例监视器解决这个问题,达梦的多实例监视器要求监视器的个数必须为奇数,因此这里增加了一台专用监视服务器,一样安装达梦数据库软件,但不创建实例。这样集群能够实现任意单服务器失效后自动主从切换。

7.1 添加监视配置文件

  首先在三台服务器上初始化联机日志文件。命令中的MON_MAGIC参数在三台服务器需要一致,MON_NAME为每台主机上的监视器名称,如MON1、MON2、MON3。

dameng@KL1:~$ dmmonitor RAFT_FILE_PATH=/home/dameng/dmdbms/log RAFT_FILE_SIZE=512 MON_MAGIC=142857 MON_NAME=MON1

  在数据库目录下新建dmmontor.ini文件,每台主机上的配置内容中只有MON_ID、MON_NAME两项不同。例如:

MON_DW_CONFIRM          = 1                        # 0手动切换,1自动切换。
MON_LOG_PATH            = /home/dameng/dmdbms/log  # 监视器日志文件存放路径。
MON_LOG_INTERVAL        = 60                       # 每隔 60s 记录日志文件。
MON_LOG_FILE_SIZE       = 512                      # 单个日志大小(MB)。
MON_LOG_SPACE_LIMIT     = 2048                     # 日志上限(MB)。
MON_INST_NUM            = 3                        # 监视实例个数。
MON_HB_INTERVAL         = 60                       # 通信心跳检测间隔。
MON_BRO_INTERVAL        = 100                      # RAFT协议中通信心跳间隔。
MON_VOTE_INTERVAL       = 100                      # RAFT协议中基础投票间隔。
MON_ID                  = 1                        # 当前监视器在监视器系统中的ID。
MON_MID                 = 45614                    # 当前监视器系统的唯一标识。
MON_NAME                = MON1                     # 当前监视器名称

[GRP1]
MON_INST_OGUID          = 45331                    # 组 GRP1 的唯一 OGUID 值
MON_DW_IP               = 192.168.20.101:5436      # MAL的地址端口
MON_DW_IP               = 192.168.20.102:5436      # MAL的地址端口

[MON1]
MON_HOST                = 192.168.20.101           # MON1监视器IP。
MON_PORT                = 8341                     # MON1监视器监听端口。
MON_INST_ID             = 1                        # MON1监视器在监视器系统中的ID。

[MON2]
MON_HOST                = 192.168.20.102           # MON2监视器IP。
MON_PORT                = 8342                     # MON2监视器监听端口。
MON_INST_ID             = 2                        # MON2监视器在监视器系统中的ID。

[MON3]
MON_HOST                = 192.168.20.103           # MON3监视器IP。
MON_PORT                = 8343                     # MON3监视器监听端口。
MON_INST_ID             = 3                        # MON3监视器在监视器系统中的ID。

  在其中一台服务器的数据库目录下新建dmmonitor_manual.ini文件,用于测试手工切换,其中MON_DW_CONFIRM设置为0。

MON_DW_CONFIRM          = 0                        # 0手动切换,1自动切换。
MON_LOG_PATH            = /home/dameng/dmdbms/log  # 监视器日志文件存放路径。
MON_LOG_INTERVAL        = 60                       # 每隔 60s 记录日志文件。
MON_LOG_FILE_SIZE       = 512                      # 单个日志大小(MB)。
MON_LOG_SPACE_LIMIT     = 2048                     # 日志上限(MB)。
[GRP1]
MON_INST_OGUID          = 45331                    # 组 GRP1 的唯一 OGUID 值
MON_DW_IP               = 192.168.20.101:5436      # MAL的地址端口
MON_DW_IP               = 192.168.20.102:5436      # MAL的地址端口

7.2 注册数据库服务

  使用管理员用户将监控程序注册为服务。

kylin@KL1:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p MONITOR -monitor_ini /home/dameng/dmdbms/data/DAMENG/dmmonitor.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMONITOR.service → /lib/systemd/system/DmMonitorServiceMONITOR.service.
创建服务(DmMonitorServiceMONITOR)完成
posted on 2025-09-28 14:49  ICollection  阅读(15)  评论(0)    收藏  举报