【与达梦同行】--在centos7上搭建DM 共享存储数据库集群(DSC)

DM 共享存储数据库集群(DSC)

  1. 概述

DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同 一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。

DMDSC 集群主要由数据库和数据库实例、共享存储、本地存储、通信网络、以及集群控制软件 DMCSS组成。

  1. 相关知识点

共享存储

物理存储器中一段可由两个以上的进程共享的存储空间。共享存储段具有大小和物理存储地址。想要访问共享存储段的进程可以连接这段存储区域到自己的地址空间中任何适合的地方,其他进程也一样。这样,多个进程便可以访问相同的物理存储。

DMDSC 集群中,为了实现多个实例同时访问、修改数据,要求将数据文件、控制文件、日志文件保存在共享存储上。配置 DMDSC 集群需要的 DCR、Voting disk 必须保存在 DMASM 文件系统管辖范围之外的共享存储上。

集群控制

集群控制是集群系统的重要组成部分。DMCSS 就是一款集群控制软件,专门负责监控 集群中各个节点的运行状态。DMCSS 主要功能包括:管理集群的启动和关闭,控制节点故障处理,以及管理节点重加入流程.

业务网卡,虚拟内部网络

虚拟内部网络:内部网络用于数据库实例之间交换信息和数据,MAL 链路使用的就是内部网络

心跳网卡,虚拟专用网络

虚拟专用网络:公共网络用于对外提供数据库服务,用户使用公共网络地址登录 DMDSC 集群,访问数据库。

共享内存

共享内存是一种快速、高效的进程间通信手段。所谓共享内存,就是同一块物理内存被 映射到多个进程的地址空间,进程 A 可以即时看到进程 B 对共享内存的修改,反之亦然。 DMASM 服务器进程和 DMASM 客户端进程之间通过共享内存方式共享 DMASM 文件到实际磁 盘的映射关系。

VIP

是一个不与特定计算机或者计算机中的网络接口相连的IP地址。 数据包被发送到这个 VIP 地址,但是所有的数据还是经过真实的网络接口。在集群环境中, 应用通过 VIP 连接数据库服务器,实例故障后,把实例配置的 VIP 设置到其他活动节点(叫 做 IP 漂移),这样应用可以不用修改配置,继续访问数据库服务。

  1. 搭建
    1. 1、集群规划

A机器

B机器

业务IP

192.168.56.101

192.168.56.105

心跳IP

192.168.56.101

192.168.56.105

软件目录

/opt/dsc/setup

/opt/dsc/setup

安装目录

/opt/dsc/dmdbms

/opt/dsc/dmdbms

配置文件目录

/opt/dsc/config

/opt/dsc/config

归档日志目录

/opt/dsc/arch_0

/opt/dsc/arch_1

远程归档目录

/opt/dsc/arch_0_remote

/opt/dsc/arch_1_remote

备份目录

/opt/dsc/bak

/opt/dsc/bak

dmdcr_cfg

CSS

DCR_EP_NAME

CSS0

CSS1

DCR_EP_HOST

192.168.56.101

192.168.56.105

DCR_EP_PORT

5336

5337

ASM

DCR_EP_NAME

ASM0

ASM1

DCR_EP_HOST

192.168.56.101

192.168.56.105

DCR_EP_PORT

5436

5437

DB

DCR_EP_NAME

DSC0

DSC1

DCR_EP_PORT

5236

5236

DCR_CHECK_PORT

5536

5537

dmasvrmal

MAL_INST_NAME

ASM0

ASM1

MAL_HOST

192.168.56.101

192.168.56.105

MAL_PORT

5636

5637

dminit

PORT_NUM

5236

5236

MAL_HOST

192.168.56.101

192.168.56.105

MAL_PORT

5736

5737

归档上限

51200

51200

OGUID

45331

说明:具体规划及部署方式以现场环境为准。

    1. 2、创建共享磁盘

