达梦数据库DM8实时主备集群安装部署过程

1部署规划

1.1配置环境说明
在这里插入图片描述

1.2端口规划
在这里插入图片描述

2主库、备库和确认监视器准备
根据前期所讲解的DM8单机版的安装过程安装主库、备库和确认监视器的数据库软件以及主库、备库做相同路径和参数的初始化。

达梦数据库DM8单机版的命令行方式部署实施与测试过程:

https://blog.csdn.net/csyup1/article/details/113996671

达梦数据库DM8单机版的图形界面方式部署实施与测试过程:

https://editor.csdn.net/md/?articleId=113588445

3备库准备
3.1主库脱机备份
[root@dmp init.d]# service DmServiceGT_RP01 stop
[root@dmp ~]# ps -ef | grep dmserver
root 4727 4697 0 05:18 pts/0 00:00:00 grep dmserver
[root@dmp ~]# su - dmdba
[dmdba@dmp data]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmp bin]$ ./dmrman CTLSTMT=“backup database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ full to backup_file backupset ‘/home/dmdba/dmdbms/data/DAMENG/bak/full_backup_02’”;

3.2拷贝备份文件到备库相同的路径下面
[dmdba@dmp ~]$ logout
[root@dmp ~]# scp -r /home/dmdba/dmdbms/data/DAMENG/bak/full_backup_02 192.168.3.132:/home/dmdba/dmdbms/data/DAMENG/bak/
root@192.168.3.132’s password:
full_backup_02.bak 100% 9462KB 9.2MB/s 00:00
full_backup_02.meta 100% 73KB 72.5KB/s 00:00

3.3在备库做恢复、还原和更新同步魔数
3.3.1停备库
[root@dms1 init.d]# service DmServiceGT_RP_02 stop

3.3.2还原
[dmdba@dms1 ~]$ cd /home/dmdba/dmdbms/bin

[dmdba@dms1 bin]$./dmrman CTLSTMT=“RESTORE DATABASE ‘/DMDB/data/dmdb/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/data/DAMENG/bak/full_backup_02’”

3.3.3恢复
[dmdba@dms1 bin]$./dmrman CTLSTMT=“RECOVER DATABASE ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/data/DAMENG/bak/full_backup_02’”
3.3.4更新同步魔数

[dmdba@dms1 bin]$./dmrman CTLSTMT=“RECOVER DATABASE ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ UPDATE DB_MAGIC”

4检查主库与备库之间的数据一致性
4.1主备库两个实例分别以mount方式启动
[dmdba@DMP dmdb]$ dmserver /DMDB/data/dmdb/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT startup…
Database mode = 0, oguid = 0
License will expire on 2021-09-04
file lsn: 37090
ndct db load 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.

[dmdba@DMS1 ~]$ dmserver /DMDB/data/dmdb/dm.ini mount
version info: security
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT startup…
Database mode = 0, oguid = 0
License will expire on 2021-06-25
file lsn: 37090
ndct db load 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.

