搭建DSC主备

文章目录

  • 一.概述
  • 二.环境准备
  • 三.搭建DSC集群
  • 四.搭建DSC主备
  • 五.监视器
  • 六.验证
  • 七.注册服务

一.概述

DMDSC(数据共享集群)支持多个数据库实例同时访问、修改保存在共享存储中的数据,能够提供更高的数据库可用性和事务吞吐量。但由于数据是保存在共享存储上,当出现存储失效等故障时,数据库服务将会中断。

DM 数据守护包含多个数据库,主库和备库部署在不同的机器上,数据分别保存在各自的存储上,主库传递 Redo 日志到备库,备库重演 Redo 日志实现数据同步。因此,DM 数据守护在容灾(特别是异地容灾)方面具有明显的优势。为了进一步提高 DMDSC 集群的数据安全性,以及系统的可用性,DM 提供了 DMDSC 集群数据守护功能。

DMDSC 集群数据守护功能与单节点数据守护保持一致,支持故障自动切换,支持实时归档与读写分离集群。支持 DMDSC 集群的守护,DMDSC(主)和单节点(备)、单节点(主)和 DMDSC(备)相互之间都可以作为主备库的数据守护。一般建议将 DMDSC 部署为主库,将单节点部署为备库。

1.系统连接

DMDSC 数据守护集群的守护进程和守护进程之间、监视器和守护进程之间、守护进程和 dmcss 之间都需要建立 TCP 连接,用于信息传递和命令执行。 

2.归档配置

1.DMDSC 集群必须配置远程归档,用于 DMDSC 节点故障后的数据同步。

2.如果归档目标是 DMDSC 集群,则归档的目标节点需要同时配置 DMDSC 集群所有实例,一个 DMDSC 集群作为一个整体进行配置,realtime/timely/async 归档配置要求ARCH_DEST 配置目标 DMDSC 集群所有节点信息,以‘/’分割。

3.日志发送

1.异步归档日志发送

主库是单节点时,单节点实例直接收集本地的归档日志发送到备库。主库是 DMDSC 集群时,控制节点扫描本地归档和远程归档目录,收集所有节点的归档日志文件,并发送到备库,普通节点不发送归档日志。

2.实时/即时归档日志发送

单节点和 DMDSC 集群采用相同的处理逻辑,各节点将本实例产生的 Redo 日志直接发送到备库重演实例。

4.重演实例

当 DMDSC 集群作为备库时,只由集群内的一个节点进行日志重演,主库的归档配置中包含了 DMDSC 集群内所有节点,主库发送归档之前需要确定其中一个节点作为归档目标,称为重演实例。非重演实例收到重做日志直接报错处理。

DM 规定将 DMDSC 备库的控制实例作为重演实例,并且要求 DMDSC 备库的控制实例必须是 0 号节点。主库启动时,对于单节点备库,默认归档目标就是备库实例;对于 DMDSC备库,如果 0 号节点不是控制实例,则 DMDSC 备库将无法正常运行。

5.备库日志重演

DMDSC 实现机制保证多个实例不能同时修改一个数据页,不同节点对同一个数据页修改产生的 LSN 一定是唯一、递增的。单个节点 Redo 日志的 LSN 可能不连续,但所有节点Redo 日志归并在一起后,LSN 一定是连续的。但是,全局 Redo 日志归并后,可能存在 LSN 重复的非 PWR 日志。

为了降低备库重演不同节点日志时的 LSN 同步等待代价,备库收到不同节点的日志时,会按照日志包之间的依赖关系依次将不同节点的日志包按照顺序加

入同一个重演任务系统,在开启并行重演的情况下,每个日志包会再交给多路并行重演线程进行并行重演,以此确保备库重演的性能。

6.DMDSC(主)和单节点(备)

DMDSC 集群作为主库时,不同节点可能修改同一个数据页并各自产生日志,因此 DMDSC 集群的备库在重演同一个数据页的日志时,必须严格按照各节点修改的先后顺序进行重演,为了确保正确的重演顺序,DMDSC 集群的节点在修改数据页时,会记录下修改此数据页的前序节点和对应的 LSN 值,并将此信息写入日志包,组成日志包的依赖信息。

