达梦数据库DSC集群的搭建

DSC 集群的搭建


1、 配置环境说明
在这里插入图片描述
2、 搭建2节点DMDSC(DMASM)
1) 新建共享存储
DW_P主机

编辑虚拟机设置->点击添加硬盘->选择SCSI->创建新虚拟磁盘->立即分配所有磁盘空间(20G)并选定将虚拟磁盘存储为单个文件->完成创建

DW_S主机

编辑虚拟机设置->点击添加硬盘->使用现有虚拟磁盘->完成创建

2) 在两个虚拟机路径下的.vmx文件中,添加disk.locking=“false”
DW_P
在这里插入图片描述
DW_S
在这里插入图片描述
3)在共享磁盘上裸设备划分

[root@DW_P ~]# fdisk /dev/sdb 
 
欢迎使用 fdisk (util-linux 2.23.2)。
 
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
 
Device does not contain a recognized partition table
使用磁盘标识符 0xc2b0d4af 创建新的 DOS 磁盘标签。
 
命令(输入 m 获取帮助):P
 
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b0d4af
     设备 Boot      Start         End      Blocks   Id  System
 
命令(输入 m 获取帮助):N
Partition type:
      p   primary (0 primary, 0 extended, 4 free)
      e   extended
Select (default p): P
分区号 (1-4,默认 1):1
起始 扇区 (2048-104857599,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-104857599,默认为 104857599):+100M
分区 1 已设置为 Linux 类型,大小设为 100 MiB
 
命令(输入 m 获取帮助):N
Partition type:
      p   primary (1 primary, 0 extended, 3 free)
      e   extended
Select (default p): P
分区号 (2-4,默认 2):2
起始 扇区 (206848-104857599,默认为 206848):
将使用默认值 206848
Last 扇区, +扇区 or +size{K,M,G} (206848-104857599,默认为 104857599):+100M
分区 2 已设置为 Linux 类型,大小设为 100 MiB
命令(输入 m 获取帮助):N
Partition type:
      p   primary (2 primary, 0 extended, 2 free)
      e   extended
Select (default p): P
分区号 (3,4,默认 3):3
起始 扇区 (411648-104857599,默认为 411648):
将使用默认值 411648
Last 扇区, +扇区 or +size{K,M,G} (411648-104857599,默认为 104857599):+2048M
分区 3 已设置为 Linux 类型,大小设为 2 GiB
 
命令(输入 m 获取帮助):N
Partition type:
      p   primary (3 primary, 0 extended, 1 free)
      e   extended
Select (default e): P
已选择分区 4
起始 扇区 (4605952-104857599,默认为 4605952):
将使用默认值 4605952
Last 扇区, +扇区 or +size{K,M,G} (4605952-104857599,默认为 104857599):
将使用默认值 104857599
分区 4 已设置为 Linux 类型,大小设为 47.8 GiB
 
命令(输入 m 获取帮助):P
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b0d4af
 
      设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      206847      102400   83  Linux
/dev/sdb2          206848      411647      102400   83  Linux
/dev/sdb3          411648     4605951     2097152   83  Linux
/dev/sdb4         4605952   104857599    50125824   83  Linux
 
命令(输入 m 获取帮助):W
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
正在同步磁盘。

4)编辑两节点下60-raw.rules文件,添加一下语句

vim /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="root", GROUP="root", MODE="660"

5)分别在两节点重启udev(重启操作系统也可以生效),使用绑定生效

[root@DW_P ~]# /sbin/udevadm trigger --type=devices --action=change
[root@DW_P ~]# /sbin/udevadm control --reload-rules
 
[root@DW_S ~]# /sbin/udevadm trigger --type=devices --action=change
[root@DW_S ~]# /sbin/udevadm control --reload-rules

6)两节点分别执行命令,通知已经划分了分区
7)查看裸设备的大小

[root@DW_P ~]# blockdev --getsize64 /dev/raw/raw1
[root@DW_P ~]# blockdev --getsize64 /dev/raw/raw2
[root@DW_P ~]# blockdev --getsize64 /dev/raw/raw3
[root@DW_P ~]# blockdev --getsize64 /dev/raw/raw4
 
