在前两篇博客里面我们对达梦数据库的DM数据守护(Data Watch)的实时主备进行了技术原理学习并动手部署实践。本篇技术分享文章是基于Linux下达梦数据守护的读写分离集群配置过程,配置方案为常见的一个写主库和一个实时读备库。
首先来简单了解下达梦数据守护集群中读写分离技术集群的技术原理。
读写分离集群是基于即时归档或实时归档实现的高性能数据库集群,不但提供数据保护、容灾等数据守护基本功能,还具有读写操作自动分离、负载均衡等特性。读写分离集群最多可以配置8个即时备库或8个实时备库,提供数据同步、备库故障自动处理、故障恢复自动数据同步等功能,也支持自动故障切换和手动故障切换两种守护模式。
一般情况下,应用系统中查询等只读操作的比例远大于Insert/Delete/Update等DML操作,修改对象定义等DDL操作的比例则更低。但是,这些操作往往混杂在一起,在高并发、高压力情况下,会导致数据库性能下降,响应时间变长。借助读写分离集群,将只读操作自动分发到备库执行,可以充分利用备库的硬件资源,降低主库的并发访问压力,进而提升数据库的吞吐量。
读写分离集群不依赖额外的中间件,而是通过数据库接口与数据库之间的密切配合,实现读、写操作自动分离特性。DM的JDBC、DPI、DCI、ODBC、Provider等接口都可以用来部署读写分离集群。
根据是否满足读提交事务隔离级特性,读写分离集群可以配置为事务一致模式和高性能两种模式。简单的说,事务一致模式下,不论一个Select语句是在备库执行、还是在主库执行,其查询结果集都是一样的。高性能模式则不能保证查询是一致的,备库的数据与主库的数据同步存在一定的延迟,当Select语句发送到备库执行时,返回的有可能是主库上一个时间点的数据。
部署注意事项:
数据守护系统的读写分离集群中各实例使用的DM服务器版本应一致,同时还应注意各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,以及使用同一个用户启动DM服务器和守护进程dmwatcher,以免系统在运行时出现意想不到的错误。
一、部署环境介绍
机器rw1、rw2、gc1。rw1和rw2用来部署主备库,gc1用来部署确认监视器。
其中rw1和rw2配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机,gc1接入内部网络。
目录与存储规划
用途 |
目录路径 |
备注 |
数据库软件安装目录 |
/dm8 |
可用空间>50 GB |
实例安装目录 |
/dmdata |
单独挂载性能最好的磁盘建议 SSD |
归档日志存放目录 |
/dmarch |
单独挂载磁盘 |
备份文件存放目录 |
/dmbak |
单独挂载磁盘 |
都事先安装了DM,安装路径为’/dm8’,执行程序保存在’/dm8/dmdbms/bin’目录中,数据存放路径为’/dmdata’。数据库软件安装详见单机规范化部署。
表1 配置环境
机器名 |
IP地址 |
初始 状态 |
操作系统 |
备注 |
rw1 |
192.168.1.7 192.168.10.7 |
主库 DMP |
Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux |
192.168.1.7外部服务IP; |
rw2 |
192.168.1.8 192.168.10.8 |
备库 DMP |
Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux |
192.168.1.8外部服务IP; |
gc1 |
192.168.10.2 |
确认监视器 |
Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux |
表2 端口规划
实例名 |
PORT_NUM |
MAL_INST_DW_PORT |
MAL_HOST |
MAL_PORT |
MAL_DW_PORT |
SDMP |
32141 |
33141 |
192.168.10.7 |
61141 |
52141 |
SDMS |
32142 |
33142 |
192.168.10.8 |
61142 |
52142 |
二、数据初始化准备
主rw1机器上初始化库至目录/dmdata:
--初始化实例
[dmdba@~]$ /dm8/dmdbms/bin/dminit PATH=/dmdata/ DB_NAME=DMP INSTANCE_NAME=SDMP PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=256
[dmdba@rw1 ~]$ /dm8/dmdbms/bin/dminit PATH=/dmdata/ DB_NAME=DMP INSTANCE_NAME=SDMP PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=256
initdb V8
db version: 0x7000c
License will expire on 2023-03-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dmdata/DMP/DMP01.log
log file path: /dmdata/DMP/DMP02.log
write to dir [/dmdata/DMP].
create dm database success. 2022-05-16 09:38:04
--启动服务 (初始化的实例必须先启动一次,才能脱机备份)