备库重演主库的日志包时,根据日志包上记录的对其他节点的依赖信息(包括节点号和LSN),会等待依赖的节点(即修改相同数据页的前序节点)先重演到依赖信息中记录的 LSN位置,然后再启动当前日志包的重演,确保重演顺序和主库上数据页的修改顺序完全一致。

主库通过异步方式发送日志时,也会通过日志包的依赖信息判断是否存在日志缺失(所依赖的其他节点的日志包是否存在),如果存在日志缺失则会终止本次日志发送,备库不会因为无法等到其他节点的日志出现重演卡住的情况。

二.环境准备

DSC0网段:192.168.235.148
DSC1网段192.168.235.149

拥有一个大于20GB的磁盘来进行划分(本文使用的磁盘大小为20GB)

    DM 各种工具位于目录:/home/dmdba/dmdbms/bin

配置文件位于目录:/dmdata

机器名

对外地址

实例名

DSC0

192.168.235.148

DSC01

DSC1

192.168.235.149

DSC02

DSCDW

192.168.235.135

DSCDW

DSCM

192.168.235.146

实例名

端口类型

端口

端口类型

端口

ASM0

DCR_EP_PORT

9349

ASM1

DCR_EP_PORT

9351

CSS0

DCR_EP_PORT

9343

CSS1

DCR_EP_PORT

9345

DSC0

DCR_EP_PORT

5236

DCR_CHECK_PORT

9741

DSC1

DCR_EP_PORT

5236

DCR_CHECK_PORT

9742

DSCW

DCR_EP_PORT

5236

ASM0 MAL

MAL_PORT

7236

ASM1 MAL

MAL_PORT

7237

DSC0 MAL

MAL_PORT

9340

DSC1 MAL

MAL_PORT

9341

DSCW

MAL_PORT

9342

DSC0

MAL_INST_DW_PORT

4567

MAL_DW_PORT

3567

DSC1

MAL_INST_DW_PORT

4568

MAL_DW_PORT

3568

DSCW

MAL_INST_DW_PORT

4569

MAL_DW_PORT

3569

1.添加共享磁盘

创建磁盘如下(如果路径中有空格,要用双引号括起来):

D:\VMware>vmware-vdiskmanager.exe -c -s 20gb -a lsilogic -t 3 "D:\vm system\dsc1\dsc01\asm.vmdk"

D:\Virtual Machines\dameng13\dameng13.vmx

D:\Virtual Machines\dameng14\dameng14.vmx文件末尾分别添加如下内容:

scsi1.present = "TRUE"

scsi1.virtualDev  = "lsilogic"

scsi1.sharedBus = "virtual"

scsi1:0.present = "TRUE"

scsi1:0.mode = "independent-persistent"

scsi1:0.filename = "D:\vm system\dsc1\dsc01\asm.vmdk"

scsi1:0.deviceType = "disk"

disk.locking = "false"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.DataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "8192"

diskLib.maxUnsyncedWrites = "0"

2.划分磁盘

在root权限下输入

fdisk /dev/sdb

依次输入n,p,1,回车(默认值),+200M

 

输入n,p,2,回车(默认值),+200M

 输入n,p,3,回车(默认),+4096M

 

输入n,p,4,回车(默认),回车(默认) 

w保存信息

查看partprobe /dev/sdb

  ll /dev/sdb*

3.裸设备绑定

修改权限,编辑两个节点的/etc/udev/rules.d/60-raw.rules 文件

vi /etc/udev/rules.d/60-raw.rules

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"

两个DSC节点分别执行

partprobe /dev/sdb

在主节点执行,完成裸设备绑定

udevadm trigger --action=add

查看绑定的裸设备:

ll /dev/raw*

查看裸设备大小:

blockdev --getsize64 /dev/raw/raw*

三.搭建DSC集群

1.配置文件dmdcr_cfg.ini

