注册
linux部署dm8两节点dsc+单节点备库
专栏/技术分享/ 文章详情 /

linux部署dm8两节点dsc+单节点备库

吉吉 2023/08/10 1184 0 0
摘要

一、配置共享盘

准备四块共享盘,DCR VOTE DMDATA DMLOG
两节点配置udev并重启

vi /etc/udev/rules.d/99-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N", OWNER="dmdba", GROUP="dinstall", MODE="660"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N", OWNER="dmdba", GROUP="dinstall", MODE="660"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N", OWNER="dmdba", GROUP="dinstall", MODE="660"
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N", OWNER="dmdba", GROUP="dinstall", MODE="660"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"


[root@localhost ~]# udevadm control --reload-rules
[root@localhost ~]# udevadm trigger --type=devices --action=change

二、部署主库

1.安装好数据库软件后,一节点配置dmdcr_cfg.ini

DCR_N_GRP = 3 #磁盘内多少个组
DCR_VTD_PATH = /dev/raw/raw2 #表决磁盘路径
DCR_OGUID = 123456789 #DCR盘的oguid,和数据库的oguid不是一个

[GRP] #组1 CSS
DCR_GRP_TYPE = CSS #组类型
DCR_GRP_NAME = GRP_CSS #组名
DCR_GRP_N_EP = 2 #组内节点个数N, 最大值16
DCR_GRP_DSKCHK_CNT = 60 #磁盘心跳时间默认60s
[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 1.1.1.1 #节点ip
DCR_EP_PORT = 9001 #节点监听端口号
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 1.1.1.2 #节点ip
DCR_EP_PORT = 9001 #节点监听端口号

[GRP] #组2 ASM
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 #共享内存大小,单位m 10-1024
DCR_EP_HOST = 1.1.1.1
DCR_EP_PORT = 9002
DCR_EP_ASM_LOAD_PATH = /dev/raw #ASM扫扫描磁盘路径
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 1.1.1.2
DCR_EP_PORT = 9002
DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP] #组3 DB
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]
DCR_EP_NAME = DSC01 #实例名
DCR_EP_SEQNO = 0
DCR_CHECK_PORT = 9237
DCR_EP_PORT = 9236 #实例端口
[GRP_DSC]
DCR_EP_NAME = DSC02
DCR_EP_SEQNO = 1
DCR_CHECK_PORT = 9237
DCR_EP_PORT = 9236

2.一节点使用dmasmcmd初始化磁盘

ASM>create dcrdisk '/dev/raw/raw1' 'dcr' 
ASM>create votedisk '/dev/raw/raw2' 'vote'
ASM>create asmdisk '/dev/raw/raw3' 'data0'
ASM>create asmdisk '/dev/raw/raw4' 'log0'
ASM>init dcrdisk '/dev/raw/raw1' from '/dm8/dsc/dmdcr_cfg.ini' identified by '1'  
ASM>init votedisk '/dev/raw/raw2' from '/dm8/dsc/dmdcr_cfg.ini'

3.两节点配置dmasvrmal.ini,内容完全一致

dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 1.1.1.1
MAL_PORT = 9003
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 1.1.1.2
MAL_PORT = 9003

4.两节点配置dmdcr.ini

一节点

dmdcr.ini 
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/dsc/dmasvrmal.ini
#dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm8/dmdbms/bin/dmasmsvr dcr_ini=/dm8/dsc/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/dmdbms/bin/dmserver path=/dm8/dsc/dsc0_conf/dm.ini dcr_ini=/dm8/dsc/dmdcr.ini

二节点

dmdcr.ini 
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/dsc/dmasvrmal.ini
#dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm8/dmdbms/bin/dmasmsvr dcr_ini=/dm8/dsc/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/dmdbms/bin/dmserver path=/dm8/dsc/dsc1_conf/dm.ini dcr_ini=/dm8/dsc/dmdcr.ini

5.两节点启动dmcss和dmasm

./dmcss dcr_ini=/dm8/dsc/dmdcr.ini
./dmasmsvr dcr_ini=/dm8/dsc/dmdcr.ini

6.一节点使用dmasmtool创建dmdata盘和dmlog盘

dmasmtool DCR_INI=/dm8/dsc/dmdcr.ini
ASM>create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
ASM>create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

7.配置dminit.ctl

一节点配置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_seqno = 0
auto_overwrite = 2
page_size = 16
[DSC01]
config_path = /dm8/dsc/dsc0_config
port_num = 9236
mal_host = 1.1.1.1
mal_port = 9238
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC02]
config_path = /dm8/dsc/dsc1_config
port_num = 9236
mal_host = 1.1.1.2
mal_port = 9238
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log

生成dminit.ctl,并将生成的/dm8/dsc/dsc1_config传到二节点