测试操作系统为centos7.5两台机器IP分别为192.168.184.131(主节点dsc1),192.168.184.133 dsc2此次搭建DSC是测试环境,在虚拟机VM16.0pro上需要新建共享磁盘。

储存规划

用途

空间规划(总共6T)

sdb1用于dcr信息

100M

sdb2用于存放vote信息

100M

sdb3用于存放redo log

20480M

sdb4用于存放data

剩下的全部空间

使用fdisk /dev/sdb 命令进行分区操作

只需要再DSC1节点处划分

[root@~]# fdisk /dev/sdb

  1) 依次输入  n  p  1  回车  +100M,完成第一块磁盘划分

  2) 依次输入  n  p  2  回车  +100M,完成第二块磁盘划分

  3) 依次输入  n  p  3  回车  +20480M,完成第三块磁盘划分

  4) 依次输入  n  p  回车  回车  回车,完成第四块磁盘划分

  5) 输入w命令,将裸设备划分的设置进行保存

输入fdisk -l查看是否同步

【与达梦同行】--在centos7上搭建DM 共享存储数据库集群(DSC)_第1张图片

已同步

绑定设备

[root@~]# vi /etc/udev/rules.d/70-persistent-ipoib.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"

[root@~]# partprobe /dev/sdb

[root@~]# reboot

注意:可通过blockdev --getsize64 /dev/raw/raw1 、2、3、4命令分别查看设备大小。看是否对应

【与达梦同行】--在centos7上搭建DM 共享存储数据库集群(DSC)_第2张图片

对应,证明划分正确

    1. 搭建DSC
      1. 改主机名1(2号机换成2)

 [root@~]# hostname dmdsc01

[root@~]# vi /etc/sysconfig/network

  NETWORKING=yes

  HOSTNAME=dmdsc01

[root@~]# vi /etc/hostsname

  dmdsc01

      1. 关防火墙

 [root@~]# systemctl stop firewalld

[root@~]# systemctl disable firewalld

[root@~]# systemctl status firewalld

      1. 网卡自启

 [root@~]# vi /etc/sysconfig/network-scripts/ifcfg-eth33

  ONBOOT=yes

[root@~]# systemctl restart network

      1. 创建用户、目录、安装数据库安装到/opt/dsc/dmdbms目录下

 [root@~]# groupadd dinstall -g 2001;useradd -g dinstall dmdba -u 1001;passwd dmdba

[root@~]# mkdir -p /opt/dsc/setup /opt/dsc/dmdbms /opt/dsc/config /opt/dsc/arch_0 /opt/dsc/arch_0_remote /opt/dsc/bak

[root@~]# chown dmdba.dinstall /opt/dsc -R;chmod 777 /opt/dsc -R

[dmdba@~]# /opt/dsc/setup/DMInstall.bin -i

      1. 创建dmdcr_cfg.ini(11、2配置相同)

 DCR_N_GRP                = 3  #集群环境有多少个GROUP,范围:1~16

  DCR_VTD_PATH             = /dev/raw/raw2

  DCR_OGUID                = 45331

[GRP]  #新建一个GROUP

  DCR_GRP_TYPE             = CSS  #组类型(CSS/ASM/DB

  DCR_GRP_NAME             = GRP_CSS  #组名

  DCR_GRP_N_EP             = 2  #组内节点个数

  DCR_GRP_DSKCHK_CNT       = 60  #磁盘心跳容错时间,单位:

[GRP_CSS]

  DCR_EP_NAME              = CSS0  #CSS节点名

  DCR_EP_HOST              = 192.168.56.101  #心跳地址

  DCR_EP_PORT              = 5336  #CSS端口

[GRP_CSS]

  DCR_EP_NAME              = CSS1

  DCR_EP_HOST              =192.168.56.105

  DCR_EP_PORT              = 5337

