一、操作前准备:(前一,二,三章和主备一致,第四章是读写分离的关键)
- 操作前规划
IP规划:三台kylinV10虚拟机,安装DM8
主库ip 192.168.17.10
备库ip 192.168.17.11
监视器ip 192.168.17.12
端口规划(为了方便这里设置主备端口相同):实例端口,mal协议端口,守护进程通信端口, 实例守护端口。
Mum_port:5234 (防火墙要放开)
Mal_port:5235 (防火墙要放开)
Mal_dw_port:5236 (防火墙要放开)
Mal_inst_dw_port:5237
- 保持主库和备库数据一致
(1)先把主库停掉,然后使用dmrman对主库脱机备份
(2)备库通过dmrman进行还原:三部曲是还原,恢复,更新DB_MAGIC
RESTORE DATABASE TO ‘/home/dmdba/dmdata/DMOA’ FROM BACKUPSET ‘/home/dmdba/dmdata/bak/DMOA_FULL’;
RECOVER DATABASE ‘/home/dmdba/dmdata/DMOA/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdata/bak/DMOA_FULL’;
RECOVER DATABASE ‘/home/dmdba/dmdata/DMOA/dm.ini’ UPDATE DB_MAGIC;
(3)验证主备库的永久魔数,两者一致符合要求。
二、完成守护集群的搭建:
1.修改dm.ini,主备库里面的instance_name不能一致。我这让主库为DMOA,备库为DMOA_STANDBY。
2.创建dmmal.ini,写入配置文件,配置 MAL 系统。
3.创建dmarch.ini,写入配置文件,配置数据归档类型。
4.创建dmwatcher.ini,写入配置文件,配置守护进程。
5.上述四个文件配置好之后,主库以mount方式启动,新开一个终端进入disql开启归档,设置守护组id,设置主库备库的模式,最后启动守护进程dmwatcher.ini。
6.按照同样的(1-5操作步骤)设置备库。
7.在第三台服务器192.168.17.12上配置监视器(刚开始配置发现在监视器上无法显示主备库信息,后来经过排查发现主备库的守护进程端口5236被防火墙拦截导致无法通信),主要就是新建dmmonitor.ini文件,可以设置监视器模式和日志保存路径,最重要的不要忘了把主备库的相关信息写进去,最后启动监视器。
三、作业实操(主备守护集群)
作业要求1:完成主备集群的部署,并测试建表和插入数据备机是否能及时同步,并可查询到数据。
主备库的集群守护集群搭建完成之后,如果没有把dmwatcher注册为服务,需要新开终端进入disql交互命令行在主库操作建表插入即可,备库可以同时看到相关信息。
作业要求2:制造主机故障,测试备机可接管并持续提供服务。
手动把主库的守护进程和服务停掉之后,监视器自动用备库接管。
经过测试,备库可以正常插入数据
作业要求3:恢复故障主机,将故障主机加入集群。
原主库17.10开启数据库实例服务,再开启守护进程之后,监视器自动将其加入到集群,但是位置变成了standby
原备库17.11插入的新数据“101”经过自动同步之后可以被原主库也就是现在的备库17.10查询到。
作业要求4:手动切换主备集群,恢复原主备集群的位置。
进入监视器交互界面之后使用switchover GRP1.DMOA命令进行切换,会要求登录数据库,输入login再输入数据库用户名和密码,然后确认登录再执行切换命令即可。
经过若干秒切换完成之后使用show查看发现原主库17.10又再次成为primary。
四、作业实操(读写分离集群)
1、前期准备:在上述主备守护集群的基础上,修改主备库归档文件,即dmarch.ini文件,把归档模式从实时归档(realtime)改为及时归档(timely)。

作业要求1:完成读写分离集群的部署,并测试建表和插入数据备机是否能及时同步,并可查询到数据。
主库建表并插入两条记录,在备库可以查询到,说明timely模式下的数据同步无异常。


作业要求2:配置读写事务分发比例。
通过配置win主机的dm_svc.conf文件控制读写事务分发比例。我这里为了方便直接写0,代表所有读操作都分配到备库。

使用win主机的客户端工具DM管理工具连接DMRW,代表加载配置文件然后连接到数据库。连接成功后执行查询命令SELECT INSTANCE_NAME FROM V$INSTANCE; 可以看到执行查询操作是由备库dmoa_standby提供的。

最后,测试当把rw_percent这个参数设置为100时,代表读操作100%由主库提供,再执行查询命令发现确实是主库DMOA提供的查询服务。因此判定设置有效。


作业要求3:了解其与主备集群差异。
主备守护集群:备库是“备用轮胎”,平时不用,爆胎时换上。读写分离集群:备库是“副驾驶”,平时帮忙看路,分担主库压力。简单来说:主备保可用,读写分离提性能。具体详细分析如下图:
