DSC+DW实时+异步搭建部署

DSC+DW实时+异步搭建部署

配置 DMDSC+双节点节点数据守护

实例及IP规划

实例名 外部通信IP 内部通信IP 端口 备注
DSC1 192.168.100.11 172.16.1.171 5237 实时主机DSC1
DSC2 192.168.100.12 172.16.1.1712 5237 实时主机DSC2
DW_S 192.168.100.8 192.168.100.8 5237 实时备机+确认监控器
DW_Y 192.168.100.13 192.168.100.13 5237 异步备机

配置 DMDSC+实时备机

配置 dmarch.ini

--DSC节点1

sh 复制代码
cd /home/dmdba/config
vi dmarch.ini

#添加以下内容

sh 复制代码
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 
ARCH_DEST = +DMDATA/DSC/DSC1/arch
ARCH_FILE_SIZE = 128 
ARCH_SPACE_LIMIT = 0 

[ARCHIVE_REMOTE]    #远程归档
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2    #节点2的实例名
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0 
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC2/arch

--DSC节点2

sh 复制代码
cd /home/dmdba/config
vi dmarch.ini

#添加以下内容

sh 复制代码
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC/DSC2/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_REMOTE]    #远程归档
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1    #节点2的实例名
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC1/arch

配置 dm.ini

分别编辑两个 DMDSC 节点的 dm.ini 文件,打开归档参数:

cobol 复制代码
ARCH_INI = 1

数据备份还原

数据备份还原目的是还原到实时备库里,重启 DMDSC 集群的两个 dmserver 实例,然后再正常退出。在 DMDSC 集群生成有归 档日志的情况下进行脱机备份,以便后续校验日志连续性时使用。

#要注意:一定要确保两个节点的css、asmsvr已经启动,且数据库关闭

--脱机备份 DMDSC 集群(在节点1执行)

--启动 dmrman

shell 复制代码
./dmrman use_ap=2 dcr_ini=/home/dmdba/config/dmdcr.ini     #确保DSC1和DSC2是正常关闭的,否则会日志错误报错
mkdir  /home/dmdba/fullback
shell 复制代码
RMAN>BACKUP DATABASE '/home/dmdba/config/dsc1/dm.ini' FULL BACKUPSET '/home/dmdba/fullback/'; #确保DSC1和DSC2已结正常关闭

BACKUP DATABASE '/home/dm/dmdbms/data/DW_S/dm.ini' FULL BACKUPSET '/home/dm/fullback/';

#运行结果

配置实时备库(实时备库上执行)

--初始化备库

sh 复制代码
./dminit path=/home/dm/dmdbms/data/  DB_NAME=DW_S INSTANCE_NAME=DW_S 
sh 复制代码
mkdir -p  /home/dm/fullbak  #单机上执行

在DCS1执行,将备份文件上传到实时备机

sh 复制代码
cd /home/dmdba/fullbak        #DSC上执行
sh 复制代码
scp -r *  dm@192.168.100.8:/home/dm/fullbak/

scp -r * dmdba@192.168.100.1:/home/dmdba/config/dsc1

在实时备库执行还原

--启动 dmrman 在数据库bin目录下

sh 复制代码
./dmrman use_ap=2

--使用 DMDSC 库的备份集还原恢复到实时备库

BACKUP DATABASE '/home/dm/dmdbms/data/DW_S/dm.ini' FULL BACKUPSET '/home/dm/fullback/';

scp -r * dmdba@192.168.100.11:/home/dmdba/fullback/

sh 复制代码
RMAN>RESTORE DATABASE '/home/dm/dmdbms/data/DW_S/dm.ini' FROM BACKUPSET '/home/dm/fullback';
RMAN>RECOVER DATABASE '/home/dm/dmdbms/data/DW_S/dm.ini' FROM BACKUPSET '/home/dm/fullback';
RMAN>RECOVER DATABASE '/home/dm/dmdbms/data/DW_S/dm.ini' UPDATE DB_MAGIC;

RMAN>RESTORE DATABASE '/home/dmdba/config/dsc1/dm.ini' FROM BACKUPSET '/home/dmdba/fullback';

RMAN>RECOVER DATABASE '/home/dmdba/config/dsc1/dm.ini' FROM BACKUPSET '/home/dmdba/fullback';

RMAN>RECOVER DATABASE '/home/dmdba/config/dsc1/dm.ini' UPDATE DB_MAGIC;