[root@DW_S ~]# blockdev --getsize64 /dev/raw/raw1
[root@DW_S ~]# blockdev --getsize64 /dev/raw/raw2
[root@DW_S ~]# blockdev --getsize64 /dev/raw/raw3
[root@DW_S ~]# blockdev --getsize64 /dev/raw/raw4

准备 dmdcr_cfg.ini 配置文件,保存到/dmdata/目录下面。后续 DMASMCMD 工具执行 init 语句会使用到。 ( 一个节点配置即可,通常在节点一 )

[dmdba@DW_P dmdata]$ vim dmdcr_cfg.ini
 
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
 
[GRP]                                           #[GRP]表示新建一个 Group
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]                                       #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = CSS0
DCR_EP_HOST = 172.16.25.77
DCR_EP_PORT = 9341
[GRP_CSS]                                       #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = CSS1
DCR_EP_HOST = 172.16.25.88
DCR_EP_PORT = 9343
 
[GRP]                                           #[GRP]表示新建一个 Group
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]                                       #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 172.16.25.77
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]                                       #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 172.16.25.88
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
 
[GRP]                                           #[GRP]表示新建一个 Group
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]                                       #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = GRP_DSC01
DCR_EP_SEQNO  = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]                                       #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = GRP_DSC02
DCR_EP_SEQNO  = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742

使用 DMASMCMD 工具初始化

[dmdba@DW_P bin]$ ./dmasmcmd
 
DMASMCMD V8
ASM>create dcrdisk '/dev/raw/raw1' 'dcr'
[Trace]The ASM initialize dcrdisk /dev/raw/raw1 to name DMASMdcr
Used time: 174.977(ms).
ASM>create votedisk '/dev/raw/raw2' 'vote'
[Trace]The ASM initialize votedisk /dev/raw/raw2 to name DMASMvote
Used time: 96.773(ms).
ASM>create asmdisk '/dev/raw/raw3' 'LOGO'
[Trace]The ASM initialize asmdisk /dev/raw/raw3 to name DMASMLOGO
Used time: 100.840(ms).
ASM>create asmdisk '/dev/raw/raw4' 'DATA0'
[Trace]The ASM initialize asmdisk /dev/raw/raw4 to name DMASMDATA0
Used time: 27.314(ms).
ASM>init dcrdisk '/dev/raw/raw1' from '/dmdata/dmdcr_cfg.ini' identified by 'abcd'    
[Trace]DG 126 allocate 4 extents for file 0xfe000002.
Used time: 162.277(ms).
ASM>init votedisk '/dev/raw/raw2' from '/dmdata/dmdcr_cfg.ini'        
[Trace]DG 125 allocate 4 extents for file 0xfd000002.
Used time: 120.264(ms).

准备 DMASM 的 MAL 配置文件(命名为 dmasvrmal.ini),使用 DMASM 的所有节点都 要配置,内容完全一样,保存到/dmdata 目录下

[dmdba@DW_P dmdata]$ vim dmasvrmal.ini
 
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 172.16.25.77
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 172.16.25.88
MAL_PORT = 7237
 
[dmdba@DW_S dmdata]$ vim dmasvrmal.ini
 
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 172.16.25.77
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 172.16.25.88
MAL_PORT = 7237

准备 dmdcr.ini 配置文件,保存到/dmdata 目录下面

[dmdba@DW_P dmdata]$ vim dmdcr.ini
 
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dmdata/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动 
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/dmdcr.ini
#DB 重启参数,命令行方式启动 
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini
 
 
[dmdba@DW_S dmdata]$ vim dmdcr.ini
 
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dmdata/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动 
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/dmdcr.ini
#DB 重启参数,命令行方式启动 
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/dmdata/dsc1_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

启动 DMCSS、DMASM
服务程序 在 172.16.25.77、172.16.25.88 节点先后分别启动 dmcss、dmasmsvr 程序。

手动启动dmcss命令

[dmdba@DW_P bin]$ ./dmcss DCR_INI=/dmdata/dmdcr.ini

手动启动dmasmsvr命令

[dmdba@DW_P bin]$ ./dmasmsvr DCR_INI=/dmdata/dmdcr.ini
如果 DMCSS 配置有自动拉起 dmasmsvr 的功能,可以等待 DMCSS 自动拉起 dmasmsvr程序,不需要手动启动。

主 DMCSS 启动后屏幕打印如下:

[dmdba@DW_P bin]$ ./dmcss DCR_INI=/dmdata/dmdcr.ini 
 
DMCSS V8
DMCSS IS READY
[CSS]: 设置EP CSS0[0]为控制节点
 
[ASM]: 设置EP ASM0[0]为控制节点
 
[ASM]: 设置命令[START NOTIFY], 目标站点 ASM0[0], 命令序号[2]
 
[ASM]: 设置命令[EP START], 目标站点 ASM0[0], 命令序号[3]
 
[ASM]: 设置命令[NONE], 目标站点 ASM0[0], 命令序号[0]
 
[ASM]: 设置命令[EP START], 目标站点 ASM1[1], 命令序号[5]
 
[ASM]: 设置命令[NONE], 目标站点 ASM1[1], 命令序号[0]
 
[ASM]: 设置命令[EP OPEN], 目标站点 ASM0[0], 命令序号[8]
 
[ASM]: 设置命令[EP OPEN], 目标站点 ASM1[1], 命令序号[9]
 
[ASM]: 设置命令[NONE], 目标站点 ASM0[0], 命令序号[0]
 
[ASM]: 设置命令[NONE], 目标站点 ASM1[1], 命令序号[0]
 
[ASM]: 设置命令[EP REAL OPEN], 目标站点 ASM0[0], 命令序号[11]
 
[ASM]: 设置命令[EP REAL OPEN], 目标站点 ASM1[1], 命令序号[12]
 
[ASM]: 设置命令[NONE], 目标站点 ASM0[0], 命令序号[0]
 
[ASM]: 设置命令[NONE], 目标站点  ASM1[1], 命令序号[0]

使用 dmasmtool 工具创建 DMASM 磁盘组
选择一个节点(172.16.25.77),启动 dmasmtool 工具。
输入下列语句创建 DMASM 磁盘组:

[dmdba@DW_P bin]$ ./dmasmtool DCR_INI=/dmdata/dmdcr.ini 
     
DMASMTOOL V8
ASM>create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'                  #创建日志磁盘组
Used time: 62.898(ms).
ASM>create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'        #创建数据磁盘组
Used time: 9.048(ms).

准备dminit.ini配置文件,保存到/dmdata目录

[dmdba@DW_P dmdata]$ vim 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
[GRP_DSC01] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dmdata/dsc0_config
port_num = 5236
mal_host = 172.16.25.77
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[GRP_DSC02] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dmdata/dsc1_config
port_num = 5237
mal_host = 172.16.25.88
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log

使用 dminit 初始化 DB 环境
选择一个节点(172.16.25.77),启动 dminit 工具初始化数据库。dminit 执行完成后,会在 config_path 目录(/dmdata/dsc0_config 和 /dmdata/dsc1_config)下生成配置文件 dm.ini 和 dmmal.ini。

[dmdba@DW_P bin]$ ./dminit control=/dmdata/dminit.ini 
 
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-03-12
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 
  log file path: +DMLOG/log/dsc0_log01.log
 
 
  log file path: +DMLOG/log/dsc0_log02.log
 
 
  log file path: +DMLOG/log/dsc1_log01.log
 
 
  log file path: +DMLOG/log/dsc1_log02.log
 
write to dir [+DMDATA/data/dsc].
create dm database success. 2021-06-25 16:16:20

将 172.16.28.77 机器/dmdata/dsc1_config 目录拷贝到 172.16.25.88 机器相同目录下

[dmdba@DW_P dmdata]$ scp -r dsc1_config 172.16.25.88:/dmdata/
 
The authenticity of host '172.16.25.88 (172.16.25.88)' can't be established.
ECDSA key fingerprint is SHA256:vpfHOl0m+2bNORtKGqG3IZtthNYGDC84tSdzEXN3BS8.
ECDSA key fingerprint is MD5:f3:b7:09:f3:c4:5c:b7:26:06:3a:87:ed:e6:48:70:ad.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.25.88' (ECDSA) to the list of known hosts.
dmdba@172.16.25.88's password: 
dmmal.ini                                                                                                100%  214   504.6KB/s   00:00    
dm.ini                                                                                                   100%   50KB  25.0MB/s   00:00    
sqllog.ini                                                                                               100%  481   832.4KB/s   00:00

启动数据库

