DM8_读写分离集群部署

一、读写分离的作用和意义 一般情况下,应用系统中查询等只读操作的比例远大于 Insert/Delete/Update 等 DML 操作,修改对象定义等 DDL 操作的比例则更低。但是,这些操作往往混杂在一起,在高并发、高压力情况下,会导致数据库性能下降,响应时间变长。借助读写分离集群,将只读操作自动分发到备库执行,可以充分利用备库的硬件资源,降低主库的并发访问压力,进而提升数据库的吞吐量。 二、读写分离的思路 实现读写分离集群的基本思路是:利用备库提供只读服务、无法修改数据的特性,优先将所有操作发送到备库执行,一旦备库执行报错,则发送到主库重新执行。通过备库“试错”这么一个步骤,自然地将只读操作分流到备库执行。 三、读写分离部署 1、部署环境 系统:centos7 CPU架构:x86_64 虚拟机软件:virtualbox 虚拟机:192.168.43.31(主库) 192.168.43.44(备库) 192.168.43.86(监视器) 2、安装数据库 单库安装,不明白的可以看我写过的一个安装过程 https://www.cnblogs.com/qiongjie/p/14855429.html 3、初始化实例 数据库的安装目录:/dm8 实例目录:/dm8/dmrw 初始化实例:(主备库各执行一次) ./dminit path=/dm8 db_name=dmrw page_size=32 使用dminit初始化的实例,需要先前台起一次数据库服务,服务正常退出即可 ./dmserver /dm8/dmrw/dm.ini 4、主库进行脱机备份,备库还原与恢复 主库备份: ./dmrman ctlstmt="backup database '/dm8/dmrw/dm.ini' backupset '/dm8/bakfull' " 主库备份发送到备库 scp -r /dm8/bakfull/ 192.168.43.44:/dm8 备库进行主库备份的还原和恢复以及db_magic更新 ./dmrman ctlstmt="restore database '/dm8/dmrw/dm.ini' from backupset '/dm8/bakfull/'" ./dmrman ctlstmt="recover database '/dm8/dmrw/dm.ini' from backupset '/dm8/bakfull/'" ./dmrman ctlstmt="recover database '/dm8/dmrw/dm.ini' update db_magic" 5、配置主库 1)修改实例的dm.ini文件参数 INSTANCE_NAME = dmrw1 MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 2)创建并配置归档文件dmarch.ini(实例所在目录) [ARCHIVE_TIMELYE] ARCH_TYPE = TIMELY #即时归档类型 ARCH_DEST = dmrw2 #即时归档目标实例名(主库侧填写备库实例名) [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB 3)配置MAL系统配置文件dmmal.ini MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = dmrw1 #与 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.43.31 #MAL 系统监听 TCP 内部网络 IP MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.43.31 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 端口 MAL_INST_DW_PORT = 33141 [MAL_INST2] MAL_INST_NAME = dmrw2 #与 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.43.44 # MAL 系统监听 TCP 内部网络 IP MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.43.44 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 端口 MAL_INST_DW_PORT = 33141 4)配置守护进程文件dmwatcher.ini [GRP_RW] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #自动切换模式 DW_ERROR_TIME = 10 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 #本地实例故障认定时间 INST_OGUID = 453331 #守护系统唯一 OGUID 值 INST_INI = /dm8/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动   #要求dmmal.ini和dmwatcher.ini文件主备库一致,所以直接发送到备库即可 scp dmmal.ini dmwatcher.ini 192.168.43.44:/dm8/dmrw 5)以mount方式启动数据库 ./dmserver /dm8/dm.ini mount 新终端使用disql工具连接数据库 ./disql SYSDBA/SYSDBA 修改主库的oguid:sp_set_oguid(453331); 修改主库模式为primary:alter database primary; 6)启动守护进程 ./dmwatcher /dm8/dmrw/dmwatcher.ini 数据库会自动从mount转换成open状态;   6、配置备库 1)修改实例的dm.ini文件参数 INSTANCE_NAME = dmrw2 MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 2)创建并配置归档文件dmarch.ini(实例所在目录) [ARCHIVE_TIMELY] ARCH_TYPE = TIMELY #即时归档类型 ARCH_DEST = dmrw1 #即时归档目标实例名(备库侧填写主库实例名) [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /home/dmdba/dmdbms/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB 3)查看主库发过来的文件:dmmal.ini和dmwatcher.ini 4)以mount方式启动数据库 ./dmserver /dm8/dm.ini mount 新终端使用disql工具连接数据库 ./disql SYSDBA/SYSDBA 修改备库的oguid:sp_set_oguid(453331); 修改备库模式为standby:alter database standby; 5)启动守护进程 ./dmwatcher /dm8/dmrw/dmwatcher.ini 数据库会自动从mount转换成open状态; 7、监视器配置 第三台虚拟机可以不用初始化实例,安装数据库即可; 在安装目录下,新建监视器配置文件:dmmonitor.ini MON_DW_CONFIRM = 1 #确认监视器模式 MON_LOG_PATH = /dm8/log #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间 [GRP_RW] MON_INST_OGUID = 453331 #组 GRP_RW 的唯一 OGUID 值 #以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置 #IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT MON_DW_IP = 192.168.43.31:52141 MON_DW_IP = 192.168.43.44:52141 启动监视器: ./dmmonitor /dm8/dmmonitor.ini 用show查看两个实例的情况:

DM8_读写分离集群部署

8、注册服务 验证配置没有问题后,把前台起的服务注册一下: 使用root用户,到安装目录的script/root下 守护进程: ./dm_service_installer.sh -t dmwatcher -p dmrw -watcher_ini/dm/dmrw/dmwatcher.ini 数据库服务进程: ./dm_service_installer.sh -t dmserver -p dmrw -dm_ini /dm8/dmrw/dm.ini 监视器进程:在192.168.43.86上注册 ./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /dm8/dmmonitor.ini 9、验证读写分离集群 主库创建测试表插入数据:

DM8_读写分离集群部署

备库查询数据:

DM8_读写分离集群部署

上一篇:基于金融大数据的特征提取与趋势预测系统(一)2021-06-30


下一篇:第五届全国工业互联网数据创新应用大赛 机组数据驱动的风电场短期风况预测 【7】【数据管理】【验证集本地化】