刚刚考完了dcp,很糟糕的体验,本来上午的还算可以,但下午的就天紧张了,主要是环境不太好用,而且那个输入法总是中文和英文来回切换,又没法办关了,从操作机连vnc特别慢,所以下午的整个操作就特别着急,结果还是时间不太够用,尤其是搭建dw的时候,几个ini文件全部得手写,模版里的太不好用了,希望达梦在这块能有改进。配置完了dw,没有时间起起来验证了。但学习的东西并没有忘记,还是把之前练习的dw搭建再重新梳理一遍。
[dmdba@dw2 ~]$ cd /opt/
[dmdba@dw2 opt]$ ./dm8_20230105_x86_kylin10_64_DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序..........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]:
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:
所需空间: 1931M
请选择安装目录 [/home/dmdba/dmdbms]:/dm8/dmdbms
可用空间: 26G
是否确认安装路径(/dm8/dmdbms)? (Y/y:是 N/n:否) [Y/y]:
安装前小结
安装位置: /dm8/dmdbms
所需空间: 1931M
可用空间: 26G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2023-03-27 19:03:25
[INFO] 安装达梦数据库...
2023-03-27 19:03:25
[INFO] 安装 基础 模块...
2023-03-27 19:03:28
[INFO] 安装 服务器 模块...
2023-03-27 19:03:29
[INFO] 安装 客户端 模块...
2023-03-27 19:03:32
[INFO] 安装 驱动 模块...
2023-03-27 19:03:33
[INFO] 安装 手册 模块...
2023-03-27 19:03:33
[INFO] 安装 服务 模块...
2023-03-27 19:03:34
[INFO] 移动日志文件。
2023-03-27 19:03:34
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/dm8/dmdbms/script/root/root_installer.sh
安装结束
[dmdba@dw2 opt]$ 注销
[root@dw2 opt]# /dm8/dmdbms/script/root/root_installer.sh
移动 /dm8/dmdbms/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
[root@dw2 opt]#
cd /dm8/dmdbms/bin
# 初始化数据库
[dmdba@dw1 bin]$ ./dminit path=/dm8/data db_name=DAMENG instance_name=DW1 port_num=5236 page_size=16 SYSDBA_PWD=Dameng123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-01-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/data/DAMENG/DAMENG01.log
log file path: /dm8/data/DAMENG/DAMENG02.log
write to dir [/dm8/data/DAMENG].
create dm database success. 2023-03-27 21:40:16
cd /dm8/dmdbms/bin
# 初始化数据库
[dmdba@dw2 bin]$ ./dminit path=/dm8/data db_name=DAMENG instance_name=DW2 port_num=5236 page_size=16 SYSDBA_PWD=Dameng123
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2024-01-03
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/data/DAMENG/DAMENG01.log
log file path: /dm8/data/DAMENG/DAMENG02.log
write to dir [/dm8/data/DAMENG].
create dm database success. 2023-03-27 21:42:52
[dmdba@dw1 bin]$cd /dm8/dmdbms/bin
[dmdba@dw1 bin]$ ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/data/BACKUP_FILE_01'"
dmrman V8
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/data/BACKUP_FILE_01'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[37831], file_lsn[37831]
Processing backupset /dm8/data/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.217
[dmdba@dw1 bin]$
[dmdba@dw1 data]$ scp -r BACKUP_FILE_01 dw2:/dm8/data
Authorized users only. All activities may be monitored and reported.
dmdba@dw2's password:
BACKUP_FILE_01.bak 100% 12MB 178.2MB/s 00:00
BACKUP_FILE_01.meta 100% 90KB 59.8MB/s 00:00
[dmdba@dw1 data]$
[dmdba@dw2 data]$ cd /dm8/dmdbms/bin
[dmdba@dw2 bin]$ ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/BACKUP_FILE_01'"
dmrman V8
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/BACKUP_FILE_01'
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:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.484
[dmdba@dw2 bin]$
#更新数据库魔数
[dmdba@dw2 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/DAMENG/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[37831], file_lsn[37831]
recover successfully!
time used: 00:00:01.156
[dmdba@dw2 bin]$
按照官方建议修改以下参数值,ALTER_MODE_STATUS、ENABLE_OFFLINE_TS 、MAL_INI、ARCH_INI这四个值需要调整,其余的为初始化设置的,核对即可。
INSTANCE_NAME = DW1 #实际环境建议采用官方命名方法,便于区分环境,此处简化
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 次的日志发送信息
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致。
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DW1 #实例名,和dm.ini的INSTANCE_NAME一致
MAL_HOST = 192.168.100.51 #MAL系统监听TCP连接的IP地址
MAL_PORT = 6236 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.100.51 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例对外服务端口,和dm.ini的PORT_NUM一致
MAL_DW_PORT = 6336 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 6436 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DW2
MAL_HOST = 192.168.100.52
MAL_PORT = 6236
MAL_INST_HOST = 192.168.100.52
MAL_INST_PORT = 5236
MAL_DW_PORT = 6336
MAL_INST_DW_PORT = 6436
修改 dmarch.ini,配置本地归档和实时归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
注:官方手册把实时归档放在前面,这点不符合习惯,改成了本地在前,实时在后,也便于后期增加节点,可读性强。
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DW2 #实时归档目标实例名
修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。DW_MODE为AUTO就是自动切换,设置为MANUAL就是手动切换。主备库的配置保持一致。
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 202303 #守护系统唯一 OGUID 值,可以自定义
INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
一定要以 Mount 方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open数据库。
file dm.key not found, use default license!
self instance(DM1) not found in /dm8/data/DAMENG/dmmal.ini
Read /dm8/data/DAMENG/dmmal.ini error.
MAL sys initialization failed!
dmserver startup failed, code = -9501 [MAL sys has not configured or server is not enterprise version]
nsvr_ini_file_read failed, [code: -9501]
#报错了,提示在dm.ini配置文件中未发现自身的实例,前面设置的为DM1,为了便于演示观察,重新改一下dm.ini就通过了,大意了
[dmdba@dw1 bin]$ ./dmserver /dm8/data/DAMENG/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283968-20230103-178822-20033 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2024-01-03
file lsn: 37831
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
#这是前台启动的,进入数据库操作另外开一个窗口。
确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID
sp_set_oguid(202303);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
--又报错了,查了下配置文件,dmarch.ini是空的,好吧,重新编辑了
--问题又来了,必须关了库再重启才能行。。。。。。
SQL> alter database primary;
alter database primary;
第1 行附近出现错误[-811]:系统未配置本地归档.
已用时间: 0.461(毫秒). 执行号:0.
SQL> alter database primary;
操作已执行
已用时间: 8.413(毫秒). 执行号:0.
按照官方建议修改以下参数值,ALTER_MODE_STATUS、ENABLE_OFFLINE_TS 、MAL_INI、ARCH_INI这四个值需要调整,其余的为初始化设置的,核对即可。
INSTANCE_NAME = DW2 #实际环境建议采用官方命名方法,便于区分环境,此处简化
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 次的日志发送信息
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致。复制主库的即可。
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DW1 #实例名,和dm.ini的INSTANCE_NAME一致
MAL_HOST = 192.168.100.51 #MAL系统监听TCP连接的IP地址
MAL_PORT = 6236 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.100.51 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例对外服务端口,和dm.ini的PORT_NUM一致
MAL_DW_PORT = 6336 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 6436 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DW2
MAL_HOST = 192.168.100.52
MAL_PORT = 6236
MAL_INST_HOST = 192.168.100.52
MAL_INST_PORT = 5236
MAL_DW_PORT = 6336
MAL_INST_DW_PORT = 6436
修改 dmarch.ini,配置本地归档和实时归档。除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
注:官方手册把实时归档放在前面,这点不符合习惯,改成了本地在前,实时在后,也便于后期增加节点,可读性强。
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DW1 #实时归档目标实例名
修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。DW_MODE为AUTO就是自动切换,设置为MANUAL就是手动切换。主备库的配置保持一致。
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 202303 #守护系统唯一 OGUID 值,可以自定义
INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
一定要以 Mount 方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动 Open数据库。如果直接open了,需要重新还原一下。
file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283968-20230103-178822-20033 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2024-01-03
file lsn: 37831
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
#这是前台启动的,进入数据库操作另外开一个窗口。
确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID
sp_set_oguid(202303);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
操作已执行
已用时间: 5.436(毫秒). 执行号:0.
SQL>
--官方说如果不是Normal模式,需要设置ALTER_MODE_STATUS值为1,改完模式后再修改为0,实际直接可以改。
由于主库和实时备库的守护进程配置为自动切换模式,为了主库故障时能自动切换,因此必须配置确认监视器才能实现自动切换。与确认监视器相对的就是普通监视器,简单的理解就是除了不能自动处理故障切换,别的和确认监视器什么都一样,当然MON_DW_CONFIRM参数的值是唯一的不同点。
监视器可以单独部署也可以和数据库节点复用,单独部署需要安装数据库软件。
监视器dmmonitor.ini配置文件需要把DW集群中的所有节点信息都加入。
MON_LOG_PATH = /dm8/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 202303 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.100.51:6336
MON_DW_IP = 192.168.100.52:6336
先启动主库的守护进程,再启动备库的守护进程,守护进程都启动正常后,会将本地实例由mount状态切换到open状态。
[dmdba@dw1 DAMENG]$ dmwatcher /dm8/data/DAMENG/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
[monitor] 2023-03-27 23:36:45: DMMONITOR[4.0] V8
[monitor] 2023-03-27 23:36:46: DMMONITOR[4.0] IS READY.
[monitor] 2023-03-27 23:36:46: 收到守护进程(DW1)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-03-27 23:36:46 OPEN OK DW1 OPEN PRIMARY VALID 2 38039 38040
[monitor] 2023-03-27 23:36:46:
#--------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DW1), THE FIRST LINE IS SELF INFO.
DW_CONN_TIME MON_CONFIRM MID MON_IP MON_VERSION
2023-03-27 23:36:46 TRUE 662629722 ::ffff:192.168.100.51 DMMONITOR[4.0] V8
#--------------------------------------------------------------------------------#
[monitor] 2023-03-27 23:36:46: 收到守护进程(DW2)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-03-27 23:36:45 OPEN OK DW2 OPEN STANDBY VALID 2 38038 38038
show global info
2023-03-27 23:38:06
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 202303 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.100.51 6336 2023-03-27 23:38:06 GLOBAL VALID OPEN DW1 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.100.52 6336 2023-03-27 23:38:05 GLOBAL VALID OPEN DW2 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
#================================================================================#
前面的dmserver、dmwatcher 和 dmmonitor启动的操作方式都是前台启动,如果要设置开机启动,就需要注册服务了。可以使用root脚本来完成各项服务的注册。
[root@dw1 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DW1
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDW1.service → /usr/lib/systemd/system/DmServiceDW1.service.
创建服务(DmServiceDW1)完成
[root@dw1 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p Watcher
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service → /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
[root@dw1 root]#
[root@dw2 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DW2
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDW2.service → /usr/lib/systemd/system/DmServiceDW2.service.
创建服务(DmServiceDW2)完成
[root@dw2 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p Watcher
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service → /usr/lib/systemd/system/DmWatcherServiceWatcher.service.
创建服务(DmWatcherServiceWatcher)完成
[root@dw2 root]#
监视器是共用的数据库节点,此处就不注册系统服务了,如果有单独的节点可以进行注册,使用的时候可以使用前台启动的方式来接入监视器操作。
./dm_service_installer.sh -t dmmonitor -monitor_ini /dm8/data/DAMENG/dmmonitor.ini Monitor
达梦数据库守护的配置已经都完成了,前面使用的都是前台启动的方式,现在停掉所有的前台服务,并重启系统对数据守护环境进行验证。
使用shell脚本查询数据库信息,注意gv$instance在老版本数据库没有这个视图,应该是170之后才有的,可以显示集群环境中的所有数据库信息。
for i in {1..1000}
do
disql -S sysdba/Dameng123@dw \`sql.sql
sleep 0.5
echo $i `date "+%Y-%m-%d %H:%m:%S"`
echo "########################################################"
done
[dmdba@dw1 ~]$ cat sql.sql
select name,instance_name,host_name,status$,mode$ from gv$instance;
exit;
[dmdba@dw1 ~]$
[dmdba@dw1 ~]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
dw=(192.168.100.51:5236,192.168.100.52:5236)
SWITCH_TIMES=(99)
SWITCH_INTERVAL=(1000)
LOGIN_MODE=(1)
[dmdba@dw1 ~]$
切换数据库,在监视器中使用命令switchover GRP1.DW2进行切换,注意:DW2为备库。
switchover GRP1.DW2
[monitor] 2023-03-28 00:32:26: 开始切换实例DW2
[monitor] 2023-03-28 00:32:26: 通知守护进程DW1切换SWITCHOVER状态
[monitor] 2023-03-28 00:32:26: 守护进程(DW1)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2023-03-28 00:32:27: 切换守护进程DW1为SWITCHOVER状态成功
[monitor] 2023-03-28 00:32:27: 通知守护进程DW2切换SWITCHOVER状态
[monitor] 2023-03-28 00:32:27: 守护进程(DW2)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2023-03-28 00:32:28: 切换守护进程DW2为SWITCHOVER状态成功
[monitor] 2023-03-28 00:32:28: 实例DW1开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2023-03-28 00:32:28: 实例DW1执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2023-03-28 00:32:28: 实例DW2开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2023-03-28 00:32:28: 实例DW2执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2023-03-28 00:32:28: 实例DW1开始执行ALTER DATABASE MOUNT语句
[monitor] 2023-03-28 00:32:28: 实例DW1执行ALTER DATABASE MOUNT语句成功
[monitor] 2023-03-28 00:32:28: 实例DW2开始执行SP_APPLY_KEEP_PKG()语句
[monitor] 2023-03-28 00:32:28: 实例DW2执行SP_APPLY_KEEP_PKG()语句成功
[monitor] 2023-03-28 00:32:28: 实例DW2开始执行ALTER DATABASE MOUNT语句
[monitor] 2023-03-28 00:32:28: 实例DW2执行ALTER DATABASE MOUNT语句成功
[monitor] 2023-03-28 00:32:28: 实例DW1开始执行ALTER DATABASE STANDBY语句
[monitor] 2023-03-28 00:32:30: 实例DW1执行ALTER DATABASE STANDBY语句成功
[monitor] 2023-03-28 00:32:30: 实例DW2开始执行ALTER DATABASE PRIMARY语句
[monitor] 2023-03-28 00:32:31: 实例DW2执行ALTER DATABASE PRIMARY语句成功
[monitor] 2023-03-28 00:32:31: 通知实例DW2修改所有归档状态无效
[monitor] 2023-03-28 00:32:31: 修改所有实例归档为无效状态成功
[monitor] 2023-03-28 00:32:31: 实例DW1开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2023-03-28 00:32:31: 实例DW1执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2023-03-28 00:32:31: 实例DW2开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2023-03-28 00:32:32: 实例DW2执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2023-03-28 00:32:32: 实例DW1开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2023-03-28 00:32:32: 实例DW1执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2023-03-28 00:32:32: 实例DW2开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2023-03-28 00:32:32: 实例DW2执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2023-03-28 00:32:32: 通知守护进程DW1切换OPEN状态
[monitor] 2023-03-28 00:32:32: 守护进程(DW1)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2023-03-28 00:32:33: 切换守护进程DW1为OPEN状态成功
[monitor] 2023-03-28 00:32:33: 通知守护进程DW2切换OPEN状态
[monitor] 2023-03-28 00:32:33: 守护进程(DW2)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2023-03-28 00:32:34: 切换守护进程DW2为OPEN状态成功
[monitor] 2023-03-28 00:32:34: 通知组(GRP1)的守护进程执行清理操作
[monitor] 2023-03-28 00:32:35: 清理守护进程(DW1)请求成功
[monitor] 2023-03-28 00:32:35: 清理守护进程(DW2)请求成功
[monitor] 2023-03-28 00:32:35: 实例DW2切换成功
2023-03-28 00:32:35
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 202303 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.100.52 6336 2023-03-28 00:32:34 GLOBAL VALID OPEN DW2 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
EP 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.100.52 5236 OK DW2 OPEN PRIMARY 0 0 REALTIME VALID 5450 40525 5450 40528 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.100.51 6336 2023-03-28 00:32:34 GLOBAL VALID OPEN DW1 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME INVALID
EP 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.100.51 5236 OK DW1 OPEN STANDBY 0 0 REALTIME INVALID 5447 40307 5447 40307 NONE
DATABASE(DW1) APPLY INFO FROM (DW2), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[5447, 5447, 5447], (RLSN, SLSN, KLSN)[40307, 40307, 40307], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (40307)
#================================================================================#
[monitor] 2023-03-28 00:32:36: 守护进程(DW2)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-03-28 00:32:36 RECOVERY OK DW2 OPEN PRIMARY VALID 6 40537 40541
[monitor] 2023-03-28 00:32:38: 守护进程(DW2)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2023-03-28 00:32:38 OPEN OK DW2 OPEN PRIMARY VALID 6 40550 40553
验证结果可以看到,当切换命令发出后,连接没有中断,但切换到了备库,主库角色切换的过程有短暂的响应。
---------- ---- ------------- --------- ------- -------
1 DW1 DW1 dw1 OPEN PRIMARY
2 DW2 DW2 dw2 OPEN STANDBY
已用时间: 1.015(毫秒). 执行号:24800.
89 2023-03-28 00:03:28
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW1 DW1 dw1 OPEN PRIMARY
2 DW2 DW2 dw2 OPEN STANDBY
已用时间: 0.969(毫秒). 执行号:24900.
90 2023-03-28 00:03:28
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.984(毫秒). 执行号:8600.
91 2023-03-28 00:03:32
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.698(毫秒). 执行号:8700.
92 2023-03-28 00:03:32
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.559(毫秒). 执行号:8800.
93 2023-03-28 00:03:33
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 1.185(毫秒). 执行号:8900.
94 2023-03-28 00:03:33
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.307(毫秒). 执行号:9000.
95 2023-03-28 00:03:34
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.520(毫秒). 执行号:9100.
96 2023-03-28 00:03:34
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.331(毫秒). 执行号:9200.
97 2023-03-28 00:03:35
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.632(毫秒). 执行号:9300.
98 2023-03-28 00:03:35
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.779(毫秒). 执行号:9400.
99 2023-03-28 00:03:36
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.549(毫秒). 执行号:9500.
100 2023-03-28 00:03:37
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.681(毫秒). 执行号:9600.
101 2023-03-28 00:03:37
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
已用时间: 0.579(毫秒). 执行号:9700.
102 2023-03-28 00:03:38
########################################################
行号 NAME INSTANCE_NAME HOST_NAME STATUS$ MODE$
---------- ---- ------------- --------- ------- -------
1 DW2 DW2 dw2 OPEN PRIMARY
2 DW1 DW1 dw1 OPEN STANDBY
已用时间: 1.621(毫秒). 执行号:9800.
103 2023-03-28 00:03:38
#################
文章
阅读量
获赞