新增实例与数据守护、监视器
说明
在原先的 A 、B 机器搭建好的实时主备集群已有实例的基础上,新增一个实例,即一个集群,多个实例的效果
并且,一定要事先规划好端口配置、实例名、路径、数据守护组名
1.规划的端口是否与现有的实例端口冲突
2.主备机器端口之间是否打通
3.实例路径、数据守护组都要配置端口的
部署信息
|
A机器 |
B机器 |
IP |
192.168.163.9 |
192.168.163.10 |
实例名 |
GRP_TEST_01 |
GRP_TEST_02 |
实例端口 |
5236 |
5236 |
守护进程端口 |
5536 |
5536 |
MAL端口 |
5336 |
5336 |
守护组 |
GRP1 |
GPR1 |
安装目录 |
/home/dmdba/dmdbms |
/home/dmdba/dmdbms |
实例目录 |
/home/dmdba/dmdbms/DMDB |
/home/dmdba/dmdbms/DMDB |
归档上限 |
51200 |
51200 |
新增实例规划
|
A机器 |
B机器 |
IP |
192.168.163.9 |
192.168.163.10 |
实例名 |
GRP_ADDTEST_01 |
GRP_ADDTEST_02 |
实例端口 |
5237 |
5237 |
守护进程端口 |
5537 |
5537 |
MAL端口 |
5337 |
5337 |
守护组 |
GRP2 |
GPR2 |
实例目录 |
/home/dmdba/ADDTEST_data |
/home/dmdba/ADDTEST_data |
归档上限 |
51200 |
51200 |
初始化实例
本次新增并没有停止已有实例服务
注意:
- 除非必要说明,默认使用
dmdba
数据库用户进行操作
- 配置过程中需要使用对于的目录,目录别整错了
A 机器新增实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@linux1 bin]# ./dminit path=/home/dmdba/ADDTEST_data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=0 DB_NAME=ADDTEST INSTANCE_NAME=GRP_ADDTEST_01 PORT_NUM=5237
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-03-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /home/dmdba/ADDTEST_data/ADDTEST/ADDTEST01.log
log file path: /home/dmdba/ADDTEST_data/ADDTEST/ADDTEST02.log
write to dir [/home/dmdba/ADDTEST_data/ADDTEST].
create dm database success. 2024-07-27 10:09:55
|
这里我忘记了切换到 dmdba
用户下了,问题不大,我更改实例目录权限,将目录权限改成 dmdba
1
2
|
cd /home/dmdba
chown dmdba:dinstall -R ADDTEST_data/
|
B 机器新增实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[root@linux2 bin]# su - dmdba
上一次登录:一 7月 22 22:01:45 CST 2024pts/0 上
[dmdba@linux2 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@linux2 bin]$ ./dminit path=/home/dmdba/ADDTEST_data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=0 DB_NAME=ADDTEST INSTANCE_NAME=GRP_ADDTEST_01 PORT_NUM=5237
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-03-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /home/dmdba/ADDTEST_data/ADDTEST/ADDTEST01.log
log file path: /home/dmdba/ADDTEST_data/ADDTEST/ADDTEST02.log
write to dir [/home/dmdba/ADDTEST_data/ADDTEST].
create dm database success. 2024-07-27 10:15:34
|
配置 A 机器
启动新增的实例服务
前台命令启动,启动后该窗口不能动,需要重新开一个窗口
1
2
|
[dmdba@linux1 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@linux1 bin]$ ./dmserver /home/dmdba/ADDTEST_data/ADDTEST/dm.ini
|
开启归档
注意:
- 这里使用
@IP:PORT
的形式,来区分进入哪个实例
- 归档路径别填错了,在新增的实例数据文件目录下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[dmdba@linux1 bin]$ ./disql SYSDBA/SYSDBA@192.168.163.9:5237
服务器[192.168.163.9:5237]:处于普通打开状态
登录使用时间 : 7.226(ms)
disql V8
SQL> ALTER DATABASE MOUNT;
操作已执行
已用时间: 2.814(毫秒). 执行号:0.
SQL> ALTER DATABASE ARCHIVELOG;
操作已执行
已用时间: 23.121(毫秒). 执行号:0.
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/home/dmdba/ADDTEST_data/ADDTEST/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=10240';
操作已执行
已用时间: 3.945(毫秒). 执行号:0.
SQL> ALTER DATABASE OPEN;
操作已执行
已用时间: 22.566(毫秒). 执行号:0.
|
备份数据
1
2
3
|
SQL> BACKUP DATABASE BACKUPSET '/home/dmdba/ADDTEST_data/ADDTEST/bak/BACKUP_FILE_ADDTEST';
操作已执行
已用时间: 00:00:07.540. 执行号:64401.
|
修改 dm.ini
1
2
3
4
5
6
|
SQL> SP_SET_PARA_VALUE (2,'PORT_NUM',5237); #数据库实例监听端口,配置成新的端口
SQL> SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60); #接收守护进程消息超时时间
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0); #不允许手工方式修改实例模式/状态/OGUID
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2); #不允许备库 OFFLINE 表空间
SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1); #打开 MAL 系统
SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64); #统计最近 64 次的日志重演信息
|
退出并关闭数据库服务
1
2
3
|
SQL> exit;
# 到开启服务的linux窗口,终止前台服务
|
修改 dmarch.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[dmdba@linux1 bin]$ vi /home/dmdba/ADDTEST_data/ADDTEST/dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/ADDTEST_data/ADDTEST/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 10240
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP_ADDTEST_02
|
创建 dmmal.ini
注意:文件目录、实例名、端口别配置错了!!
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
|
[dmdba@linux1 bin]$ vi /home/dmdba/ADDTEST_data/ADDTEST/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /home/dmdba/ADDTEST_data/ADDTEST/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = GRP_ADDTEST_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.163.9 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5337 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.163.9 #实例的对外服务 IP 地址
MAL_INST_PORT = 5237 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5437 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5537 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP_ADDTEST_02
MAL_HOST = 192.168.163.10
MAL_PORT = 5337
MAL_INST_HOST = 192.168.163.10
MAL_INST_PORT = 5237
MAL_DW_PORT = 5437
MAL_INST_DW_PORT = 5537
|
创建 dmwatcher.ini
注意:
- 数据守护组名,别错了,这里是
[GRP2]
- 实例路径也别整错了
- 数据守护的
OGUID
需要唯一,与其他实例的 OGUID
不能相同,也需要改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[dmdba@linux1 bin]$ vi /home/dmdba/ADDTEST_data/ADDTEST/dmwatcher.ini
[GRP2]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45332 #守护系统唯一 OGUID 值
INST_INI = /home/dmdba/ADDTEST_data/ADDTEST/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
|
拷贝备份文件到备库
备份文件就是【2.3 步骤】执行的
1
|
BACKUP DATABASE BACKUPSET '/home/dmdba/ADDTEST_data/ADDTEST/bak/BACKUP_FILE_ADDTEST';
|
生成的 BACKUP_FILE_ADDTEST
文件
如下拷贝
1
2
3
4
5
|
[dmdba@linux1 bin]$ scp -r /home/dmdba/ADDTEST_data/ADDTEST/bak/BACKUP_FILE_ADDTEST dmdba@192.168.163.10:/home/dmdba/ADDTEST_data/ADDTEST/bak/
dmdba@192.168.163.10's password: !@#$qwer
BACKUP_FILE_ADDTEST.bak 100% 30MB 19.7MB/s 00:01
BACKUP_FILE_ADDTEST_1.bak 100% 41KB 13.9MB/s 00:00
BACKUP_FILE_ADDTEST.meta 100% 110KB 9.6MB/s 00:00
|
注册服务
使用 root
用户操作
注意:
- 实例路径别错、实例名别错
- 数据守护的名称记得也改一下,别冲突
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@linux1 ~]# cd /home/dmdba/dmdbms/script/root/
####################
# 创建数据库服务
####################
[root@linux1 root]# ./dm_service_installer.sh -t dmserver -p GRP_ADDTEST_01 -dm_ini /home/dmdba/ADDTEST_data/ADDTEST/dm.ini -m mount
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceGRP_ADDTEST_01.service to /usr/lib/systemd/system/DmServiceGRP_ADDTEST_01.service.
创建服务(DmServiceGRP_ADDTEST_01)完成
####################
# 创建数据守护服务
# 数据守护服务的名称别跟原有的冲突 -p 参数
####################
[root@linux1 root]# ./dm_service_installer.sh -t dmwatcher -p WatcherADDTEST -watcher_ini /home/dmdba/ADDTEST_data/ADDTEST/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcherADDTEST.service to /usr/lib/systemd/system/DmWatcherServiceWatcherADDTEST.service.
创建服务(DmWatcherServiceWatcherADDTEST)完成
|
如果需要删除服务
1
2
|
[root@~]# ./dm_service_uninstaller.sh -n DmServiceGRP_ADDTEST_01
[root@~]# ./dm_service_uninstaller.sh -n DmWatcherServiceWatcherADDTEST
|
配置 B 机器
B 机器上是备库,将数据还原与 A 机器的主库一致
无必要说明,默认使用 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
[dmdba@linux2 bin]$ ./dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/ADDTEST_data/ADDTEST/dm.ini' FROM BACKUPSET '/home/dmdba/ADDTEST_data/ADDTEST/bak/BACKUP_FILE_ADDTEST'"
dmrman V8
RESTORE DATABASE '/home/dmdba/ADDTEST_data/ADDTEST/dm.ini' FROM BACKUPSET '/home/dmdba/ADDTEST_data/ADDTEST/bak/BACKUP_FILE_ADDTEST'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:03][Remaining:00:00:00]
restore successfully.
time used: 00:00:03.464
[dmdba@linux2 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/ADDTEST_data/ADDTEST/dm.ini' FROM BACKUPSET '/home/dmdba/ADDTEST_data/ADDTEST/bak/BACKUP_FILE_ADDTEST'"
dmrman V8
RECOVER DATABASE '/home/dmdba/ADDTEST_data/ADDTEST/dm.ini' FROM BACKUPSET '/home/dmdba/ADDTEST_data/ADDTEST/bak/BACKUP_FILE_ADDTEST'
file dm.key not found, use default license!
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[42819], file_lsn[42819]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:03.146
[dmdba@linux2 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/ADDTEST_data/ADDTEST/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/home/dmdba/ADDTEST_data/ADDTEST/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 2, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[42900], file_lsn[42900]
recover successfully!
time used: 00:00:01.192
|
如果少执行了中间的 RECOVER DATABASE 步骤,则会报错
1
2
|
[-8308]:需要先执行RECOVER DATABASE操作,再执行RECOVER DATABASE UPDATE DB_MAGIC操作
dmrman_main end, code[-8308], return -1.
|
创建 dmarch.ini
A 机器开了归档, B 机器也要开归档(可以简单的理解通过归档同步数据)
因为没启 B 机器的备库实例服务,要手动创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[dmdba@linux2 bin]$ vi /home/dmdba/ADDTEST_data/ADDTEST/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/ADDTEST_data/ADDTEST/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 10240 #归档上限,单位 MB
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP_ADDTEST_01 #实时归档目标实例名,这里则填主库的实例
|
修改 dm.ini
并且确保文件里的实例名为:GRP_ADDTEST_02
,端口为 5237
,并且配置如下
1
2
3
4
5
6
7
8
9
10
|
[dmdba@linux2 DMDB]$ vi /home/dmdba/dmdbms/DMDB/dm.ini
INSTANCE_NAME = GRP_TEST_02
PORT_NUM = 5237 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志重演信息
|
创建 dmmal.ini
同主库配置
创建 dmwatcher.ini
同主库配置
注册服务
使用 root
用户执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@linux2 ~]# cd /home/dmdba/dmdbms/script/root/
####################
# 创建数据库服务
####################
[root@linux2 root]# ./dm_service_installer.sh -t dmserver -p GRP_ADDTEST_02 -dm_ini /home/dmdba/ADDTEST_data/ADDTEST/dm.ini -m mount
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceGRP_ADDTEST_01.service to /usr/lib/systemd/system/DmServiceGRP_ADDTEST_01.service.
创建服务(DmServiceGRP_ADDTEST_01)完成
####################
# 创建数据守护服务
# 数据守护服务的名称别跟原有的冲突 -p 参数
####################
[root@linux2 root]# ./dm_service_installer.sh -t dmwatcher -p WatcherADDTEST -watcher_ini /home/dmdba/ADDTEST_data/ADDTEST/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcherADDTEST.service to /usr/lib/systemd/system/DmWatcherServiceWatcherADDTEST.service.
创建服务(DmWatcherServiceWatcherADDTEST)完成
|
配置新实例的监视器
使用 dmdba
操作
创建 dmmonitor.ini
在主库机器上创建,A 机器(在 B 机器或者第三台机器上都可以,随意),这个是确认监视器
监视器的日志路径最好使用绝对路径,不然就是默认在达梦数据库的按照目录下
还有就是,日志路径最好与原有的实例监视器日志路径区分,否则两个实例的监视器日志会写到一起
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[dmdba@linux1 root]# vi /home/dmdba/ADDTEST_data/ADDTEST/dmmonitor.ini
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log_monitor/ADDTEST #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 1024 #日志上限,单位 MB
[GRP2]
MON_INST_OGUID = 45332 #组 GRP2 的唯一 OGUID 值
MON_DW_IP = 192.168.163.9:5437 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.163.10:5437
|
创建 dmmonitor_manual.ini
非确认监视器,配置同上,除了 MON_DW_CONFIRM
是 0 外
1
2
3
4
5
6
7
8
9
10
11
12
|
[dmdba@linux1 root]# vi /home/dmdba/ADDTEST_data/ADDTEST/dmmonitor_manual.ini
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log_monitor/ADDTEST #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 1024 #日志上限,单位 MB
[GRP2]
MON_INST_OGUID = 45332 #组 GRP2 的唯一 OGUID 值
MON_DW_IP = 192.168.163.9:5437 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.163.10:5437
|
注册监视器服务
使用root
用户操作
1
2
3
|
[root@linux1 root]# ./dm_service_installer.sh -t dmmonitor -p MonitorADDTEST -monitor_ini /home/dmdba/ADDTEST_data/ADDTEST/dmmonitor.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMonitorADDTEST.service to /usr/lib/systemd/system/DmMonitorServiceMonitorADDTEST.service.
创建服务(DmMonitorServiceMonitorADDTEST)完成
|
启动监视器服务
1
2
|
[dmdba@linux1 bin]$ ./DmMonitorServiceMonitorADDTEST start
Starting DmMonitorServiceMonitorADDTEST: [ FAILED ]
|
监视器需要在实例服务起来后才能启,顺序如下:
数据库实例 » 守护进程 » 监视器
启动服务
启动数据库并修改参数
A 机器启动、修改
启动实例服务报错
主要是修改 OGUID
(就是数据守护的组) 与数据库模式
1
2
|
[dmdba@linux1 bin]$ ./DmServiceGRP_ADDTEST_01 start
Starting DmServiceGRP_ADDTEST_01: [ FAILED ]
|
查看最近的日志
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
cd ../log
[dmdba@linux1 log]$ ls -lrt
总用量 2384
-rw-r--r--. 1 dmdba dinstall 400805 7月 21 00:02 install_ant.log
-rwxr-xr-x. 1 dmdba dinstall 480 7月 21 00:02 install.log
-rw-r--r--. 1 dmdba dinstall 0 7月 21 00:03 DmAPService.log
-rw-r--r--. 1 dmdba dinstall 0 7月 21 00:43 DmServiceDMSERVER.log
-rw-r--r--. 1 dmdba dinstall 97806 7月 21 00:57 dm_DMDBSERVER_202407.log
-rw-r--r--. 1 dmdba dinstall 0 7月 21 11:19 DmServiceGRP_TEST_01.log
-rw-r--r--. 1 dmdba dinstall 0 7月 21 14:48 DmWatcherServiceWatcher.log
-rw-r--r--. 1 dmdba dinstall 0 7月 22 21:34 DmMonitorServiceMonitor.log
-rw-r--r--. 1 dmdba dinstall 540272 7月 27 09:47 dm_dmwatcher_GRP_TEST_01_202407.log
-rw-r--r--. 1 root root 2193 7月 27 10:09 dm_GRP_ADDTEST_01_202407.log
-rw-r--r--. 1 dmdba dinstall 2385 7月 27 10:26 dm_dmap_202407.log
-rw-r--r--. 1 dmdba dinstall 1188 7月 27 10:26 dm_dmap_br_202407.log
-rw-r--r--. 1 dmdba dinstall 36265 7月 27 10:26 dm_BAKRES_202407.log
-rw-r--r--. 1 dmdba dinstall 0 7月 27 11:45 DmMonitorServiceMonitorADDTEST.log
-rw-r--r--. 1 dmdba dinstall 1329521 7月 27 11:56 dm_GRP_TEST_01_202407.log
-rw-r--r--. 1 dmdba dinstall 0 7月 27 11:56 DmServiceGRP_ADDTEST_01.log
-rw-r--r--. 1 dmdba dinstall 5324 7月 27 11:56 dm_unknown_202407.log
-rw-r--r--. 1 dmdba dinstall 4353 7月 27 11:57 dmsvc_sh.log
|
最近更新的日志 dmsvc_sh.log
,查看日志
1
2
3
|
[dmdba@linux1 log]$ tail -f dmsvc_sh.log
[2024-07-27 11:56:52] [localhost] [2886311096] [DmServiceGRP_ADDTEST_01] start service by dmdba
[2024-07-27 11:57:08] [localhost] [2886311096] [DmServiceGRP_ADDTEST_01] failed to start service by dmdba (code:0)
|
既然是 dmsvc_sh.log
报错了,猜测与 dm_svc.conf
配置有关,这个是用来配置服务名连接的文件
文件内容如下:
1
2
3
4
5
6
7
8
9
10
11
|
TIME_ZONE=(480)
LANGUAGE=(CN)
GRP1=(192.168.163.9:5236,192.168.163.10:5236)
# 服务配置
[GRP1]
TIME+ZONE=(+480)
# 指定优先登录的服务器模式 0-优先PRIMARY 1-只连接主库 2-只连接备库 3-优先STANDBY 4-优先NORMAL(缺省默认)
LOGIN_MODE=(0)
SWITCH_TIME=(3)
SWITCH_INTERVAL=(200)
|
尝试添加新增的实例服务名进去
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
TIME_ZONE=(480)
LANGUAGE=(CN)
GRP1=(192.168.163.9:5236,192.168.163.10:5236)
GRP2=(192.168.163.9:5237,192.168.163.10:5237)
# 服务配置
[GRP1]
TIME+ZONE=(+480)
# 指定优先登录的服务器模式 0-优先PRIMARY 1-只连接主库 2-只连接备库 3-优先STANDBY 4-优先NORMAL(缺省默认)
LOGIN_MODE=(0)
SWITCH_TIME=(3)
SWITCH_INTERVAL=(200)
[GRP2]
TIME+ZONE=(+480)
# 指定优先登录的服务器模式 0-优先PRIMARY 1-只连接主库 2-只连接备库 3-优先STANDBY 4-优先NORMAL(缺省默认)
LOGIN_MODE=(0)
SWITCH_TIME=(3)
SWITCH_INTERVAL=(200)
|
还是报错
额。。。
理论上讲,实例的报错应该是写入实例的日志文件啊?怎么最近写入的日志只有 dmsvc_sh.log
?
发现启动报错的日志没写进去,原来是日志文件的用户主组是 root,先用 root
变更
1
|
chown -R dmdba:dinstall /home/dmdba/dmdbms/log/*
|
重启切换到 dmdba
启动新增的实例服务,并查看实例日志 ``
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[dmdba@linux1 bin]$ ./DmServiceGRP_ADDTEST_01 start
Starting DmServiceGRP_ADDTEST_01: [ FAILED ]
[dmdba@linux1 log]$ tail -f dm_GRP_ADDTEST_01_202407.log
2024-07-27 12:13:15.145 [INFO] database P0000080255 T0000000000000080298 dm_mal_tsk_thd started, src_site:0, dest_site:1, port_data
2024-07-27 12:13:15.145 [INFO] database P0000080255 T0000000000000080297 dm_mal_recv_thd started, src_site:0, dest_site:0, port_data
2024-07-27 12:13:15.195 [INFO] database P0000080255 T0000000000000080255 rsys_rarch_obj_fil_collect path:[/home/dmdba/ADDTEST_data/ADDTEST/arch] begin.
2024-07-27 12:13:15.200 [INFO] database P0000080255 T0000000000000080255 rsys_rarch_obj_fil_collect seqno[0] end, total 1 rfils, last_g_seqno:5043
2024-07-27 12:13:15.200 [INFO] database P0000080255 T0000000000000080255 rsys_rarch_obj_fil_collect seqno[0] end, total_size 69632.
2024-07-27 12:13:15.201 [INFO] database P0000080255 T0000000000000080255 rsys_rarch_obj_fil_collect path:[GRP_ADDTEST_02] begin.
2024-07-27 12:13:15.203 [FATAL] database P0000080255 T0000000000000080304 comm_create_lsnr_sockets_low failed to create socket or listen port:5336, errno:107.
2024-07-27 12:13:15.203 [FATAL] database P0000080255 T0000000000000080304 [for dem]SYSTEM SHUTDOWN ABORT.
2024-07-27 12:13:15.204 [FATAL] database P0000080255 T0000000000000080304 MAL listener can not get the address information
2024-07-27 12:13:15.204 [INFO] database P0000080255 T0000000000000080304 total 0 rfil opened!
|
注意 FATAL
类型的日志,这个就是关键信息!
1
2
|
comm_create_lsnr_sockets_low failed to create socket or listen port:5336, errno:107.
MAL listener can not get the address information
|
问题就出现在 MAL 的 5336 端口上
查看 dmmal.ini
文件,果然,MAL_PORT
忘改了,还是原来的实例端口,新实例的 MAL 端口与之前的冲突了,修改它为 5337
正常启动
1
2
|
[dmdba@linux1 bin]$ ./DmServiceGRP_ADDTEST_01 start
Starting DmServiceGRP_ADDTEST_01: [ OK ]
|
修改参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[dmdba@linux1 bin]$ ./disql SYSDBA/SYSDBA@192.168.163.9:5237
服务器[192.168.163.9:5237]:处于普通配置状态
登录使用时间 : 6.374(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL 过程已成功完成
已用时间: 12.962(毫秒). 执行号:1.
SQL> SP_SET_OGUID(45332);
DMSQL 过程已成功完成
已用时间: 5.791(毫秒). 执行号:2.
SQL> ALTER DATABASE PRIMARY;
操作已执行
已用时间: 16.329(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 28.218(毫秒). 执行号:3.
|
B 机器启动、修改
1
2
3
4
5
6
7
8
9
|
[dmdba@linux2 bin]$ ./DmServiceGRP_ADDTEST_02 start
Starting DmServiceGRP_ADDTEST_02: [ FAILED ]
dmdba@linux2 log]$ cat dm_GRP_ADDTEST_02_202407.log
2024-07-27 12:26:28.172 [INFO] database P0000076312 T0000000000000076312 INI parameter DW_PORT changed, the original value 0, new value 5537
2024-07-27 12:26:28.173 [ERROR] database P0000076312 T0000000000000076312 Read ini file(/home/dmdba/ADDTEST_data/ADDTEST/dmarch.ini) error in line 13, code(-952)
2024-07-27 12:26:28.173 [INFO] database P0000076312 T0000000000000076312 INI parameter DPC_2PC changed, the original value 1, new value 0
2024-07-27 12:26:28.203 [FATAL] database P0000076312 T0000000000000076312 dmserver startup failed, code = -952 [archive_dest can not be self instance]
2024-07-27 12:26:28.204 [FATAL] database P0000076312 T0000000000000076312 nsvr_ini_file_read failed, [code: -952]
|
额。。。
这个也报错了,看日志里的 ERROR
1
|
database P0000076312 T0000000000000076312 Read ini file(/home/dmdba/ADDTEST_data/ADDTEST/dmarch.ini) error in line 13, code(-952)
|
又忘记修改了,dmarch.ini
归档配置文件里,复制贴贴主库的配置,没有修改实时归档的目标实例为主库
修改 ARCH_DEST = GRP_ADDTEST_01
重新启动
1
2
|
[dmdba@linux2 bin]$ ./DmServiceGRP_ADDTEST_02 start
Starting DmServiceGRP_ADDTEST_02: [ OK ]
|
修改参数,OGUID
和数据库模式
这里修改为备库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[dmdba@linux2 bin]$ ./disql SYSDBA/SYSDBA@192.168.163.10:5237
服务器[192.168.163.10:5237]:处于普通配置状态
登录使用时间 : 11.200(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL 过程已成功完成
已用时间: 47.346(毫秒). 执行号:1.
SQL> SP_SET_OGUID(45332);
DMSQL 过程已成功完成
已用时间: 8.650(毫秒). 执行号:2.
SQL> ALTER DATABASE STANDBY;
操作已执行
已用时间: 20.649(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 33.556(毫秒). 执行号:3.
|
启动守护进程
A 、 B 机器都启动
1
2
|
[dmdba@linux1 bin]$ ./DmWatcherServiceWatcherADDTEST start
Starting DmWatcherServiceWatcherADDTEST: [ OK ]
|
启动监视器
监视器是配置在 A 机器上,即主库的机器上的
1
2
|
[dmdba@linux1 bin]$ ./DmMonitorServiceMonitorADDTEST start
Starting DmMonitorServiceMonitorADDTEST: [ FAILED ]
|
好了,监视器启动也报错
日志也没有,奇怪了,通过前台启动看看
1
2
3
4
5
|
[dmdba@linux1 bin]$ ./dmmonitor /home/dmdba/ADDTEST_data/ADDTEST/dmmonitor.ini
Invalid [group_name] or the file contains unrecognized characters!
Read ini file(/home/dmdba/ADDTEST_data/ADDTEST/dmmonitor.ini) error in line 1, code(-803)
DMMONITOR[4.0] V8
Read ini failed, please check the ini path(/home/dmdba/ADDTEST_data/ADDTEST/dmmonitor.ini) or invalid configuration or permission denied!
|
配置无效或者权限被拒绝
又是复制贴贴的报错,复制进SHELL里,头两个字母被吞掉了
1
2
|
[dmdba@linux1 bin]$ ./DmMonitorServiceMonitorADDTEST start
Starting DmMonitorServiceMonitorADDTEST: [ OK ]
|
验证连接
在达梦数据库服务器上配置 dm_svc.conf
,同时在应用服务器上配置 dm_svc.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
TIME_ZONE=(480)
LANGUAGE=(CN)
GRP1=(192.168.163.9:5236,192.168.163.10:5236)
GRP2=(192.168.163.9:5237,192.168.163.10:5237)
# 服务配置
[GRP1]
TIME+ZONE=(+480)
# 指定优先登录的服务器模式 0-优先PRIMARY 1-只连接主库 2-只连接备库 3-优先STANDBY 4-优先NORMAL(缺省默认)
LOGIN_MODE=(0)
SWITCH_TIME=(3)
SWITCH_INTERVAL=(200)
[GRP2]
TIME+ZONE=(+480)
# 指定优先登录的服务器模式 0-优先PRIMARY 1-只连接主库 2-只连接备库 3-优先STANDBY 4-优先NORMAL(缺省默认)
LOGIN_MODE=(0)
SWITCH_TIME=(3)
SWITCH_INTERVAL=(200)
|
使用达梦管理工具连接,一切正常
注意
在服务启动时,一般都使用后台运行的方式,即达梦通过注册服务后生成的 DmServiceXXXX``DmWatcherXXXX``DmMonitorXXXX
文件去启动
当如果这个方式启动出现报错时,但是日志又没有记录,可以使用前台命令启动,让前台直接打印启动过程的信息
1
2
|
cd /home/dmdba/dmdbms/bin
./dmserver /path/to/dm.ini # dmwatcher.ini dmmonitor.ini
|