案例说明:
在OpenEuler系统上部署DM8的主备复制架构。
系统环境:
[root@node209 dm]# cat /etc/os-release
NAME="openEuler"
VERSION="20.03 (LTS-SP4)"
ID="openEuler"
VERSION_ID="20.03"
PRETTY_NAME="openEuler 20.03 (LTS-SP4)"
ANSI_COLOR="0;31"
系统架构:
节点信息:
一、部署安装DM8(所有节点)
1、软件包校验
[root@node208 dm]# sha256sum dm8_20240712_x86_rh7_64.iso
bdc89febd19ef051050b47446c21f2354aa03aba0e6cca1f98e3c51d35fdcaf5 dm8_20240712_x86_rh7_64.iso[root@node208 dm]# cat dm8_20240712_x86_rh7_64.iso_SHA256.txt
bdc89febd19ef051050b47446c21f2354aa03aba0e6cca1f98e3c51d35fdcaf5
2、配置数据库用户
[root@node208 dm]# id dmdba
uid=205(dmdba) gid=2003(dinstall) groups=2003(dinstall)
3、配置内核参数
[root@node208 dm]# sysctl -p
kernel.sysrq = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_retries2 = 12
net.ipv4.ip_local_reserved_ports = 15400-15407,20050-20057
net.core.netdev_max_backlog = 65535
kernel.shmall = 1152921504606846720
kernel.shmmax = 18446744073709551615
fs.file-max = 7672460
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
vm.vfs_cache_pressure = 200
vm.swappiness = 20
net.core.wmem_max = 21299200
net.core.rmem_max = 21299200
net.core.wmem_default = 21299200
net.core.rmem_default = 21299200
kernel.sem = 250 6400000 1000 25600
net.ipv4.tcp_rmem = 8192 250000 16777216
net.ipv4.tcp_wmem = 8192 250000 16777216
vm.min_free_kbytes = 112111
net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn = 65535
4、创建系统目录
# 软件包存储目录
[dmdba@node208 ~]$ mkdir -p dmdbms
# 数据库存储目录
[dmdba@node208 ~]$ mkdir -p dmdata
5、安装数据库软件
如下所示,软件部署检查/tmp空间失败:
[dmdba@node208 mnt]$ ./DMInstall.bin -i
Installer Language:
[1]: 简体中文
[2]: English
Please select the installer's language [2]:
The Temp Directory's size is too small, please set the size more than 2G. Or set DM_INSTALL_TMPDIR environment variable to assign the temporary directory of DM Installer.
1)查看系统/tmp
如下所示,系统/tmp大小为1.1G ,不满足软件部署要求:
[dmdba@node208 mnt]$ df -h
.......
tmpfs 1.1G 4.0K 1.1G 1% /tmp
2)调整/tmp空间
[root@node208 dm]# cat /etc/fstab
........
tmpfs /tmp tmpfs nodev,nosuid,size=3G 0 0
3)重新mount文件系统
[root@node208 dm]# mount -o remount,size=3G /tmp
4)查看/tmp文件系统
[root@node208 dm]# df -h
.......
tmpfs 3.0G 4.0K 3.0G 1% /tmp
执行软件部署:
[dmdba@node208 mnt]$ ./DMInstall.bin -i
Installer Language:
[1]: 简体中文
[2]: English
Please select the installer's language [2]:
Extract install files.........
Hardware architecture verification passed!
Welcome to DM DBMS InstallerWhether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:no
Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:No
Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:nWhether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:Y
TimeZone:
[ 1]: (GTM-12:00) West Date Line
[ 2]: (GTM-11:00) Samoa
[ 3]: (GTM-10:00) Hawaii
[ 4]: (GTM-09:00) Alaska
[ 5]: (GTM-08:00) Pacific(America and Canada)
[ 6]: (GTM-07:00) Arizona
[ 7]: (GTM-06:00) Central(America and Canada)
[ 8]: (GTM-05:00) East(America and Canada)
[ 9]: (GTM-04:00) Atlantic(America and Canada)
[10]: (GTM-03:00) Brasilia
[11]: (GTM-02:00) Middle Atlantic
[12]: (GTM-01:00) Azores
[13]: (GTM) Greenwich Mean Time
[14]: (GTM+01:00) Sarajevo
[15]: (GTM+02:00) Cairo
[16]: (GTM+03:00) Moscow
[17]: (GTM+04:00) AbuDhabi
[18]: (GTM+05:00) Islamabad
[19]: (GTM+06:00) Dakar
[20]: (GTM+07:00) BangKok,Hanoi
[21]: (GTM+08:00) China
[22]: (GTM+09:00) Seoul
[23]: (GTM+10:00) Guam
[24]: (GTM+11:00) Solomon
[25]: (GTM+12:00) Fiji
[26]: (GTM+13:00) Nukualofa
[27]: (GTM+14:00) Kiribati
Please Select the TimeZone [21]:Installation Type:
1 Typical
2 Server
3 Client
4 Custom
Please Input the number of the Installation Type [1 Typical]:1
Require Space: 2284MPlease Input the install path [/home/dmdba/dmdbms]:
Available Space:32G
Please Confirm the install path(/home/dmdba/dmdbms)? (Y/y:Yes N/n:No) [Y/y]:yPre-Installation Summary
Installation Location: /home/dmdba/dmdbms
Require Space: 2284M
Available Space: 32G
Version Information:
Expire Date:
Installation Type: Typical
Confirm to Install? (Y/y:Yes N/n:No):y
2025-02-08 17:06:42
[INFO] Installing DM DBMS...
2025-02-08 17:06:42
[INFO] Installing BASE Module...
2025-02-08 17:09:05
[INFO] Installing SERVER Module...
2025-02-08 17:09:21
[INFO] Installing CLIENT Module...
2025-02-08 17:10:22
[INFO] Installing DRIVERS Module...
2025-02-08 17:10:56
[INFO] Installing MANUAL Module...
2025-02-08 17:11:04
[INFO] Installing SERVICE Module...
2025-02-08 17:11:05
[INFO] Move log file to log directory.
2025-02-08 17:11:07
[INFO] Installed DM DBMS completely.Please execute the commands by root:
/home/dmdba/dmdbms/script/root/root_installer.shEnd# 执行脚本注册服务(注意:DmAPService服务,备份需要用得到)
[root@node209 dm]# /home/dmdba/dmdbms/script/root/root_installer.sh
Move /home/dmdba/dmdbms/bin/dm_svc.conf to /etc
Create the DmAPService service
Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)
Start the DmAPService service
[root@node209 dm]# systemctl status DmAPService
● DmAPService.service - DM Assistant Plug-In Service(DmAPService).Loaded: loaded (/usr/lib/systemd/system/DmAPService.service; enabled; vendor preset: disabled)Active: active (running) since Sat 2025-02-08 17:35:13 CST; 19s agoProcess: 43845 ExecStart=/home/dmdba/dmdbms/bin/DmAPService start (code=exited, status=0/SUCCESS)Main PID: 43870 (dmap)Tasks: 3Memory: 41.7MCGroup: /system.slice/DmAPService.service└─43870 /home/dmdba/dmdbms/bin/dmapFeb 08 17:34:57 node209 systemd[1]: Starting DM Assistant Plug-In Service(DmAPService)....
Feb 08 17:35:13 node209 DmAPService[43845]: [33B blob data]
Feb 08 17:35:13 node209 systemd[1]: Started DM Assistant Plug-In Service(DmAPService)..
二、创建数据库实例(数据节点)
1、初始化实例
[dmdba@node208 bin]$ ./dminit path=/home/dmdba/dmdata page_size=32 extent_size=32 log_size=2048 port_num=5236 db_name=DAMENG instance_name=DMSERVER
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-07-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLLlog file path: /home/dmdba/dmdata/DAMENG/DAMENG01.loglog file path: /home/dmdba/dmdata/DAMENG/DAMENG02.logwrite to dir [/home/dmdba/dmdata/DAMENG].
create dm database success. 2025-02-08 17:57:29
2、启动实例
[dmdba@node208 bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
csek2_vm_t = 1408
nsql_vm_t = 328
.......
trx: 6740 purged 1 pages
trx: 6742 purged 1 pages
trx: 6744 purged 1 pages
systables desc init success.
ndct_db_load_info finished, code:0.
nsvr_process_before_open begin.
nsvr_process_before_open success.
SYSTEM IS READY.
3、查看数据库服务状态
[root@node208 ~]# ps -ef |grep dmserver
dmdba 195430 194673 16 17:58 pts/0 00:00:10 ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini
[root@node208 ~]# netstat -antlp |grep 5236
tcp6 0 0 :::5236 :::* LISTEN 195430/./dmserver
4、停止实例
exitServer is stopping...
listener closed and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[4281253888], used space[13705216]
checkpoint begin, used_space[13705216], free_space[4281253888]...
full check point end.
.......
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.
三、构建主备复制架构
1、主节点执行备份
[dmdba@node208 bin]$ ./dmrman CTLSTMT="BACKUP DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE_01 BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01' COMPRESSED"
dmrman V8
BACKUP DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE_01 BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01' COMPRESSED
file dm.key not found, use default license!
Processing backupset /home/dmdba/dmdata/BACKUP_FILE_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
backup successfully!
time used: 00:00:03.951#查看备份:
[dmdba@node208 ~]$ cd dmdata/
[dmdba@node208 dmdata]$ ls -lh
total 8.0K
drwxr-xr-x 2 dmdba dinstall 4.0K Feb 8 18:09 BACKUP_FILE_01
drwxr-xr-x 6 dmdba dinstall 4.0K Feb 8 18:05 DAMENG
[dmdba@node208 dmdata]$ cd BACKUP_FILE_01/
[dmdba@node208 BACKUP_FILE_01]$ ls -lh
total 1.4M
-rw-r--r-- 1 dmdba dinstall 1.2M Feb 8 18:09 BACKUP_FILE_01.bak
-rw-r--r-- 1 dmdba dinstall 106K Feb 8 18:09 BACKUP_FILE_01.meta
2、备库执行数据库恢复
# 拷贝备份到备节点:
[dmdba@node208 ~]$ scp -r dmdata/BACKUP_FILE_01 node209:/home/dmdba/dmdata/# 备节点恢复:
[dmdba@node209 bin]$ ./dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01'"
dmrman V8
RESTORE DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
restore successfully.
time used: 00:00:04.422# recovery database:
[dmdba@node209 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01'"
dmrman V8
RECOVER DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba/dmdata/BACKUP_FILE_01'
file dm.key not found, use default license!
recover successfully!
time used: 683.114(ms)[dmdba@node209 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
recover successfully!
time used: 00:00:01.218
3、配置集群配置文件
- dm.ini
# 主机点:#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = dm01
PORT_NUM = 5236 #数据库实例监听端口
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 次的日志发送信息# 备节点:#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 16
INSTANCE_NAME = dm02
PORT_NUM = 5236 #数据库实例监听端口
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 次的日志发送信息
- dmarch.ini(归档日志配置文件)
# 主节点:[dmdba@node208 DAMENG]$ cat dmarch.ini
ARCH_WAIT_APPLY=0
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #远程实时归档
ARCH_DEST = dm02 #实时归档目标实例名(当数据库dm02是主库时同步到其他目标实例)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 204800 #单位 Mb,0 表示无限制,范围 1024~4294967294M#备节点:[dmdba@node209 DAMENG]$ cat dmarch.ini
ARCH_WAIT_APPLY=0
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #远程实时归档
ARCH_DEST = dm01 #实时归档目标实例名(当数据库GRP1_RT_02是主库时同步到其他目标实例)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 204800 #单位 Mb,0 表示无限制,范围 1024~4294967294M
- dmwatcher.ini(主备节点一致)
[dmdba@node208 DAMENG]$ cat dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 120 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 120 #本地实例故障认定时间
INST_OGUID = 453332 #守护系统唯一 OGUID 值
INST_INI = /home/dmdba/dmdata/DAMENG/dm.ini #dm.ini 实例配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmService5236 start #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
- dmmail.ini(主备节点一致)
[dmdba@node208 DAMENG]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 60 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 60 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = dm01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.1.208 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5256 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.208 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5266 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5246 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = dm02
MAL_HOST = 192.168.1.209
MAL_PORT = 5256
MAL_INST_HOST = 192.168.1.209
MAL_INST_PORT = 5236
MAL_DW_PORT = 5266
MAL_INST_DW_PORT = 5246
- dmmonitor_0.ini(主备节点和监控节点一致,基础监控)
[dmdba@node208 DAMENG]$ cat dmmonitor_0.ini
MON_DW_CONFIRM = 0 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdata/DAMENG/dmmonitorlog #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.1.208:5266
MON_DW_IP = 192.168.1.209:5266
- dmmonitor_1.ini(monitor节点配置,监控确认)
[dmdba@node203 bin]$ cat ../../dmdata/DAMENG/dmmonitor_1.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdata/DAMENG/dmmonitorlog #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.1.208:5266
MON_DW_IP = 192.168.1.209:5266
4、配置主备节点
启动主库到mount,并配置为主节点:
[dmdba@node208 bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
file dm.key not found, use default license!
version info: develop
csek2_vm_t = 1408
.......
uthr_pipe_create, create pipe[read:44, write:45]
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info finished, code:0.
SYSTEM IS READY.# 主节点开启新的session:
[dmdba@node208 bin]$ ./disql SYSDBA/SYSDBA:5236Server[LOCALHOST:5236]:mode is normal, state is mount
login used time : 9.314(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL executed successfully
used time: 17.244(ms). Execute id is 1.SQL> ALTER DATABASE PRIMARY;
executed successfully
used time: 25.808(ms). Execute id is 0.SQL> SP_SET_OGUID(453332);
DMSQL executed successfully
used time: 22.211(ms). Execute id is 2.SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL executed successfully
used time: 13.946(ms). Execute id is 3.
SQL>
启动主库到mount,并配置为备节点:
[dmdba@node209 bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
file dm.key not found, use default license!
version info: develop
......
uthr_pipe_create, create pipe[read:46, write:47]
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info finished, code:0.
SYSTEM IS READY.# 开启新的session:
[dmdba@node209 bin]$ ./disql SYSDBA/SYSDBA:5236Server[LOCALHOST:5236]:mode is normal, state is mount
login used time : 8.764(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
DMSQL executed successfully
used time: 17.415(ms). Execute id is 1.
SQL> ALTER DATABASE STANDBY;
executed successfully
used time: 50.691(ms). Execute id is 0.
SQL> SP_SET_OGUID(453332);
DMSQL executed successfully
used time: 26.219(ms). Execute id is 2.
SQL> SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
DMSQL executed successfully
used time: 12.890(ms). Execute id is 3.
SQL>
5、启动monitor(任意节点)
[dmdba@node208 bin]$ ./dmmonitor /home/dmdba/dmdata/DAMENG/dmmonitor_0.ini &
[1] 207833
[dmdba@node208 bin]$ [monitor] 2025-02-08 18:44:53: DMMONITOR[4.0] V8
[monitor] 2025-02-08 18:44:54: DMMONITOR[4.0] IS READY.
6、启动dmwatcher守护进程(数据节点)
# 主节点:
[dmdba@node208 bin]$ ./dmwatcher /home/dmdba/dmdata/DAMENG/dmwatcher.ini &
[2] 208198# 备节点:
[dmdba@node209 bin]$ ./dmwatcher /home/dmdba/dmdata/DAMENG/dmwatcher.ini &
[1] 60001
7、启动dmmonitor(监控节点)
如下所示,执行show命令,可以获取到主备复制状态信息:
[dmdba@node203 bin]$ ./dmmonitor /home/dmdba/dmdata/DAMENG/dmmonitor_1.ini
[monitor] 2025-02-08 18:53:31: DMMONITOR[4.0] V8
[monitor] 2025-02-08 18:53:32: DMMONITOR[4.0] IS READY.[monitor] 2025-02-08 18:53:33:
#-----------------------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DM02), THE FIRST LINE IS SELF INFO.DW_CONN_TIME MON_CONFIRM MID MON_IP MON_VERSION
2025-02-08 18:53:33 TRUE 32172244 ::ffff:192.168.1.203 DMMONITOR[4.0] V82025-02-08 18:46:17 FALSE 210449392 ::ffff:192.168.1.208 DMMONITOR[4.0] V8#-----------------------------------------------------------------------------------------------#[monitor] 2025-02-08 18:53:33: Received message from(DM02)WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN2025-02-08 18:53:34 OPEN OK DM02 OPEN STANDBY NULL 2 43477 43477[monitor] 2025-02-08 18:53:33: Received message from(DM01)WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN2025-02-08 18:53:35 OPEN OK DM01 OPEN PRIMARY VALID 2 43477 43477show
2025-02-08 18:53:39
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 453332 TRUE AUTO FALSE<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.208 5266 2025-02-08 18:53:40 GLOBAL VALID OPEN DM01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALIDEP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.208 5236 OK DM01 OPEN PRIMARY 0 0 REALTIME VALID 3163 43477 3163 43477 NONE<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.209 5266 2025-02-08 18:53:39 GLOBAL VALID OPEN DM02 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALIDEP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.209 5236 OK DM02 OPEN STANDBY 0 0 REALTIME VALID 3163 43477 3163 43477 NONEDATABASE(DM02) APPLY INFO FROM (DM01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3163, 3163, 3163], (RLSN, SLSN, KLSN)[43477, 43477, 43477], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (43477)#================================================================================#
四、主备集群维护操作
1、启动达梦数据库实例(主备库)
[dmdba@node208 bin]$ ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini &
[1] 19496
[dmdba@node208 bin]$ file dm.key not found, use default license!
version info: develop
csek2_vm_t = 1408
nsql_vm_t = 328
........
uthr_pipe_create, create pipe[read:44, write:45]
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info finished, code:0.
SYSTEM IS READY.[root@node208 ~]# ps -ef |grep dmserver
dmdba 195430 194673 16 17:58 pts/0 00:00:10 ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini
[dmdba@node208 bin]$ ps -ef |grep dmserver
dmdba 19496 15921 12 10:49 pts/0 00:00:02 ./dmserver /home/dmdba/dmdata/DAMENG/dm.ini
2、启动dm watcher
[dmdba@node208 bin]$ ./dmwatcher /home/dmdba/dmdata/DAMENG/dmwatcher.ini &
[2] 20334
[dmdba@node208 bin]$ DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY[dmdba@node208 bin]$ ps aux |grep dmwatcher
dmdba 20334 0.2 0.5 391560 11516 pts/0 Sl 10:52 0:00 ./dmwatcher /home/dmdba/dmdata/DAMENG/dmwatcher.ini
3、启动dm monitor
[dmdba@node203 bin]$ ./dmmonitor /home/dmdba/dmdata/DAMENG/dmmonitor_1.ini
[monitor] 2025-02-10 10:54:41: DMMONITOR[4.0] V8
[monitor] 2025-02-10 10:54:42: DMMONITOR[4.0] IS READY.[monitor] 2025-02-10 10:54:43:
#-----------------------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DM01), THE FIRST LINE IS SELF INFO.DW_CONN_TIME MON_CONFIRM MID MON_IP MON_VERSION
2025-02-10 10:54:44 TRUE 1669615864 ::ffff:192.168.1.203 DMMONITOR[4.0] V8#-----------------------------------------------------------------------------------------------#[monitor] 2025-02-10 10:54:44: Received message from(DM01)WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN2025-02-10 10:54:45 OPEN OK DM01 OPEN PRIMARY VALID 3 43533 43533[monitor] 2025-02-10 10:54:44: Received message from(DM02)WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN2025-02-10 10:54:43 OPEN OK DM02 OPEN STANDBY VALID 3 43533 43533show
2025-02-10 10:54:54
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 453332 TRUE AUTO FALSE<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.208 5266 2025-02-10 10:54:55 GLOBAL VALID OPEN DM01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALIDEP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.208 5236 OK DM01 OPEN PRIMARY 0 0 REALTIME VALID 3165 43533 3165 43533 NONE<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.209 5266 2025-02-10 10:54:53 GLOBAL VALID OPEN DM02 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALIDEP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.209 5236 OK DM02 OPEN STANDBY 0 0 REALTIME VALID 3165 43533 3165 43533 NONEDATABASE(DM02) APPLY INFO FROM (DM01), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3165, 3165, 3165], (RLSN, SLSN, KLSN)[43533, 43533, 43533], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (43533)
4、连接数据库访问
[dmdba@node208 bin]$ ./disql SYSDBA/SYSDBA:5236Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 12.461(ms)
disql V8
SQL> SQL> select * from v$version;LINEID BANNER
---------- ---------------------------------
1 DM Database Server 64 V8
2 DB Version: 0x7000c
3 03134284194-20240703-234060-20108
4 Msg Version: 12
5 Gsu level(5) cnt: 0used time: 1.714(ms). Execute id is 601.
5、执行主备switchover切换
在监控主机下执行切换命令:
switchover
Be careful to do so, this operation will cause switching of primary database, continue use GRP1.DM02 to do SWITCHOVER or not(YES/NO/Y/N)?
y
[monitor] 2025-02-10 15:24:16: Not login dmmonitor or server public key changed, please try to login again!# 需要以sysdba的身份登录后执行(sysdba/SYSDBA):
login
username:sysdba
password:
[monitor] 2025-02-10 15:27:18: Login dmmonitor success!switchover
Be careful to do so, this operation will cause switching of primary database, continue use GRP1.DM02 to do SWITCHOVER or not(YES/NO/Y/N)?
y
[monitor] 2025-02-10 15:27:31: Start to switchover instance DM02
[monitor] 2025-02-10 15:27:31: Notify dmwatcher(DM01) switch to SWITCHOVER status
[monitor] 2025-02-10 15:27:31: Dmwatcher process DM01 status switching [OPEN-->SWITCHOVER]
[monitor] 2025-02-10 15:27:31: Switch dmwatcher DM01 to SWITCHOVER status success
[monitor] 2025-02-10 15:27:31: Notify dmwatcher(DM02) switch to SWITCHOVER status
[monitor] 2025-02-10 15:27:31: Dmwatcher process DM02 status switching [OPEN-->SWITCHOVER]
[monitor] 2025-02-10 15:27:31: Switch dmwatcher DM02 to SWITCHOVER status success
[monitor] 2025-02-10 15:27:31: Instance DM01 start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 6)
[monitor] 2025-02-10 15:27:31: Instance DM01 execute sql SP_SET_GLOBAL_DW_STATUS(0, 6) success
[monitor] 2025-02-10 15:27:31: Instance DM02 start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 6)
[monitor] 2025-02-10 15:27:31: Instance DM02 execute sql SP_SET_GLOBAL_DW_STATUS(0, 6) success
[monitor] 2025-02-10 15:27:31: Instance DM01 start to execute sql ALTER DATABASE MOUNT
[monitor] 2025-02-10 15:27:31: Instance DM01 execute sql ALTER DATABASE MOUNT success
[monitor] 2025-02-10 15:27:31: Instance DM02 start to execute sql SP_APPLY_KEEP_PKG()
[monitor] 2025-02-10 15:27:32: Instance DM02 execute sql SP_APPLY_KEEP_PKG() success
[monitor] 2025-02-10 15:27:32: Instance DM02 start to execute sql ALTER DATABASE MOUNT
[monitor] 2025-02-10 15:27:32: Instance DM02 execute sql ALTER DATABASE MOUNT success
[monitor] 2025-02-10 15:27:32: Instance DM01 start to execute sql ALTER DATABASE STANDBY
[monitor] 2025-02-10 15:27:32: Instance DM01 execute sql ALTER DATABASE STANDBY success
[monitor] 2025-02-10 15:27:32: Instance DM02 start to execute sql ALTER DATABASE PRIMARY
[monitor] 2025-02-10 15:27:32: Instance DM02 execute sql ALTER DATABASE PRIMARY success
[monitor] 2025-02-10 15:27:32: Notify instance DM02 to change all arch status to be invalid
[monitor] 2025-02-10 15:27:32: Succeed to change all instances arch status to be invalid
[monitor] 2025-02-10 15:27:32: Instance DM01 start to execute sql ALTER DATABASE OPEN FORCE
[monitor] 2025-02-10 15:27:32: Instance DM01 execute sql ALTER DATABASE OPEN FORCE success
[monitor] 2025-02-10 15:27:32: Instance DM02 start to execute sql ALTER DATABASE OPEN FORCE
[monitor] 2025-02-10 15:27:33: Instance DM02 execute sql ALTER DATABASE OPEN FORCE success
[monitor] 2025-02-10 15:27:33: Instance DM01 start to execute sql SP_SET_GLOBAL_DW_STATUS(6, 0)
[monitor] 2025-02-10 15:27:33: Instance DM01 execute sql SP_SET_GLOBAL_DW_STATUS(6, 0) success
[monitor] 2025-02-10 15:27:33: Instance DM02 start to execute sql SP_SET_GLOBAL_DW_STATUS(6, 0)
[monitor] 2025-02-10 15:27:33: Instance DM02 execute sql SP_SET_GLOBAL_DW_STATUS(6, 0) success
[monitor] 2025-02-10 15:27:33: Notify dmwatcher(DM01) switch to OPEN status
[monitor] 2025-02-10 15:27:33: Dmwatcher process DM01 status switching [SWITCHOVER-->OPEN]
[monitor] 2025-02-10 15:27:33: Switch dmwatcher DM01 to OPEN status success
[monitor] 2025-02-10 15:27:33: Notify dmwatcher(DM02) switch to OPEN status
[monitor] 2025-02-10 15:27:33: Dmwatcher process DM02 status switching [SWITCHOVER-->OPEN]
[monitor] 2025-02-10 15:27:33: Switch dmwatcher DM02 to OPEN status success
[monitor] 2025-02-10 15:27:33: Notify group(GRP1)'s dmwatcher to do clear
[monitor] 2025-02-10 15:27:33: Clean request of dmwatcher processer DM01 success
2025-02-10 15:27:34
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 453332 TRUE AUTO FALSE<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.209 5266 2025-02-10 15:27:33 GLOBAL VALID OPEN DM02 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALIDEP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.209 5236 OK DM02 OPEN PRIMARY 0 0 REALTIME VALID 3192 43628 3192 43628 NONE<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.208 5266 2025-02-10 15:27:35 GLOBAL VALID OPEN DM01 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME INVALIDEP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.208 5236 OK DM01 OPEN STANDBY 0 0 REALTIME INVALID 3190 43572 3190 43572 NONEDATABASE(DM01) APPLY INFO FROM (DM02), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3190, 3190, 3190], (RLSN, SLSN, KLSN)[43572, 43572, 43572], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (43572)#================================================================================#[monitor] 2025-02-10 15:27:34: Clean request of dmwatcher processer DM02 success
[monitor] 2025-02-10 15:27:34: Switchover instance DM02 success[monitor] 2025-02-10 15:27:35: Dmwatcher process DM02 status switching [OPEN-->RECOVERY]WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN2025-02-10 15:27:35 RECOVERY OK DM02 OPEN PRIMARY VALID 4 43628 43628[monitor] 2025-02-10 15:27:38: Dmwatcher process DM02 status switching [RECOVERY-->OPEN]WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN2025-02-10 15:27:38 OPEN OK DM02 OPEN PRIMARY VALID 4 43628 43628show
# 如下所示,原主库DM01已经切换为standby,原备库DM02切换为primary:
2025-02-10 15:28:38
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 453332 TRUE AUTO FALSE<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.209 5266 2025-02-10 15:28:37 GLOBAL VALID OPEN DM02 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALIDEP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.209 5236 OK DM02 OPEN PRIMARY 0 0 REALTIME VALID 3192 43628 3192 43628 NONE<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.208 5266 2025-02-10 15:28:39 GLOBAL VALID OPEN DM01 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALIDEP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.1.208 5236 OK DM01 OPEN STANDBY 0 0 REALTIME VALID 3192 43628 3192 43628 NONEDATABASE(DM01) APPLY INFO FROM (DM02), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[3192, 3192, 3192], (RLSN, SLSN, KLSN)[43628, 43628, 43628], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (43628)#================================================================================#
6、关闭数据库服务
[dmdba@node208 bin]$ ./disql SYSDBA/SYSDBA:5236Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 5.453(ms)
disql V8SQL> shutdown immediate;
executed successfully
used time: 0.570(ms). Execute id is 0.
SQL> Server is stopping...
listener closed and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[4294950912], used space[8192]
checkpoint begin, used_space[8192], free_space[4294950912]...
checkpoint end, 0 pages flushed, used_space[12288], free_space[4294946816].
full check point end.
shutdown audit subsystem...OK
shutdown schedule subsystem...OK
shutdown timer successfully.
pre-shutdown MAL subsystem...OK
shutdown worker threads subsystem...OK
shutdown logic log subsystem...OK
shutdown sequence cache subsystem...OK
wait for mtsk link worker to exit..OK
shutdown mpp session subsystem...OK
wait for rapply is all over... OK
rapply worker threads exit successfully.
pre ending task & worker threads...OK
shutdown dblink subsystem...OK
shutdown local parallel threads pool successfully.
shutdown pthd_pools...OK
shutdown session subsystem...shutdown aux session subsystem...OK
shutdown rollback segments purging subsystem...OK
shutdown transaction subsystem...OK
shutdown locking subsystem...OK
shutdown dbms_lock subsystem...OK
ending tsk and worker threads...OK
ckpt2_exec_immediately begin.
checkpoint begin, used_space[12288], free_space[4294946816]...
checkpoint end, 0 pages flushed, used_space[8192], free_space[4294950912].
checkpoint begin, used_space[8192], free_space[4294950912]...
checkpoint begin, used_space[0], free_space[4294959104]...
Send apply keep buf msg to standby instance...OK
shutdown archive subsystem...OK
shutdown redo log subsystem...OK
shutdown MAL subsystem...OK
shutdown message compress subsystem successfully.
shutdown task subsystem...OK
shutdown trace subsystem...OK
shutdown svr_log subsystem...OK
shutdown plan cache subsystem...OK
shutdown database dictionary subsystem...OK
shutdown file subsystem...OK
shutdown mac cache subsystem...OK
shutdown dynamic login cache subsystem...OK
shutdown ifun/bifun/sfun/afun cache subsystem...OK
shutdown crypt subsystem...OK
shutdown pipe subsystem...OK
shutdown compress component...OK
shutdown slave redo subsystem...OK
shutdown kernel buffer subsystem...OK
shutdown SQL capture subsystem...OK
shutdown control file system...OK
shutdown dtype subsystem...OK
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.
参考博文:
https://blog.csdn.net/qq_37358909/article/details/143325324