注册
达梦数据库集群(DataWatch)搭建
专栏/培训园地/ 文章详情 /

达梦数据库集群(DataWatch)搭建

DM_063956 2024/10/10 823 0 0
摘要

一、安装前准备
1.1 集群规划
安装准备前先在两台主备服务器安装好数据库,本示例中组名为“GRP1” ,配置为实时主备,主库命名为“DM01” ,备库命名为“DM02”。
1.1.1配置说明:

1.1.2端口规划:

二、主备集群搭建
2.1 数据库安装
主备库均需要先安装数据库。详细安装步骤可以参考:达梦数据库(DM8)安装。

2.2 配置主库
2.2.1主库节点初始化实例
本例指定数据库存放路径、DB_NAME、INSTANCE_NAME、页大小为32k、端口

-----主库初始化
[dmdba@db1 ~]$ dminit PATH=/home/dmdba/data DB_NAME=DM INSTANCE_NAME=DM01 PORT_NUM=5236 SYSDBA_PWD=dameng123 SYSAUDITOR_PWD=dameng123 page_size=32 CASE_SENSITIVE=N
initdb V8.1.0.147-Build(2019.03.27-104581)ENT
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2024-07-06
log file path: /home/dmdba/data/dm/dm01.log
log file path: /home/dmdba/data/dm/dm02.log
write to dir [/home/dmdba/data/dm].
create dm database success. 2024-06-22 09:16:31
2.2.2启动服务

启动主库验证实例能否正常启动:

[dmdba@db1 data]$ dmserver /home/dmdba/data/DM/dm.ini
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8.1.0.147-Build(2019.03.27-104581)ENT startup...
License will expire on 2024-07-06
ckpt lsn: 0
ndct db load finished
ndct fill fast pool finished
iid page's trxid[1]
NEXT TRX ID = 2
pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages
pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages
total 0 active crash trx, pseg_crash_trx_rollback begin ...
pseg_crash_trx_rollback end
purg2_crash_cmt_trx end, total 0 page purged
set EP[0]'s pseg state to inactive
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
trx: 2 purged 1 pages
trx: 21 purged 1 pages
trx: 22 purged 1 pages
trx: 23 purged 1 pages
trx: 24 purged 1 pages
trx: 35 purged 1 pages
trx: 155 purged 1 pages
trx: 174 purged 1 pages
trx: 175 purged 1 pages
trx: 176 purged 1 pages
trx: 177 purged 1 pages
trx: 1203 purged 1 pages
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback begin ...
pseg_crash_trx_rollback end
SYSTEM IS READY.----数据库启动成功
2.2.3启动服务注册服务并启动实例(在root用户下)

[root@db1 dm]# /home/dmdba/dm8/script/root/dm_service_installer.sh -t dmserver -p dm -dm_ini /home/dmdba/data/DM/dm.ini -m mount
2.2.4启动归档模式