配置 dm.ini

依次配置 DMDSC 主库所有节点和单节点备库的 dm.ini 文件,修改数据守护相关的参数配置

1.DSC节点1配置 dm.ini

shell 复制代码
cd /home/dmdba/config/dsc3
sh 复制代码
vi dm.ini

#修改以下内容

shell 复制代码
INSTANCE_NAME = DSC1 
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 次的日志发送信息

查看修改的结果:查看是否修改成功

shell 复制代码
cat /home/dmdba/config/dsc1/dm.ini | grep -E "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" 

2.DSC节点2配置 dm.ini

shell 复制代码
cd /home/dmdba/config/dsc4

#修改以下内容

shell 复制代码
INSTANCE_NAME = DSC2 
PORT_NUM = 5237
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

查看修改的结果:查看是否修改成功

shell 复制代码
cat /home/dmdba/config/dsc2/dm.ini | grep -E  "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" 

3.DW实时备库节点配置 dm.ini

sh 复制代码
cd  /home/dm/dmdbms/data/DW_S

#修改以下内容

shell 复制代码
INSTANCE_NAME = DW_S 
PORT_NUM = 5236            
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0  
ENABLE_OFFLINE_TS = 2      
MAL_INI = 1                
ARCH_INI = 1               
RLOG_SEND_APPLY_MON = 64   

2、查看修改的结果:查看是否修改成功

shell 复制代码
cat /home/dm/dmdbms/data/DW_S/dm.ini | grep -E "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" 

配置 dmmal.ini

在 DMDSC 集群的 dmmal.ini 文件基础上,增加备库GW_S 的配置项。 所有节点实例的 dmmal.ini 文件内容是一致的,配置完成后,拷贝到每个节点实例dm.ini 中指定的 CONFIG_PATH 目录下

#添加以下内容

ini 复制代码
MAL_CHECK_INTERVAL = 30               #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10           #判定 MAL 链路断开的时间
[MAL_INST0]
 MAL_INST_NAME = DSC1        #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
 MAL_HOST = 172.16.1.171             #MAL 系统监听 TCP 连接的 IP 地址
 MAL_PORT = 9236                      #MAL 系统监听 TCP 连接的端口
 MAL_INST_HOST = 192.168.100.11        #实例的对外服务 IP 地址
 MAL_INST_PORT = 5237                 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
 MAL_DW_PORT = 3567                   #实例本地的守护进程监听 TCP 连接的端口
 MAL_INST_DW_PORT = 4567              #实例监听守护进程 TCP 连接的端口

[MAL_INST1]
 MAL_INST_NAME = DSC2
 MAL_HOST = 172.16.1.172
 MAL_PORT = 9236
 MAL_INST_HOST = 192.168.100.12
 MAL_INST_PORT = 5237
 MAL_DW_PORT = 3568
 MAL_INST_DW_PORT = 4568

[MAL_INST2]
 MAL_INST_NAME = DW_S
 MAL_HOST = 192.168.100.8
 MAL_PORT = 9236
 MAL_INST_HOST = 192.168.100.8
 MAL_INST_PORT = 5237
 MAL_DW_PORT = 3569
 MAL_INST_DW_PORT = 4569

拷贝到其他机器上

shell 复制代码
 scp -r dmmal.ini dmdba@192.168.100.12:/home/dmdba/config/dsc2/ 
 scp -r dmmal.ini dm@192.168.100.8:/home/dm/dmdbms/data/DW_S/ 

配置 dmarch.ini

---节点1

sh 复制代码
cd /home/dmdba/config/dsc1
vi  dmarch.ini 

#添加内容

shell 复制代码
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 
ARCH_DEST = +DMDATA/DSC/DSC1/arch
ARCH_FILE_SIZE = 128 
ARCH_SPACE_LIMIT = 0 