使用 dmdba用户,进行编辑配置文件
准备配置文件dmdcr_cfg.ini,保存在 /dmdata 下,只需要在dsc0 主节点上配置,后续DMASMCMD工具执行 init 语句会使用到。

vi dmdcr_cfg.ini

DCR_N_GRP = 3

DCR_VTD_PATH = /dev/raw/raw2

DCR_OGUID = 63635

[GRP]

DCR_GRP_TYPE = CSS

DCR_GRP_NAME = GRP_CSS

DCR_GRP_N_EP = 2

DCR_GRP_DSKCHK_CNT = 60

[GRP_CSS]

DCR_EP_NAME = CSS0

DCR_EP_HOST = 192.168.235.148

DCR_EP_PORT = 9343

[GRP_CSS]

DCR_EP_NAME = CSS1

DCR_EP_HOST = 192.168.235.149

DCR_EP_PORT = 9345

[GRP]

DCR_GRP_TYPE = ASM

DCR_GRP_NAME = GRP_ASM

DCR_GRP_N_EP = 2

DCR_GRP_DSKCHK_CNT = 60

[GRP_ASM]

DCR_EP_NAME = ASM0

DCR_EP_SHM_KEY = 93360

DCR_EP_SHM_SIZE = 10

DCR_EP_HOST = 192.168.235.148

DCR_EP_PORT = 9349

DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP_ASM]

DCR_EP_NAME = ASM1

DCR_EP_SHM_KEY = 93361

DCR_EP_SHM_SIZE = 10

DCR_EP_HOST = 192.168.235.149

DCR_EP_PORT = 9351

DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP]

DCR_GRP_TYPE = DB

DCR_GRP_NAME = GRP_DSC

DCR_GRP_N_EP = 2

DCR_GRP_DSKCHK_CNT = 60

[GRP_DSC]

DCR_EP_NAME = DSC0

DCR_EP_SEQNO = 0

DCR_EP_PORT = 5236

DCR_CHECK_PORT = 9741

[GRP_DSC]

DCR_EP_NAME = DSC1

DCR_EP_SEQNO = 1

DCR_EP_PORT = 5236

DCR_CHECK_PORT = 9742

2.配置dmasvrmal.ini文件

两节点内容完全一样

vi dmasvrmal.ini

[MAL_INST1]

MAL_INST_NAME = ASM0

MAL_HOST = 192.168.235.148

MAL_PORT = 7236

[MAL_INST2]

MAL_INST_NAME = ASM1

MAL_HOST = 192.168.235.149

MAL_PORT = 7237

 

3.使用DMASMCMD初始化

cd /home/dmdba/dmdbms/bin

./dmasmcmd

create dcrdisk '/dev/raw/raw1' 'dcr'

create votedisk '/dev/raw/raw2' 'vote'

create asmdisk '/dev/raw/raw3' 'LOG0'

create asmdisk '/dev/raw/raw4' 'DATA0'

init dcrdisk '/dev/raw/raw1' from '/dmdata/dmdcr_cfg.ini' identified by 'abcd'

init votedisk '/dev/raw/raw2' from '/dmdata/dmdcr_cfg.ini'

 

4.DSC0节点配置dmdcr.ini

vi dmdcr.ini

DMDCR_PATH = /dev/raw/raw1

DMDCR_MAL_PATH = /dmdata/dmasvrmal.ini

DMDCR_SEQNO = 0

/#ASM 重启参数,命令行方式启动

DMDCR_ASM_RESTART_INTERVAL = 0

DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/dmdcr.ini

/#DB 重启参数,命令行方式启动

DMDCR_DB_RESTART_INTERVAL = 0

DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

5.DSC1节点配置dmdcr.ini

DMDCR_PATH = /dev/raw/raw1

DMDCR_MAL_PATH = /dmdata/dmasvrmal.ini

DMDCR_SEQNO = 1

DMDCR_ASM_RESTART_INTERVAL = 0

DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/dmdcr.ini