./dminit control=/dm8/dsc/dminit.ini 
scp -r /dm8/dsc/dsc1_config/* dmdba@1.1.1.2:/dm8/dsc/dsc1_config

8.启动dmserver

./dmserver dcr_ini=/dm8/dsc/dmdcr.ini /dm8/dsc/dsc0_config/dm.ini
./dmserver dcr_ini=/dm8/dsc/dmdcr.ini /dm8/dsc/dsc1_config/dm.ini

三、部署备库

主库正常启动后,停止dmserver服务,保留dmasm和dmcss

1.主库两节点配置归档

dmarch.ini

ARCH_LOCAL_SHARE = 1

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/arch/dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

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

两节点dm.ini修改参数 ARCH_INI = 1

2.备份主库

重启两节点,正常后再退出,然后进行冷备,将备份文件传到单点备库

./dmrman use_ap=2 dcr_ini=/dm8/dsc01/dmdcr.ini
RMAN>BACKUP DATABASE '/dm8/dsc/dsc0_config/dm.ini' FULL BACKUPSET'/dm8/dsc/backup/db_dsc_fullback_0809';

3.初始化并恢复单点备库

./dminit path=/dm8/dsc/dscbak
./dmrman use_ap=2
RMAN>RESTORE DATABASE '/dm8/dsc/dscbak/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dsc/backup/db_dsc_fullback_0809';
RMAN>RECOVER DATABASE '/dm8/dsc/dscbak/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dsc/backup/db_dsc_fullback_0809';
RMAN>RECOVER DATABASE '/dm8/dsc/dscbak/DAMENG/dm.ini' UPDATE DB_MAGIC;

4.修改dm.ini

PORT_NUM = 9236 #主备库保持一致
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

5.主库两节点和单点备库配置dmmal.ini,增加备库配置

MAL_CHECK_INTERVAL = 30 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间

[MAL_INST0]
MAL_INST_NAME = DSC01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 1.1.1.1 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 9238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 1.1.1.1 #实例的对外服务 IP 地址
MAL_INST_PORT = 9236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 9338 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 9339 #实例监听守护进程 TCP 连接的端口

[MAL_INST1]
MAL_INST_NAME = DSC02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 1.1.1.2 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 9238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 1.1.1.2 #实例的对外服务 IP 地址
MAL_INST_PORT = 9236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 9338 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 9339 #实例监听守护进程 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME = DSCBAK #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 1.1.1.3 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 9238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 1.1.1.3 #实例的对外服务 IP 地址
MAL_INST_PORT = 9236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 9338 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 9339 #实例监听守护进程 TCP 连接的端口

6.配置dmarch.ini

主库两节点增加实时归档

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME 
ARCH_DEST = DSCBAK 

备库

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dsc/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC01/DSC02

7.配置dmwatcher.ini

主库一节点

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

主库二节点

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

备库

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /dm8/dsc/dscbak/DAMENG/dm.ini
INST_OGUID = 10000
INST_STARTUP_CMD = /dm8/dmdbms/bin
INST_AUTO_RESTART = 0 #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

8.配置dmmonitor.ini

MON_LOG_PATH = /dm8/monlog
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 = 1.1.1.1:9338/1.1.1.2:9338
MON_DW_IP = 1.1.1.3:9338

四、启动数据库

1.主备库启动到mount

./dmserver dcr_ini=/dm8/dsc/dmdcr.ini /dm8/dsc/dsc0_config/dm.ini mount
./dmserver dcr_ini=/dm8/dsc/dmdcr.ini /dm8/dsc/dsc1_config/dm.ini mount
./dmserver /dm8/dsc/dscbak/DAMENG/dm.ini mount

2.修改模式

主库任一节点

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
SQL>SP_SET_OGUID(10000); 
SQL>ALTER DATABASE PRIMARY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

备库

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
SQL>SP_SET_OGUID(10000); 
SQL>ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

3.启动所有守护进程

./dmwatcher /dm8/dsc/dsc0_config/dmwatcher.ini 
./dmwatcher /dm8/dsc/dsc1_config/dmwatcher.ini 
./dmwatcher /dm8/dsc/dscbak/DAMENG/dmwatcher.ini

4.启动监视器查看状态

./dmmonitor path=/dm8/dsc/dmmonitor.ini

2.png

5.配置数据库服务

主库两节点dmcss和dmasm

./dm_service_installer.sh -t dmcss -dcr_ini /dm8/dsc/dmdcr.ini -p CSS
./dm_service_installer.sh -t dmasmsvr -dcr_ini /dm8/dsc/dmdcr.ini -y DmCSSServiceCSS -p ASM
./dm_service_installer.sh -t dmcss -dcr_ini /dm8/dsc/dmdcr.ini -p CSS
./dm_service_installer.sh -t dmasmsvr -dcr_ini /dm8/dsc/dmdcr.ini -y DmCSSServiceCSS -p ASM

主备库dmserver

./dm_service_installer.sh -t dmserver -dm_ini /dm8/dsc/dsc0_config/dm.ini -dcr_ini /dm8/dsc/dmdcr.ini -y DmASMSvrServiceASM -p DSC01 -m mount
./dm_service_installer.sh -t dmserver -dm_ini /dm8/dsc/dsc0_config/dm.ini -dcr_ini /dm8/dsc/dmdcr.ini -y DmASMSvrServiceASM -p DSC02 -m mount
./dm_service_installer.sh -t dmserver -dm_ini /dm8/dsc/dscbak/DAMENG/dm.ini -p DSCBAK -m mount

主备库dmwatcher

./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/dsc/dsc0_config/dmwatcher.ini -p dscwat
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/dsc/dsc1_config/dmwatcher.ini -p dscwat
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/dsc/dscbak/DAMENG/dmwatcher.ini -p dscwat

至此完成两节点dsc+单节点备库搭建

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服