4.2对比主库与备库之间的魔数
[dmdba@DMP ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 8.820(ms)
disql V8
SQL> select file_LSN, cur_LSN from v$rlog;
行号 FILE_LSN CUR_LSN


1 37090 37090
已用时间: 6.816(毫秒). 执行号:0.

SQL> select permanent_magic;
行号 PERMANENT_MAGIC


1 738069168
已用时间: 2.936(毫秒). 执行号:1.

[root@DMP ~]# su - dmdba
[dmdba@DMP ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 6.145(ms)
disql V8
SQL> select file_lsn,cur_lsn from v$rlog;
行号 FILE_LSN CUR_LSN


1 37090 37090
已用时间: 4.530(毫秒). 执行号:100.

SQL> select permanent_magic;
行号 PERMANENT_MAGIC


1 738069168
已用时间: 0.684(毫秒). 执行号:10

5配置主备的4个参数文件
5.1 配置dm.ini

5.1.1主库

INSTANCE_NAME = GRP1_RT_01
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 次的日志发送信息

5.1.2备库

INSTANCE_NAME = GRP1_RT_02
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 次的日志重演信息
5.2配置dmmal.ini

主库/备库完全一样

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.3.131 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.3.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.3.132
MAL_PORT = 61142
MAL_INST_HOST = 192.168.3.132
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142

5.3配置dmarch.ini

5.3.1主库

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmdbms/data/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 512 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #位 Mb,0 表示无限制,范围 1024~4294967294M

5.3.2备库

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmdbms/data/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 512 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #位 Mb,0 表示无限制,范围 1024~4294967294M

5.4配置dmwatcher.ini

全局守护类型,自动切换模式,主备配置一样

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

6配置监视器 dmmonitor.ini
确认监视器:确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。
故障自动切换模式下,必须配置确认监视器,并且确认监视器最多仅能配置一个。

MON_DW_CONFIRM = 1
MON_LOG_PATH = /home/dmdba/dmdbms/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]

MON_INST_OGUID = 453331
MON_DW_IP = 192.168.0.141:52141
MON_DW_IP = 192.168.0.142:52142

7启动主备库设置OGUID
7.1 主库
# mount方式启动
[dmdba@DMP dmdb]$ dmserver /DMDB/data/dmdb/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT startup…
Database mode = 0, oguid = 0
License will expire on 2021-09-04
begin redo pwr log collect, last ckpt lsn: 37090 …
redo pwr log collect finished
main rfil[/DMDB/data/dmdb/dmdb01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr record
EP[0]'s cur_lsn[37090]
begin redo log recover, last ckpt lsn: 37090 …
redo log recover finished
ndct db load 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 值确定一个守护进程组,由用户保证 OGUID 值的唯一性,
#并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。
[root@DMP ~]# su - dmdba
[dmdba@DMP ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 5.938(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
DMSQL 过程已成功完成
已用时间: 25.411(毫秒). 执行号:0.

SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 43.392(毫秒). 执行号:1.

SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
DMSQL 过程已成功完成
已用时间: 12.588(毫秒). 执行号:2.

7.2 备库
# mount方式启动
#一定要以mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;
#并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。
[dmdba@DMS1 dmdb]$ dmserver /DMDB/data/dmdb/dm.ini mount
version info: security
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT startup…
Database mode = 0, oguid = 0
License will expire on 2021-06-25
begin redo pwr log collect, last ckpt lsn: 37090 …
redo pwr log collect finished
main rfil[/DMDB/data/dmdb/dmdb01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr record
EP[0]'s cur_lsn[37090]
begin redo log recover, last ckpt lsn: 37090 …
redo log recover finished
ndct db load 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

[dmdba@DMS1 ~]$ disql SYSDBA/SYSDBA@localhost:5237
notBefore.
notAfter error.
notAfter error.
服务器[localhost:5237]:处于普通配置状态
登录使用时间 : 16.602(ms)
上次登录ip : ::1
上次登录时间 : 2020-12-02 10:50:49
登录失败次数 : 0
口令是否过期 : 未过期
disql V8
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
DMSQL 过程已成功完成
已用时间: 19.704(毫秒). 执行号:0.

SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 8.817(毫秒). 执行号:1.

SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
DMSQL 过程已成功完成
已用时间: 13.194(毫秒). 执行号:2

8修改数据库模式
8.1主库
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> ALTER DATABASE PRIMARY;
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

8.2备库
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> ALTER DATABASE STANDBY;
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

9启动守护进程
9.1主库启动守护进程
#守护进程启动后,进入Startup状态,此时实例都处于Mount状态。
#守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,
#守护进程将本地实例Open,并切换为Open状态。
cd /home/dmdba/dmdbms/bin
[dmdba@DMP dmdb]$ ./dmwatcher /DMDB/data/dmdb/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

9.2备库启动守护进程
cd /home/dmdba/dmdbms/bin
[dmdba@DMS1 ~]$ ./dmwatcher /DMDB/data/dmdb/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

9.3查看守护进程实例的状态
SQL> select GROUP_NAME,INST_NAME,DW_TYPE,DW_MODE,DW_STATUS from V$DMWATCHER;
行号 GROUP_NAME INST_NAME DW_TYPE DW_MODE DW_STATUS


1 GRP1 GRP1_RT_01 GLOBAL AUTO OPEN

SQL> select GROUP_NAME,INST_NAME,DW_TYPE,DW_MODE,DW_STATUS from V$DMWATCHER;
行号 GROUP_NAME INST_NAME DW_TYPE DW_MODE DW_STATUS


1 GRP1 GRP1_RT_02 GLOBAL AUTO OPEN

10启动监视器
cd /home/dmdba/dmdbms/bin

[dmdba@DMM bin]$ ./dmmonitor /DMDB/data/DAMENG/dmmonitor.ini
[monitor] 2020-12-02 15:34:09: DMMONITOR[4.0] V8
[monitor] 2020-12-02 15:34:09: DMMONITOR[4.0] IS READY.

[monitor] 2020-12-02 15:34:09: 收到守护进程(GRP1_RT_01)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2020-12-02 15:34:08 OPEN OK GRP1_RT_01 OPEN PRIMARY VALID 2 38352 38352

[monitor] 2020-12-02 15:34:09: 收到守护进程(GRP1_RT_02)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2020-12-02 15:34:10 OPEN OK GRP1_RT_02 OPEN STANDBY VALID 2 38352 38352

help
达梦守护监视器当前支持以下命令:
用法说明:
命令中的[group_name]和[db_name],在组名或库名不唯一的情况下,需要指定名称,组名和库名之间用’.'分隔.
对于show monitor命令,如果db_name未指定,则按照监视器ini的配置顺序,使用组中第一个活动的守护进程获取连接信息,
#=============================================================================================#
#-----------------------------------系统全局命令----------------------------------------------#
1.help --显示帮助信息
2.exit --退出监视器
3.show version --显示监视器自身版本信息
4.show global info --显示所有组的全局信息
5.show database [group_name.]db_name --显示指定库的详细信息
6.show [group_name] --显示指定组的详细信息,如果未指定组名,则显示所有组的详细信息
7.show i[nterval] n --每隔n秒自动显示所有组的详细信息
8.q --取消自动显示
9.list [[group_name.]db_name] --列出指定组的库对应的守护进程配置信息,如果都未指定,则列出所有守护进程配置信息
10.show open info [group_name.]db_name --显示指定库的OPEN历史信息
11.show arch send info [group_name.]db_name --查看源库到指定组的指定库的归档同步信息(包含恢复间隔信息)
12.show apply stat [group_name.]db_name --查看指定组的指定库的日志重演信息
13.show monitor [group_name[.]] [db_name] --列出连接到指定守护进程的所有监视器信息
14.tip --查看系统当前运行状态

15.login --登录监视器
16.logout --退出登录

17.get takeover time --获取备库开始自动接管需要延迟等待的时间

—输入q/Q退出或者回车键继续—

SHOW
2021-02-11 07:00:51
#====================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 453331 TRUE AUTO FALSE

<>
IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.0.141 52141 2021-02-24 06:39:44 GLOBAL VALID OPEN GRP1_RT_01 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID

EP INFO:
INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
5236 OK GRP1_RT_01 OPEN PRIMARY 0 0 REALTIME VALID 4016 61519 4016 61519 NONE

<>
IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.0.142 52142 2021-02-24 06:39:53 GLOBAL VALID OPEN GRP1_RT_02 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID

EP INFO:
INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
5236 OK GRP1_RT_02 OPEN STANDBY 0 0 REALTIME VALID 4002 61519 4002 61519 NONE

DATABASE(GRP1_RT_02) APPLY INFO FROM (GRP1_RT_01):
DSC_SEQNO[0], (ASEQ, SSEQ, KSEQ)[4016, 4016, 4016], (ALSN, SLSN, KLSN)[61519, 61519, 61519], N_TSK[0], TSK_MEM_USE[0]

#========================================================#

11注册服务(root用户操作)
11.1 守护进程服务
# 主库
/DMDB/app/DM8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /DMDB/data/dmdb/dmwatcher.ini -p DW1

# 备库
/DMDB/app/DM8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /DMDB/data/dmdb/dmwatcher.ini -p DW2

11.2 监视器服务
# 监视器主机
/DMDB/app/DM8/script/root/dm_service_installer.sh -t dmmonitor -monitor_ini /DMDB/data/DAMENG/dmmonitor.ini -p MON1

12主备数据同步验证
12.1 主库准备测试数据

[dmdba@DMP ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 6.784(ms)
disql V8
SQL> create table dmfs as select * from sysobjects;
操作已执行
已用时间: 23.862(毫秒). 执行号:705.
SQL> select count(1) from dmfs;

行号 COUNT(1)


1 1340
用时间: 3.975(毫秒). 执行号:706.

12.2 备库查询,是否应用主库最新的日志
[dmdba@DMS1 ~]$ disql SYSDBA/SYSDBA@LOCALHOST:5237
notBefore.
notAfter error.
notAfter error.
服务器[LOCALHOST:5237]:处于备库打开状态
登录使用时间 : 17.063(ms)
上次登录ip : ::1
上次登录时间 : 2020-12-02 15:56:15
登录失败次数 : 0
口令是否过期 : 未过期
disql V8
SQL> select count(1) from dmfs;
行号 COUNT(1)


1 1340
已用时间: 8.217(毫秒). 执行号:600

12.3 验证备库不能做数据修改
SQL> create table dmfs2 as select * from sysobjects;
create table dmfs2 as select * from sysobjects;
[-710]:试图在STANDBY模式下,修改用户库.
已用时间: 5.986(毫秒). 执行号:0.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值