ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DM8_读写分离集群部署

2021-06-27 17:31:08  阅读:266  来源: 互联网

标签:dm 备库 读写 dm8 实例 集群 ini DM8 MAL


一、读写分离的作用和意义 一般情况下,应用系统中查询等只读操作的比例远大于 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查看两个实例的情况:

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、验证读写分离集群 主库创建测试表插入数据:

备库查询数据:

标签:dm,备库,读写,dm8,实例,集群,ini,DM8,MAL
来源: https://www.cnblogs.com/qiongjie/p/14941239.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有