读写分离集群其实是主备集群的升级版本,在双机热备的基础上把用户写和度的会话事务分别放在主库和备库上执行。写事务会被分发到主库上执行,读事务则分发到备库上执行。由接口负责读写事务的分发。读写分离集群是基于即时归档实现的高性能数据库集群,不但提供数据保护、容灾等数据守护基本功能,还具有读写操作自动分离、负载均衡等特性。读写分离集群最多可以配置8 个即时备库,提供数据同步、备库故障自动处理、故障恢复自动数据同步等功能,也支持自动故障切换和手动故障切换两种守护模式。
在一个高并发的事务型系统中,当写事务占的比例相对读事务相对较小时,可以借助DM8 的主备系统备机可读的特点,将读事务转移到备机执行,减少单节点的并发压力,通过增加备机节点资源,提高系统的并发能力,增强系统性能。理论上说,在允许的范围内,备机配置的越多,更能分担主机的压力,系统整体并发效率越高。读写分离系统适用于读写比例较大的应用系统,读写比例越大对系统性能提升越明显。对于一般简单应用业务来讲,若需要使用读写分离系统提升系统性能,读写比例最少要大于1:1。
根据读写分离的事务特性,在业务允许条件下最好将具有读又有写的事务拆分成纯度和纯写的事务。读操作尽量放在写操作之前,利用备机的可读特点来分摊系统压力。 写操作后尽量不要有读操作,避免压力集中在主机,影响性能。因为纯读操作的事务全部在备机执行。纯写操作的事务全部在主机执行。有读有写的事务放在主机上执行。
系统结构图
读写分离集群的具体配置,请参照操作帮助手册《DM8数据守护与读写分离集群V3.0》,第7.3章专门讲述配置读写分离集群的内容。
操作帮助的位置为数据库安装目录下的doc文件夹下面。
配置读写分离集群的步骤如下。
1、 安装程序
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
密码:11111111
chown dmdba:dinstall -R /opt/dmdbms
mount -o loop dm8_setup.iso /mnt
./DMInstall.sh -i
2、 初始化库
在两台上初始化库
./dminit path=/opt/dmdbms/data PAGE_SIZE=16
在主机上启动一次。并备份到备机
./dmserver ../data/DAMENG/dm.ini
exit
./dmap
./dmrman ctlstmt="backup database '/opt/dmdbms/data/DAMENG/dm.ini' to backup_file_01 backupset '/opt/dmdbms/backup_file_01'"
3、拷贝到备机进行还原
scp -r /opt/dmdbms/backup_file_01/ 192.168.25.12:/opt/dmdbms
在备机上根据还原三部曲进行进行还原操作。
./dmrman ctlstmt="restore database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmdbms/backup_file_01'"
./dmrman ctlstmt="recover database '/opt/dmdbms/data/DAMENG/dm.ini' from backupset '/opt/dmdbms/backup_file_01'"
./dmrman ctlstmt="recover database '/opt/dmdbms/data/DAMENG/dm.ini' update db_magic"
4、配置主机,具体内容详细信息请参照操作帮助手册
vim dm.ini
vim dmmal.ini
vim dmarch.ini
vim dmwatcher.ini
修改主节点模式状态,注意必须以mount方式启动
./dmserver /dm8/data/DAMENG/dm.ini mount
登录DISQL工具
./disql sysdba/[email protected]:5236
设置OGUID
SQL>sp_set_oguid(453332);
修改数据库模式
SQL>alter database primary;
配置完退出disql
ctrl+c 结束mount启动
5、配置备机,具体内容详细信息请参照操作帮助手册
vim dm.ini
vim dmmal.ini
vim dmarch.ini
vim dmwatcher.ini
修改备节点模式状态,注意必须以mount方式启动
./dmserver /dm8/data/DAMENG/dm.ini mount
登录disql
./disql sysdba/[email protected]:5236
设置OGUID
SQL>sp_set_oguid(453332);
修改数据库模式
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
6、启动集群
以mount方式启动数据库实例
./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
启动数据守护
./dmwatcher /opt/dmdbms/data/DAMENG/dmwatcher.ini
启动监视器
./dmmonitor /opt/dmdbms/data/dmmonitor.ini
7、查看数据库状态
因数据库无法自动拉起,所以检查数据库状态及LSN
select status$ from v$instance;
select CUR_LSN from V$RLOG;
8、dm_svn.conf的配置
Windows平台下位于%SystemRoot%\system32目录
Linux平台下位于/etc目录
编辑dm_svc.conf文件
内容如下:
TIME_ZONE=(+8:00)
LANGUAGE=(en)
DM_DW=(192.168.25.11:5236,192.168.25.12:5236)
LOGIN_MODE=(1)
[DM_DW]
LOGIN_MODE=(1)
SWITCH_TIME=2000
SWITCH_INTERVAL=10
DM_DW为访问服务名,可以自己配置,后面的IP地址根据主备节点的实际地址进行配置即可。
9、连接字符串的配置
应用连接串如何使用,以Jdbc为例:
数据守护:
jdbc:dm://DM_DW
读写分离:
jdbc:dm://DM_RWC?rwSeparate=1&rwPercent=25
配置注意集群的oguid值和组名必须相同。