[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC2/arch

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME
ARCH_DEST = DW_S

---节点2

sh 复制代码
cd /home/dmdba/config/dsc2
vi  dmarch.ini 

#添加内容

shell 复制代码
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC/DSC2/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0 
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC1/arch

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME
ARCH_DEST = DW_S

---DW备库

sh 复制代码
cd /dm8/dmdbms/data/DW_S
vi  dmarch.ini 

#添加内容

shell 复制代码
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dm/dmdbms/data/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC1/DSC2

配置 dmwatcher.ini

依次配置每个节点实例的 dmwatcher.ini 文件,放到各自 dm.ini 中指定的

CONFIG_PATH 目录下

---节点1

sh 复制代码
cd /home/dmdba/config/dsc1
vi dmwatcher.ini
shell 复制代码
[GRP1]
DW_TYPE = GLOBAL                                 #全局守护类型
DW_MODE = MANUAL                                 #手动切换模式
DW_ERROR_TIME = 60                               #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                           #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35                             #本地实例故障认定时间
INST_INI = /home/dmdba/config/dsc1/dm.ini          #dm.ini 配置文件路径
DCR_INI = /home/dmdba/config/dmdcr.ini          #dmdcr.ini 配置文件路径
INST_OGUID = 1000                                #守护系统唯一 OGUID 值
INST_STARTUP_CMD =  /home/dmdba/dmdbms/bin/dmserver     #命令行方式启动
INST_AUTO_RESTART = 0                            #关闭实例的自动启动功能
RLOG_SEND_THRESHOLD = 0                          #指定主库发送日志到备库的时间阈
值,默认关闭
RLOG_APPLY_THRESHOLD = 0                         #指定备库重演日志的时间阈值,默
认关闭                     

---节点2

sh 复制代码
cd /home/dmdba/config/dsc2
vi dmwatcher.ini
shell 复制代码
[GRP1]
 DW_TYPE = GLOBAL
 DW_MODE = MANUAL
 DW_ERROR_TIME = 60
 INST_RECOVER_TIME = 60
 INST_ERROR_TIME = 35
 INST_INI = /home/dmdba/config/dsc2/dm.ini
 DCR_INI = /home/dmdba/config/dmdcr.ini
 INST_OGUID = 1000
 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
 INST_AUTO_RESTART = 0
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0               

---DW实时备库节点

sh 复制代码
cd /dm8/dmdbms/data/DW_S
vi dmwatcher.ini
shell 复制代码
[GRP1]
 DW_TYPE = GLOBAL
 DW_MODE = MANUAL
 DW_ERROR_TIME = 60
 INST_RECOVER_TIME = 60
 INST_ERROR_TIME = 35
 INST_INI = /home/dm/dmdbms/data/DW_S/dm.ini
 INST_OGUID = 1000
 INST_STARTUP_CMD = /home/dm/dmdbms/bin/dmserver
 INST_AUTO_RESTART = 0              #对单节点,如果需要打开自动拉起功能,将此配>置修改为 1 即可
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0

4.7、配置 dmmonitor.ini

编辑 dmmonitor.ini 文件,放在/home/dm/dmdbms/data/GW_S 目录下:

sh 复制代码
mkdir -p /home/dm/dmdbms/monitor
mkdir -p /home/dm/dmdbms/monitor/monitorlog
sh 复制代码
vi dmmonitor.ini

#加入参数

shell 复制代码
MON_LOG_PATH =  /home/dmdba/dmdbms/monitor/monitorlog
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 0
[GRP1]
MON_INST_OGUID = 1000
MON_DW_IP = 172.16.1.171:3567/172.16.1.172:3568
MON_DW_IP = 192.168.100.8:3569

重启 dmcss 和 dmasmsvr

--节点1:

sh 复制代码
./dmcss dcr_ini=/home/dmdba/config/dmdcr.ini 
./dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini

--节点2:

sh 复制代码
./dmcss dcr_ini=/home/dmdba/config/dmdcr.ini 
./dmasmsvr dcr_ini=/home/dmdba/config/dmdcr.ini

启动主备库集群

启动 DMDSC 集群的两个 dmserver 实例

如果 dmcss 打开有自动拉起功能,也可以等待 dmcss 将本地的 dmserver 实例自动

拉起(要保证以 Mount 方式拉起)。

--手动启动命令如下:

#DSC手动启动

sh 复制代码
./dmserver path=/home/dmdba/config/dsc1/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini  mount

./dmserver path=/home/dmdba/config/dsc2/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini  mount

启动dw备库节点

sh 复制代码
./dmserver /home/dm/dmdbms/data/DW_S/dm.ini mount

设置 OGUID和修改主备库模式

---集群:连接任一的DSC节点进行配置

启动命令行工具 DIsql,连接 DMDSC 集群中的任意一个节点,设置 DMDSC 主库的

OGUID 值。

sh 复制代码
cd /home/dmdba/dmdbms/bin
./disql SYSDBA/SYSDBA:5237
sh 复制代码
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(1000);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

---集群:DIsql 连接单节点备库,设置备库 OGUID。

sh 复制代码
cd /home/dm/dmdbms/bin
./disql SYSDBA/SYSDBA@DW_S:5237     #记住如果登陆不上时,一定是hosts没有配置ip地址映射
sh 复制代码
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(1000);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

启动守护进程

---DSC节点1

启动 DMDSC 主库的所有守护进程:

sh 复制代码
cd /dm8/dmdbms/bin
./dmwatcher /home/dmdba/config/dsc1/dmwatcher.ini

---DSC节点2

sh 复制代码
cd /dm8/dmdbms/bin
./dmwatcher /home/dmdba/config/dsc2/dmwatcher.ini

---备库的守护进程:

sh 复制代码
cd /dm8/dmdbms/bin
./dmwatcher /home/dm/dmdbms/data/DW_S/dmwatcher.ini

启动监视器

--启动数据守护监视器:

sh 复制代码
./dmmonitor path=/home/dm/dmdbms/data/DW_S/dmmonitor.ini

--DMDSC 集群也有自己的监视器工具,需要时也可以启动

sh 复制代码
./dmcssm ini_path=/home/dmdba/config/dmcssm.ini

注册服务

----DSC节点注册:不能单独注册dmasmsvr,因为dmasmsvr依赖dmcss,所以集群只需要注册dmcss

和dmwatcher,开启自动dmserver、dmserver

---节点1

#注册dmcss(只需要css自动拉起dmasmsvr)

sh 复制代码
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh  -p dmCSS1   -t dmcss  -dcr_ini /home/dmdba/config/dmdcr.ini 

#注册dmwatcher

sh 复制代码
cd  /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -p dmwatcher0 -t dmwatcher -watcher_ini  /home/dmdba/config/dsc1/dmwatcher.ini

#注册服务

sh 复制代码
./dm_service_installer.sh -p dmserver0 -t dmserver -dm_ini /home/dmdba/config/dsc1/dm.ini

---节点2

#注册dmcss

sh 复制代码
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh  -p DMCSS2    -t dmcss  -dcr_ini /home/dmdba/config/dmdcr.ini 

#注册dmwatcher

sh 复制代码
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -p dmwatcher1 -t dmwatcher -watcher_ini  /home/dmdba/config/dsc2/dmwatcher.ini

#注册服务

sh 复制代码
./dm_service_installer.sh -p dmserver1 -t dmserver -dm_ini  /home/dmdba/config/dsc2/dm.ini

----DW实时备机注册服务:

#注册dmserver

sh 复制代码
cd /home/dm/dmdbms/script/root/
./dm_service_installer.sh  -t dmserver  -p dw_s  -dm_ini  /home/dm/dmdbms/data/DW_S/dm.ini

#注册dmwatcher

sh 复制代码
cd  /home/dm/dmdbms/script/root
./dm_service_installer.sh -t dmwatcher  -p dmwatcher0  -watcher_ini  /home/dm/dmdbms/data/DW_S/dmwatcher.ini

----监视器注册服务:

#注册dmcss

sh 复制代码
cd /home/dmdba/dmdbms/script/root 
./dm_service_installer.sh -p DMCSSM0  -t dmcssm -cssm_ini /home/dmdba/config/dmcssm.ini

#注册dmmonitor

sh 复制代码
cd  /home/dm/dmdbms/script/root
./dm_service_installer.sh -p dmmonitor  -t dmmonitor -monitor_ini   /home/dm/dmdbms/data/DW_S/dmmonitor.ini

----重启服务,看一下服务有没有自动起来

DSC测试

--1、客户端(管理工具)查询数据同步情况

情形下1:DSC1建表并插入数据,可以在DSC2和单节点备机dw_s查询得到

节点1创建表

节点2查询:

备库查询:

情形下2:DSC2建表并插入数据,可以在DSC1和单节点备机dw_s查询得到

节点2创建表

节点1查询:

备库查询:

情形下3:dw_s只能查询数据,不能建表和插入数据,原因是备机是stanby,只读操作

异步备机

​ 在实际应用中,如果数据库规模很大,并且对数据的实时性要求不是很严格,则可以配 置多个异步备库用于分担统计报表等任务。

复制代码
    异步备库支持多源配置,目的是在实时或即时主备环境中,当主备库切换或者主库故障 时,备库接管以后可以继续向同一个异步备库同步数据,因此如果主库配置了异步备库,在所有备库上也需要配置相同的异步备库,备库只有在切换为主库时才会向其同步数据。

初始化备库

sh 复制代码
./dminit path=/home/dm/dmdbms/data/  DB_NAME=DW_Y INSTANCE_NAME=DW_Y

数据还原

同样,在开始配置之前,需要将主库进行备份,然后在异步的备库上还原。

sh 复制代码
scp -r *  dmdba@192.168.100.13:/home/dmdba/fullbak/

#回到备机DW_Y,打开dmrman进行还原恢复

sh 复制代码
./dmrman use_ap=2
RMAN>RESTORE DATABASE '/home/dmdba/dmdbms/data/DW_Y/dm.ini' FROM BACKUPSET '/home/dmdba/fullback';
RMAN>RECOVER DATABASE '/home/dmdba/dmdbms/data/DW_Y/dm.ini' FROM BACKUPSET '/home/dmdba/fullback';
RMAN>RECOVER DATABASE '/home/dmdba/dmdbms/data/DW_Y/dm.ini' UPDATE DB_MAGIC;

配置dm.ini

只需在因为之前配置实时主备的时候已经将DSC1、DSC2与DW_S的dm.ini(包括下文配置到的其他配置文件)配置的差不多了,而异步备库DW-Y是我们刚刚还原得到的,还有很多没有配置,因此前三者改动较小,后者修改较多。

两个主库与实时备库

在DSC1、DSC2、GW_S上进行:

复制代码
TIMER_INI = 1 

异步备库

在刚还原得到的备库上配置dm.ini:

sh 复制代码
INSTANCE_NAME = GW_Y
PORT_NUM = 5237 ##数据库实例监听端口
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置

配置dmmal.ini

​ 就像之前所说的,所有的实例中的dmmal.ini都是一致的,但是由于之前的dmmal.ini没有配置新备机信息,因此需要在之前的dmma.ini的基础上增加:

#在上文的dmmal.ini中增加以下信息,然后直接复制到GW_Y即可

sh 复制代码
[MAL_INST3]
MAL_INST_NAME = DW_Y
MAL_HOST = 192.168.100.13  ##MAL系统监听TCP连接的IP地址
MAL_PORT = 9236 ##MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.100.13  ##实例的对外服务IP地址
MAL_INST_PORT = 5237 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 3670 ##实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 4570 ##实例监听守护进程TCP连接的端口

配置dmarch.ini

两个主库与实时备库上

在之前配置的三个库,只需要在dmarch.ini上增加异步归档配置项。

#增加内容:

sh 复制代码
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC ##异步归档
ARCH_DEST = DW_Y ##异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER ##定时器名称,和dmtimer.ini中的名称一致

异步备库DW_Y上

该备库尚未配置dmarch.ini。配置信息如下:

sh 复制代码
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL ##本地归档类型
ARCH_DEST = /home/dmdba/dmdbms/data/DW_Y/arch ##本地归档文件路径
ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制

配置dmtimer.ini

​ 本配置只要在两个主库与实时备库DW_S上进行, 用于定时触发实例发送归档日志到异步备库。 放到各自 dm.ini 中指定的 CONFIG_PATH 目录下。

##定时器配置为每天 00:00:00 触发主库发送归档日志到异步备库,可以根据实际情况再做调整。

sh 复制代码
[RT_TIMER]
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL =0
FREQ_MINUTE_INTERVAL = 0
START_TIME= 13:20:00
END_TIME= 13:22:00
DURING_START_DATE = 2024-08-28 16:27:00
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1    

配置dmwatcher.ini

​ 因为配置异步备库前,实时主备环境已经配置完成,这里对主库不需要再做其他配置。对异步备库上则需配置:dmwatcher.ini

sh 复制代码
[GRP1]
DW_TYPE = LOCAL ##本地守护类型
DW_MODE = MANUAL ##故障手动切换模式
DW_ERROR_TIME = 10 ##远程守护进程故障认定时间
INST_ERROR_TIME = 10 ##本地实例故障认定时间
INST_OGUID = 1000 ##守护系统唯一OGUID值
INST_INI = /home/dmdba/dmdbms/data/GW_Y/dm.ini ##dm.ini配置文件路径
INST_AUTO_RESTART = 1 ##打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver ##命令行方式启动

启动主备库

​ 根据之前的流程来看,是时候启动主备库了。同样地,一定要以mount方式启动。

sh 复制代码
./dmserver path=/home/dmdba/config/dsc1/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini  mount

./dmserver path=/home/dmdba/config/dsc2/dm.ini dcr_ini=/home/dmdba/config/dmdcr.ini  mount

./dmserver /home/dm/dmdbms/data/DW_S/dm.ini mount

./dmserver /home/dmdba/dmdbms/data/DW_Y/dm.ini mount

设置OGUID与备库模式

​ 没错,根据之前的流程,轮到设置OGUID与主备库模式了。但是前三者我们上文已经设置完毕,这里只需设置GRP_LC_01即可。

复制代码
    在异步备库DW_Y上启动disql,然后运行。
sh 复制代码
./disql SYSDBA/SYSDBA:5237
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(1000);
SQL>ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);        

启动守护进程及监视器

在四台机器上分别运行:

#DSC1

./dmwatcher /home/dmdba/config/dsc1/dmwatcher.ini

#DSC2

./dmwatcher /home/dmdba/config/dsc2/dmwatcher.ini

#DW_S

./dmwatcher /home/dm/dmdbms/data/DW_S/dmwatcher.ini

#DW_Y

./dmwatcher /home/dmdba/dmdbms/data/DW_Y/dmwatcher.ini

#DW_S

./dmmonitor path=/home/dm/dmdbms/DW_S/dmmonitor.ini

启动完监视器后,我们就可以使用show命令查看状态了:

​ 至此,配置了一个实时备库与一个异步备库的DMDSC数据守护就配置完毕了!

复制代码
如果需要手动关闭的话,要严格按照以下顺序:
如果启动了确认监视器,先关闭确认监视器(防止自动接管)
关闭备库守护进程(防止重启实例)
关闭主库守护进程(防止重启实例)
Shutdown 主库
Shutdown 备库

测试


主库dsc1查找

实时备库查找

异步备库查找

问题:晚上正常关闭,早上启动就报这个错误

解决:使用备库还原到DSC1,DSC能够正常启动

监视器

在四台机器上分别运行:

#DSC1

./dmwatcher /home/dmdba/config/dsc1/dmwatcher.ini

