读写分离集群搭建、故障切换

IP、端口规划
主库:
外部服务IP: 192.168.1.100
内部服务IP: 192.168.1.100
PORT_NUM: 5236
MAL_INST_DW_PORT: 33141
MAL_PORT: 61141
MAL_DW_PORT : 52141
备库:
外部服务IP: 192.168.1.101
内部服务IP: 192.168.1.101
PORT_NUM: 5236
MAL_INST_DW_PORT: 33142
MAL_PORT: 61142
MAL_DW_PORT: 52142

两台虚拟机分别装好相同版本数据库软件

以下操作在主库进行
初始化主库

在这里插入图片描述
前台正常启停一次数据库,初始化才算完成
在这里插入图片描述
初始化数据库后,关闭数据库服务,然后备份主库数据

在这里插入图片描述
启动dmAP服务才能使用备份工具
在这里插入图片描述
[dmdba@t1 bin]$ ./dmrman ctlstmt=“backup database ‘/dmdata/DM/dm.ini’ full to backup_file_02 backupset ‘/dmdata/DM/backup_file_02’”

拷贝备份数据到备库
[dmdba@t1 bin]$ scp -r /dmdata/DM/backup_file_02/ 192.168.1.101:/dmdata

\The authenticity of host ‘192.168.1.101 (192.168.1.101)’ can’t be established.
ECDSA key fingerprint is SHA256:3ZT3bmzKZ3IkRsZjEGsSs1b4n0lt5i/svrfojJjVlBM.
ECDSA key fingerprint is MD5:40:0d:f0:78:be:36:ee:6e:19:a8:7e:1f:40:f5:cc:a8.

Are you sure you want to continue connecting (yes/no)? yes
dmdba@192.168.1.101’s password:
backup_file_02.bak 100% 6246KB 59.3MB/s 00:00
backup_file_02.meta 100% 73KB 12.4MB/s 00:00

初始化备库
在这里插入图片描述
启停一次数据库
在这里插入图片描述
启动dmAP服务
在这里插入图片描述
使用DMRMAN工具恢复主库备份数据到备库

重建数据库
[dmdba@t1 bin]$ ./dmrman ctlstmt=“restore database ‘/dmdata/DM/dm.ini’ from backupset ‘/dmdata/backup_file_02’”
在这里插入图片描述
恢复数据库
[dmdba@t1 bin]$ ./dmrman ctlstmt=“recover database ‘/dmdata/DM/dm.ini’ from backupset ‘/dmdata/backup_file_02’”
在这里插入图片描述
[dmdba@t1 bin]$ ./dmrman ctlstmt=“recover database ‘/dmdata/DM/dm.ini’ update db_magic”
在这里插入图片描述
配置参数文件

配置主库的实例名为 DM01,dm.ini 参数修改如下

INSTANCE_NAME = DM01
PORT_NUM = 32141 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

配置 dmmal.ini
[dmdba@localhost DAMENG]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5

MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]

MAL_INST_NAME = DM01

MAL_HOST = 192.168.1.100

MAL_PORT = 61141

MAL_INST_HOST = 192.168.1.100

MAL_INST_PORT = 5236

MAL_DW_PORT = 52141

MAL_INST_DW_PORT = 33141

[MAL_INST2]

MAL_INST_NAME = DM02
MAL_HOST = 192.168.1.101

MAL_PORT = 61142

MAL_INST_HOST = 192.168.1.101

MAL_INST_PORT = 5236

MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

修改 dmarch.ini,配置本地归档和即时归档。
[dmdba@localhost DAMENG]$ cat dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = DM02

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/DM/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。
[dmdba@localhost DAMENG]$ cat dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dmdata/DM/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

启动主库到MOUNT状态
[dmdba@localhost bin]$ ./dmserver /dmdata/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
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT startup…
Database mode = 0, oguid = 0
License will expire on 2021-09-04
file lsn: 37025
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

使用disql工具登录数据库,设置 OGUID
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:5236

在这里插入图片描述
同样在备库上配置dm.ini dmmal.ini dmarch.ini dmwatcher.ini参数

参数配置完成后启动数据库到mount状态

dmdba@localhost bin]$ ./dmserver /dmdata/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
DM Database Server x64 V8 1-1-126-20.09.04-126608-ENT startup…

使用disql工具登录数据库
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@LOCALHOST:5237

在这里插入图片描述
启动各个主备库上的守护进程: [dmdba@localhost bin]$ ./dmwatcher /dmdata/DM/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
在这里插入图片描述
修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。 生产环境中monitor需要配置在单独一台服务器上,测试环境就在主备上随便一台配置,这里我配置在主库
[dmdba@localhost DAMENG]$ cat dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dmdata/DM/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.1.100:52141
MON_DW_IP = 192.168.1.101:52142

启动monitor进程
[dmdba@localhost bin]$ ./dmmonitor /dmdata/DM/dmmonitor.ini
在这里插入图片描述
测试建表和插入数据备机是否能及时同步,并可查询到数据。
在这里插入图片描述
在这里插入图片描述
制造主机故障,测试备机可接管并持续提供服务,恢复故障主机,将故障主机加入集群模拟主机故障重启
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
手动切换主备集群,恢复原主备集群的位置。
在监视器使用switchover手动切换主备
在这里插入图片描述
在这里插入图片描述
更多资讯请上达梦技术社区了解: https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值