[dmdba@db1 dm]$ disql sysdba/dameng123

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 5.150(毫秒)
disql V8.1.0.147-Build(2019.03.27-104581)ENT
SQL>
SQL>
SQL> alter database mount;
操作已执行
已用时间: 00:00:01.850. 执行号:0.
SQL> alter database add archivelog 'DEST=/home/dmdba/arch,TYPE=local, FILE_SIZE=128,space_limit=0';
操作已执行
已用时间: 1.512(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 3.470(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 00:00:01.556. 执行号:0.
SQL> select arch_mode from v$database;

行号 arch_mode


1 Y

已用时间: 2.356(毫秒). 执行号:866.
2.2.5主库备份

SQL> backup database full backupset '/home/dmdba/dmbk/dm_full_01';
操作已执行
已用时间: 876.943(毫秒). 执行号:3.
注意有的版本报如下错;
backup database full backupset '/home/dmdba/data/dm/bak/dm_full_01';
[-8109]:创建dmap管道失败,请检查dmap是否已经启动.
已用时间: 4.041(毫秒). 执行号:0.
dm.ini 里面 BAK_USE_AP 改成 2 ,重启实例--(或者提前修改)。
2.2.6修改配置文件 dm.ini

SQL> SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SQL> SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1);
SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
或者在dm.ini修改

PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #dmmal.ini,打开MAL系统,默认0
ARCH_INI = 1 #dmarch.ini,默认0
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
CHECK_SVR_VERSION = 0 #数据库记录的执行码版本比当前SERVER版本高时,0:不报错;1:报错,服务器不能启动成功
2.2.7配置归档dmarch.ini文件

修改 dmarch.ini,配置本地归档和实时归档。
除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
当前实例 DM01 是主库,需要向 DM02(实时备库)同步数据,因此实时归档的 ARCH_DEST 配置为 DM02。
ARCH_WAIT_APPLY = 0

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型(timely读写分离)
ARCH_DEST = DM02 #实时归档目标实例名(主库写备库,备库写主库)
2.2.8配置 dmwatcher.ini(数据守护)

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 10 #主库守护进程启动恢复的间隔时间
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /home/dmdba/data/DM/dm.ini #dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dm8/bin
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
说明:在 DM DW4.0 之后,已经不再需要生成 dmwatcher.ctl 控制文件,dmctlcvt 工具也不再支持 dmwaterch.ctl 文件的生成。
4.0之前手动生产

[dmdba@db2 DM]$ dmctlcvt help
DMCTLCVT V8
version: 03134284172-20240321-222308-20093

格式: ./dmctlcvt KEYWORD=value
注意: 控制文件名称必须指定为dm.ctl、dmmpp.ctl、dss.ctl

关键字 说明

TYPE 1 转换控制文件为文本文件(源文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
2 转换文本文件为控制文件(目标文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
SRC 源文件路径
DEST 目标文件路径
DCR_INI dmdcr.ini文件路径
HELP 打印帮助信息

示例:
./dmctlcvt TYPE=1 SRC=/opt/dmdbms/data/dameng/dm.ctl DEST=/opt/dmdbms/data/dameng/dmctl.txt
./dmctlcvt TYPE=2 SRC=/opt/dmdbms/data/dameng/dmctl.txt DEST=/opt/dmdbms/data/dameng/dm.ctl
2.2.9创建dmmal.ini

配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
[dmdba@db1 DM]$ more dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.152.128 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.137.102 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237 #实例本地的守护进程监听 TCP 连接的端口
MAL_DW_PORT = 5239 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME=DM02
MAL_HOST = 192.168.152.129
MAL_PORT = 5238
MAL_INST_HOST = 192.168.137.103
MAL_INST_PORT = 5236
MAL_INST_DW_PORT = 5237
MAL_DW_PORT = 5239
三、 配置备库
3.1.1拷贝备份文件

[dmdba@db1 dm]$ scp -r /home/dmdba/dmbk/dm_full_01 dmdba@192.168.137.103:/home/dmdba/dmbk/dm_full_01
3.1.2备库节点初始化实例
本例指定数据库存放路径、DB_NAME、INSTANCE_NAME、页大小为32k、端口

-----主库初始化
[dmdba@db2 ~]$ dminit PATH=/home/dmdba/data DB_NAME=DM INSTANCE_NAME=DM02 PORT_NUM=5236 SYSDBA_PWD=dameng123 SYSAUDITOR_PWD=dameng123 page_size=32 CASE_SENSITIVE=N
3.1.3启动服务注册服务并启动实例(在root用户下)

[root@db2 dm]# /home/dmdba/dm8/script/root/dm_service_installer.sh -t dmserver -p dm -dm_ini /home/dmdba/data/DM/dm.ini -m mount
3.1.4恢复备库

[dmdba@db2 bin]$ /home/dmdba/dm8/bin/dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/data/DM/dm.ini' FROM BACKUPSET '/home/dmdba/dmbk/dm_full_01'"
/home/dmdba/dm8/bin/dmrman uCTLSTMT=" RECOVER DATABASE '/home/dmdba/data/DM/dm.ini' FROM BACKUPSET '/home/dmdba/dmbk/dm_full_01'"

/home/dmdba/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/data/dm/dm.ini' UPDATE DB_MAGIC"
dmrman V8.1.0.147-Build(2019.03.27-104581)ENT
RESTORE DATABASE '/home/dmdba/data/dm/dm.ini' FROM BACKUPSET '/home/dmdba/dmbk/dm_full_01'
file dm.key not found, use default license!
RESTORE DATABASE CHECK......
total 0 packages processed...
RESTORE DATABASE,dbf collect......
RESTORE DATABASE,dbf refresh ......
RESTORE BACKUPSET [/home/dmdba/dmbk/dm_full_01] START......
total 4 packages processed...
total 6 packages processed...
RESTORE DATABASE,UPDATE ctl file......
RESTORE DATABASE,REBUILD key file......
RESTORE DATABASE,CHECK db info......
RESTORE DATABASE,UPDATE db info......
total 6 packages processed...
total 6 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 965.641(ms)
/home/dmdba/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/data/DM/dm.ini' UPDATE DB_MAGIC"
3.2参数文件
3.2.1修改dm.ini参数

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL系统
ARCH_INI = 1 #打开归档配置
3.2.2 创建 dmmal.ini
和主库一样,多集群也一样
复制主库的dmmal.ini
3.2.3配置dmarch.ini(归档)

[dmdba@db2 DM]$ more dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments

ARCH_WAIT_APPLY = 0

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM01#主库instace_name
3.2.4配置 dmwatcher.ini(数据守护)
复制主库dmwatcher.ini

四、启动集群服务
4.1启动主库
设置 oguid、设置数据库为 primary。

[dmdba@db1 dm]$ dmserver /home/dmdba/data/DM/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
设置 OGUID并修改主库模式
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 3.687(毫秒). 执行号:2.
SQL> sp_set_oguid(43551);
DMSQL 过程已成功完成
已用时间: 3.172(毫秒). 执行号:3.
SQL> ALTER DATABASE PRIMARY;
操作已执行
已用时间: 2.407(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 2.519(毫秒). 执行号:4.
4.2启动备库
设置 oguid、设置数据库为 standby。

[dmdba@db2 dm]$ dmserver /home/dmdba/data/DM/dm.ini mount
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(43551);
SQL>ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
4.3启动守护进程 主备都需要启动

dmwatcher /home/dmdba/data/DM/dmwatcher.ini
至此集群搭建完成,下一篇介绍怎么注册守护进程及监视器服务及验证方法.

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服