#DSC2

./dmwatcher /home/dmdba/config/dsc2/dmwatcher.ini

#DW_S

./dmwatcher /home/dm/dmdbms/data/DW_S/dmwatcher.ini

#DW_Y

./dmwatcher /home/dmdba/dmdbms/data/DW_Y/dmwatcher.ini

#DW_S

./dmmonitor path=/home/dm/dmdbms/DW_S/dmmonitor.ini

启动完监视器后,我们就可以使用show命令查看状态了:

​ 至此,配置了一个实时备库与一个异步备库的DMDSC数据守护就配置完毕了!

复制代码
如果需要手动关闭的话,要严格按照以下顺序:
如果启动了确认监视器,先关闭确认监视器(防止自动接管)
关闭备库守护进程(防止重启实例)
关闭主库守护进程(防止重启实例)
Shutdown 主库
Shutdown 备库

达梦社区地址:https://eco.dameng.com

相关推荐
laoliu19961 小时前
Odoo 18企业版源码 包含 部署教程
运维·服务器
守城小轩1 小时前
基于Chrome140的Quora账号自动化(关键词浏览)——运行脚本(三)
运维·自动化·chrome devtools·指纹浏览器·浏览器开发
未来之窗软件服务2 小时前
幽冥大陆(五十五)ASR SetThreadInformation C语言识别到自动化软件
运维·自动化·asr·东方仙盟·操作系统级别错误
开开心心就好2 小时前
免费卸载工具,可清理残留批量管理启动项
linux·运维·服务器·windows·随机森林·pdf·1024程序员节
Lbwnb丶2 小时前
检测服务器是否是虚拟化,如KVM,VM等
linux·运维·服务器
老猿讲编程2 小时前
【车载信息安全系列4】基于Linux中UIO的HSE应用实现
linux·运维·服务器
鸡吃丸子2 小时前
初识Docker
运维·前端·docker·容器
wanhengidc3 小时前
巨椰 云手机 云游戏稳定运行
运维·服务器·arm开发·游戏·云计算
林义满3 小时前
大促零宕机背后的运维升级:长三角中小跨境电商的架构优化实践
大数据·运维·架构