[dmdba@DW_P bin]$ ./dmserver /dmdata/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini
[dmdba@DW_S bin]$ ./dmserver /dmdata/dsc1_config/dm.ini dcr_ini=/dmdata/dmdcr.ini

配置服务名,dm_svc.conf服务名文件(建议所有节点都配置)

[root@DW_P ~]# vim /etc/dm_svc.conf
 
dsc=(172.16.25.77:5236,172.16.25.88:5236)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(100)
TIME_ZONE=(480)
LANGUAGE=(cn)

连接测试
单节点连接测试

[dmdba@DW_P bin]$ ./disql SYSDBA/SYSDBA
 
 
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 1.716(ms)
disql V8
SQL> select instance_name from v$instance; 
 
行号     INSTANCE_NAME
---------- -------------
1          GRP_DSC01
 
已用时间: 5.493(毫秒). 执行号:500.
 
[dmdba@DW_S bin]$ ./disql SYSDBA/SYSDBA
 
 
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 1.606(ms)
disql V8
SQL> select instance_name from v$instance;
 
行号     INSTANCE_NAME
---------- -------------
1          GRP_DSC02
 
已用时间: 6.903(毫秒). 执行号:200.
 

服务名测试

[dmdba@DW_P bin]$ ./disql SYSDBA/SYSDBA@dsc
 
服务器[172.16.25.77:5236]:处于普通打开状态
登录使用时间 : 2.133(ms)
disql V8
SQL> select * from v$dsc_ep_info;
 
行号     EP_NAME   EP_SEQNO    EP_GUID              EP_TIMESTAMP         EP_MODE      EP_STATUS
---------- --------- ----------- -------------------- -------------------- ------------ ---------
1          GRP_DSC01 0           674632671            674642851            Normal Node  OK
2          GRP_DSC02 1           674644252            674654413            Control Node OK
 
已用时间: 2.781(毫秒). 执行号:600.

1)完成 DSC 集群的部署,并测试建表和插入数据,2 个节点都可以查询到数据。

SQL> create table test1(id int);   #建表
操作已执行
已用时间: 175.182(毫秒). 执行号:301.
SQL> insert into test1 values(001);   #插入数据
影响行数 1
 
已用时间: 0.673(毫秒). 执行号:302.
SQL> insert into test1 values(123);    #插入数据
影响行数 1
 
已用时间: 0.277(毫秒). 执行号:303.
SQL> commit;
操作已执行
已用时间: 0.697(毫秒). 执行号:304.

##查询数据
[dmdba@DW_P bin]$ ./disql SYSDBA/SYSDBA
 
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.262(ms)
disql V8
SQL> SELECT * FROM TEST1;
 
行号     ID         
---------- -----------
1          1
2          123
 
已用时间: 34.728(毫秒). 执行号:300.
 
[dmdba@DW_S bin]$ ./disql SYSDBA/SYSDBA
 
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 9.323(ms)
disql V8
SQL> SELECT * FROM TEST1;
 
行号     ID         
---------- -----------
1          1
2          123
 
已用时间: 30.474(毫秒). 执行号:200.

2)测试故障一个节点后,集群和持续提供服务。

1.	连接到 dsc
[dmdba@DW_P bin]$ ./disql SYSDBA/SYSDBA@dsc
 
2.	确认当前用户已经连接到的节点实例
SQL> select instance_name from v$instance;
 
行号     INSTANCE_NAME
---------- -------------
1          GRP_DSC01
 
已用时间: 1.418(毫秒). 执行号:500.
 
3.	关闭 GRP_DSC01 实例,或者将节点 01 所在这台主机关机。
 
[root@DW_P ~]# ps -ef | grep dm.ini
dmdba      1872      1  0 11:10 pts/0    00:00:52 /opt/dmdbms/bin/dmserver /dmdata/dsc0_config/dm.ini DCR_INI=/dmdata/dmdcr.ini -noconsole
root       2864   1661  0 15:04 pts/0    00:00:00 grep --color=auto dm.ini
[root@DW_P ~]# kill 1872
 
4.	等待几秒后,再次执行这条语句,还在会话 1 中执行。再次查询当前用户已连接到的节点实例。
SQL> select instance_name from v$instance;
 
行号     INSTANCE_NAME
---------- -------------
1          GRP_DSC02
 
已用时间: 0.380(毫秒). 执行号:303.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值