DMDCR_DB_RESTART_INTERVAL = 0

DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/dmdata/dsc1_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

6.在DSC0和DSC1先后启动dmcss、dmasmsvr

cd /home/dmdba/dmdbms/bin

手动启动 dmcss 命令:

./dmcss DCR_INI=/dmdata/dmdcr.ini

手动启动 dmasmsvr 命令:

./dmasmsvr DCR_INI=/dmdata/dmdcr.ini 

 

 

7.Dsc0节点启动dmasmtool创建共享磁盘

./dmasmtool DCR_INI=/dmdata/dmdcr.ini

 

create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3' #创建磁盘日志组

create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4' #创建数据磁盘组

 

8.配置dminit.ini文件

cd /dmdata

vi dminit.ini

db_name = dsc

system_path = +DMDATA/data

system = +DMDATA/data/dsc/system.dbf

system_size = 128

roll = +DMDATA/data/dsc/roll.dbf

roll_size = 128

main = +DMDATA/data/dsc/main.dbf

main_size = 128

ctl_path = +DMDATA/data/dsc/dm.ctl

ctl_size = 8

log_size = 256

dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备

dcr_seqno = 0

auto_overwrite = 1

[DSC0]

#inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应

config_path = /dmdata/dsc0_config

port_num = 5236

mal_host = 192.168.235.148

mal_port = 9340

log_path = +DMLOG/log/dsc0_log01.log

log_path = +DMLOG/log/dsc0_log02.log

[DSC1]

#inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应

config_path = /dmdata/dsc1_config

port_num = 5237

mal_host = 192.168.235.149

mal_port = 9341

log_path = +DMLOG/log/dsc1_log01.log

log_path = +DMLOG/log/dsc1_log02.log

9.初始化数据库

cd /home/dmdba/dmdbms/bin

./dminit control=/dmdata/dminit.ini

 

可以看到创建数据库成功,进入dmdata目录后可以看到生成两个文件夹。因为一直在主节点上进行初始化操作,dsc1_config文件夹是机器2需要使用的配置文件,所以需要将dsc1_confid文件夹传输至机器2的 /dmdata 目录下。
scp -r /dmdata/dsc1_config 192.168.235.149:/dmdata

 

10.启动实例

cd /home/dmdba/dmdbms/bin

./dmserver /dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

 ./dmserver /dmdata/dsc1_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

使用Disql或者manager执行以下代码可查看集群信息
select * from v$dsc_ep_info;

四.搭建DSC主备

1.配置dmarch.ini

分别新增两个DSC 节点的 dmarch.ini 文件,增加本地归档和远程归档,dmarch.ini 文件放在各自 dm.ini 中指定的 CONFIG_PATH 目录下。

DSC0:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmarch/dsc0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

[ARCHIVE_REMOTE]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC1

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

ARCH_INCOMING_PATH = /dmarch/dsc0_remote

DSC1:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmarch/dsc1

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

[ARCHIVE_REMOTE]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

ARCH_INCOMING_PATH =  /dmarch/dsc1_remote

 

2.配置dm.ini

开启归档,将dsc01,dsc02节点的dm.ini中的ARCH_INI修改为1.

ARCH_INI = 1

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

cd /home/dmdba/dmdbms/bin

./dmserver /dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

./dmserver /dmdata/dsc1_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

3.备份DSC库

./dmrman use_ap=2 dcr_ini=/dmdata/dmdcr.ini

BACKUP DATABASE '/dmdata/dsc0_config/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dmbak/BACKUP_FILE_DSC'

4.初始化数据库

./dminit path=/dmdata INSTANCE_NAME=DSCW PORT_NUM=5236

5.拷贝备份到此节点

scp -r BACKUP_FILE_DSC 192.168.235.135:/dmbak

6.还原

./dmrman use_ap=2

RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET  '/dmbak/BACKUP_FILE_DSC'

 RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET  '/dmbak/BACKUP_FILE_DSC'

 RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC

7.配置dm.ini

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

DSC0:

INSTANCE_NAME = DSC0

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