[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  #ASM节点名,和dmasvrmalMAL_INST_NAME一致

  DCR_EP_SHM_KEY           = 93360  #共享内存标识

  DCR_EP_SHM_SIZE          = 10  #共享内存大小

  DCR_EP_HOST              = 192.168.56.101 #心跳地址

  DCR_EP_PORT              = 5436  #ASM端口

  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.56.105

  DCR_EP_PORT              = 5437

  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  #实例名,和dm.iniINSTANCE_NAME一致

  DCR_EP_SEQNO             = 0  #组内序号,不能重复

  DCR_EP_PORT              = 5236  #实例端口,和dm.iniPORT_NUM一致

  DCR_CHECK_PORT           = 5536  #DCR检查端口

[GRP_DSC]

  DCR_EP_NAME              = DSC1

  DCR_EP_SEQNO             = 1

  DCR_EP_PORT              = 5236

  DCR_CHECK_PORT           = 5537

      1. 初始化磁盘

1号机,在bin下面的./dmasmcmd

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

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

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

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

ASM> init dcrdisk '/dev/raw/raw1' from '/opt/dsc/config/dmdcr_cfg.ini' identified by 'admin1234'

ASM> init votedisk '/dev/raw/raw2' from '/opt/dsc/config/dmdcr_cfg.ini'

      1. 创建dmasvrmal.ini

 两机器相同配置在/opt/dsc/config下

[MAL_INST1]

  MAL_INST_NAME            = ASM0

  MAL_HOST                 = 192.168.56.101 #心跳地址

  MAL_PORT                 = 5636  #MAL监听端口

[MAL_INST2]

  MAL_INST_NAME            = ASM1

  MAL_HOST                 = 192.168.56.105

  MAL_PORT                 = 5637

      1. 创建dmdcr.ini

 1号机

DMDCR_PATH                 = /dev/raw/raw1

DMDCR_MAL_PATH             = /opt/dsc/config/dmasvrmal.ini

DMDCR_SEQNO                = 0

DMDCR_AUTO_OPEN_CHECK      = 90

#DMDCR_ASM_RESTART_INTERVAL = 30  #CSS认定ASM故障重启的时间

#DMDCR_ASM_STARTUP_CMD      = /opt/dsc/dmdbms/bin/dmasmsvr dcr_ini=/opt/dsc/config/dmdcr.ini

#DMDCR_DB_RESTART_INTERVAL  = 60  #CSS认定DSC故障重启的时间

#DMDCR_DB_STARTUP_CMD       = /opt/dsc/dmdbms/bin/dmserver path=/opt/dsc/config/dsc0_config/dm.ini dcr_ini=/opt/dsc/config/dmdcr.ini

注:当前是手动拉起,等配置完成后将#删除,可自动拉起

      1. 启动CSS、ASM服务bin目录下1、2号机依次启动

Css

./dmcss DCR_INI=/opt/dsc/config/dmdcr.ini

Asm

./dmasmsvr DCR_INI=/opt/dsc/config/dmdcr.ini

      1. 创建DMASM磁盘组

1号机器

[dmdba@~]# /opt/dsc/dmdbms/bin/dmasmtool DCR_INI=/opt/dsc/config/dmdcr.ini

  ASM> create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'

  ASM> create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

      1. 创建dminit.ini

1、2机器配置相同

vi /opt/dsc/config/dminit.ini

  db_name                  = dsc

  system_path              = +DMDATA/data

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

  main_size                = 128

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

  roll_size                = 128

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

  system_size              = 128

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

  ctl_size                 = 8

  log_size                 = 2048

  dcr_path                 = /dev/raw/raw1

  dcr_seqno                = 0

  auto_overwrite           = 1

  PAGE_SIZE                = 32

  CASE_SENSITIVE           = Y

  CHARSET                  = 0

[DSC0]

  config_path              = /opt/dsc/config/dsc0_config

  port_num                 = 5236

  mal_host                 = 192.168.56.101

  mal_port                 = 5736

  log_path                 = +DMLOG/log/dsc0_log01.log

  log_path                 = +DMLOG/log/dsc0_log02.log

[DSC1]

  config_path              = /opt/dsc/config/dsc1_config

  port_num                 = 5236

  mal_host                 = 192.168.56.106

  mal_port                 = 5737

  log_path                 = +DMLOG/log/dsc1_log01.log

  log_path                 = +DMLOG/log/dsc1_log02.log

      1. 初始化实例

 --初始化实例

[dmdba@~]# /opt/dsc/dmdbms/bin/dminit control=/opt/dsc/config/dminit.ini

  ...

  create dm database success. 2020-11-14 21:25:31

--拷贝文件

[dmdba@~]# scp -r /opt/dsc/config/dsc1_config [email protected]:/opt/dsc/config/

      1. 创建dmarch.ini,开归档

1号

vi /opt/dsc/config/dsc0_config/dmarch.ini

[ARCHIVE_LOCAL]

  ARCH_TYPE                = LOCAL

  ARCH_DEST                = /opt/dsc/arch_0

  ARCH_FILE_SIZE           = 1024

  ARCH_SPACE_LIMIT         = 51200

[ARCHIVE_REMOTE]

  ARCH_TYPE                = REMOTE

  ARCH_DEST                = DSC1

  ARCH_INCOMING_PATH       = /opt/dsc/arch_0_remote

  ARCH_FILE_SIZE           = 1024

  ARCH_SPACE_LIMIT         = 51200

2号

vi /opt/dsc/config/dsc1_config/dmarch.ini

[ARCHIVE_LOCAL]

  ARCH_TYPE                = LOCAL

  ARCH_DEST                = /opt/dsc/arch_1

  ARCH_FILE_SIZE           = 1024

  ARCH_SPACE_LIMIT         = 51200

[ARCHIVE_REMOTE]

  ARCH_TYPE                = REMOTE

  ARCH_DEST                = DSC0

  ARCH_INCOMING_PATH       = /opt/dsc/arch_1_remote

  ARCH_FILE_SIZE           = 1024

  ARCH_SPACE_LIMIT         = 51200

      1.  启动DMSERVER服务

/opt/dsc/dmdbms/bin/dmserver /opt/dsc/config/dsc0_config/dm.ini dcr_ini=/opt/dsc/config/dmdcr.ini

看是否有报错。

      1. 注册CSS、ASM、DMSERVER后台服务

[root@~]# /opt/dsc/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /opt/dsc/config/dmdcr.ini -p CSS

[root@~]# /opt/dsc/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /opt/dsc/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

[root@~]# /opt/dsc/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dsc/config/dsc0_config/dm.ini -dcr_ini /opt/dsc/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC

      1. 配置监视器

1、2号机相同

vi /opt/dsc/dmdbms/bin/dmcssm.ini

CSSM_OGUID                 = 45331

CSSM_CSS_IP                = 192.168.56.101:5336

CSSM_CSS_IP                = 192.168.56.106:5337

CSSM_LOG_PATH              = ../log

CSSM_LOG_FILE_SIZE         = 512

CSSM_LOG_SPACE_LIMIT       = 2048

      1. 启动监视器

/opt/dsc/dmdbms/bin/dmcssm INI_PATH=/opt/dsc/dmdbms/bin/dmcssm.ini

      1. 启停集群

启动:1/2机器CSS

/opt/dsc/dmdbms/bin/DmCSSServiceCSS start

CSS启动后30秒自动拉起ASM,60秒自动拉起DMSERVER。

停止: 1/2机器DMSERVER→A/B机器ASM→A/B机器CSS

说明:1)DSC正常停库必须2节点同时停止,根据目前脚本配置,CSS启动后30秒自动拉起ASM,60秒自动拉起DMSERVER,所以停止DMSERVER和ASM后,要尽快停止CSS,避免被自动拉起。2)ASM服务在任意节点停止,2个节点的ASM服务都会停止,为了保险起见,可以两边都执行停止命令。3)服务全部停止后,要检查后台进程是否全部停止。

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心

你可能感兴趣的:(数据库,网络,服务器)