DSC1:

INSTANCE_NAME = DSC1 

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

DSCW:

INSTANCE_NAME = DSCW 

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

8.配置dmmal.ini

在 DMDSC 集群的 dmmal.ini 文件基础上,增加备库 DSCW 的配置项。

所有节点实例的 dmmal.ini 文件内容是一致的,配置完成后,拷贝到每个节点实例dm.ini 中指定的 CONFIG_PATH 目录下。

MAL_CHECK_INTERVAL = 30 #MAL 链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间

[MAL_INST0]

MAL_INST_NAME = DSC0 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST = 192.168.235.148 #MAL 系统监听 TCP 连接的 IP 地址

MAL_PORT = 9340 #MAL 系统监听 TCP 连接的端口

MAL_INST_HOST = 192.168.235.148 #实例的对外服务 IP 地址

MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致

MAL_DW_PORT = 3567 #实例本地的守护进程监听 TCP 连接的端口

MAL_INST_DW_PORT = 4567 #实例监听守护进程 TCP 连接的端口

[MAL_INST1]

MAL_INST_NAME = DSC1 

MAL_HOST = 192.168.235.149

MAL_PORT = 9341

MAL_INST_HOST = 192.168.235.149

MAL_INST_PORT = 5236

MAL_DW_PORT = 3568

MAL_INST_DW_PORT = 4568

[MAL_INST2]

MAL_INST_NAME = DSCW

MAL_HOST = 192.168.235.135

MAL_PORT = 9342

MAL_INST_HOST = 192.168.235.135

MAL_INST_PORT = 5236

MAL_DW_PORT = 3569

MAL_INST_DW_PORT = 4569

9.配置dmarch.ini

修改dmarch.ini 文件,增加实时归档配置

DSC0:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmarch/dsc0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

[ARCHIVE_REMOTE]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC1

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

ARCH_INCOMING_PATH = /dmarch/dsc0_remote

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = DSCW

 

DSC1:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmarch/dsc1

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

[ARCHIVE_REMOTE]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

ARCH_INCOMING_PATH = /dmarch/dsc1_remote

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME

ARCH_DEST = DSCW

 

DSCW:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmarch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME

ARCH_DEST = DSC0/DSC1

10.配置dmwatcher.ini

依次配置每个节点实例的 dmwatcher.ini 文件,放到各自 dm.ini 中指定的CONFIG_PATH 目录下。另外要注意,DMDSC 集群各节点实例的自动拉起是由各自本地的 dmcss 执行的,不是由守护进程执行,如果要打开 DMDSC 集群的自动拉起,需要再去配置 dmdcr.ini 中的自动拉起参数,为避免 dmcss 在所有配置步骤完成之前提前将 dmserver 自动拉起,这里先不修改 dmdcr.ini 配置,放到后面步骤中修改。

INST_ERROR_TIME = 35 #本地实例故障认定时间应大于MAL_CHECK_INTERVAL = 30 #MAL 链路检测时间间隔,否侧启动守护进程报错:

DSC0:

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = MANUAL #手动切换模式

DW_ERROR_TIME = 60 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 35 #本地实例故障认定时间

INST_INI = /dmdata/dsc0_config/dm.ini#dm.ini 配置文件路径

DCR_INI = /dmdata/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 #指定备库重演日志的时间阀值,默认关闭

DSC1:

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = MANUAL #手动切换模式

DW_ERROR_TIME = 60 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 35 #本地实例故障认定时间

INST_INI = /dmdata/dsc1_config/dm.ini#dm.ini 配置文件路径

DCR_INI = /dmdata/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 #指定备库重演日志的时间阀值,默认关闭

 

DSCW:

[GRP1]

DW_TYPE = GLOBAL

DW_MODE = MANUAL

DW_ERROR_TIME = 60

INST_RECOVER_TIME = 60

INST_ERROR_TIME = 35

INST_INI = /dmdata/DAMENG/dm.ini

INST_OGUID = 1000

INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver

INST_AUTO_RESTART = 0 #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可

RLOG_SEND_THRESHOLD = 0

RLOG_APPLY_THRESHOLD = 0

11.配置 dmdcr.ini(非必要

DMDSC 集群中 dmserver 的自动拉起是由 dmcss 执行的,如果不需要打开 dmcss 的自动拉起功能,则可以跳过此章节。否则需要修改 dmdcr.ini 中的自动拉起配置参数,此参数修改完成后,需要重启dmcss 才可以生效,为了避免重启 dmcss 引发 dmasmsvr 被强制关闭,这里先将 dmcss和 dmasmsvr 都正常退出。

另外要注意,本示例中是用命令行方式启动,启动参数中指定以 Mount方式拉起dmserver,如果是用服务方式启动,服务脚本中也一定要指定以 Mount 方式拉起dmserver。

DSC0:

/#DB 重启参数,命令行方式启动

DMDCR_DB_RESTART_INTERVAL = 60

DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini mount

DSC1:

#DB 重启参数,命令行方式启动

DMDCR_DB_RESTART_INTERVAL = 60

DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/dmdata/dsc1_config/dm.ini dcr_ini=/dmdata/dmdcr.ini mount

12.启动主备库到mount

./dmserver /dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini mount

./dmserver /dmdata/dsc1_config/dm.ini dcr_ini=/dmdata/dmdcr.ini mount

 ./dmserver /dmdata/DAMENG/dm.ini mount

 

13.设置OGUID

dsc节点:

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SP_SET_OGUID(1000);

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

 

单节点备库:

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SP_SET_OGUID(1000);

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

 

14.修改数据库模式

DSC:

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

ALTER DATABASE PRIMARY;

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

 

单节点备库:

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

ALTER DATABASE STANDBY;

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

15.启动守护进程 

 ./dmwatcher /dmdata/dsc0_config/dmwatcher.ini

./dmwatcher /dmdata/dsc1_config/dmwatcher.ini 

./dmwatcher /dmdata/DAMENG/dmwatcher.ini 

 五.监视器

1.配置dmmonitor.ini

cd /home/dmdba/dmdbms

mkdir dmmonitor

cd dmmonitor

vi dmmonitor.ini

MON_LOG_PATH = /home/dmdba/dmdbms/dmmonitor/log

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 = 192.168.235.148:3567/192.168.235.149:3568

MON_DW_IP = 192.168.235.135:3569

2.启动监视器

cd /home/dmdba/dmdbms/bin

./dmmonitor /home/dmdba/dmdbms/dmmonitor/dmmonitor.ini

六.验证

1.DSC0建表插入数据

2.DSC1插入数据

 

3.备库查看结果

七.注册服务 

CSS:

./dm_service_installer.sh -t dmcss -p DSC -dcr_ini /dmdata/dmdcr.ini

ASM:

./dm_service_installer.sh -t dmasmsvr -p DSC -dcr_ini /dmdata/dmdcr.ini -y DmCSSServiceDSC

实例:

./dm_service_installer.sh -t dmserver -p DSC -dm_ini /dmdata/dsc0_config/dm.ini -dcr_ini /dmdata/dmdcr.ini -y DmASMSvrServiceDSC -m mount

./dm_service_installer.sh -t dmserver -p DSC -dm_ini /dmdata/dsc1_config/dm.ini -dcr_ini /dmdata/dmdcr.ini -y DmASMSvrServiceDSC -m mount

./dm_service_installer.sh -t dmserver -p DM2 -dm_ini /dmdata/DAMENG/dm.ini -m mount

守护进程:

./dm_service_installer.sh -t dmwatcher -p DSC0 -watcher_ini /dmdata/dsc0_config/dmwatcher.ini

./dm_service_installer.sh -t dmwatcher -p DSC1 -watcher_ini /dmdata/dsc1_config/dmwatcher.ini

./dm_service_installer.sh -t dmwatcher -p DSCW -watcher_ini /dmdata/DAMENG/dmwatcher.ini

 

更多资讯请上达梦技术社区了解: https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值