暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

16.达梦DCP认证课程-DM数据守护和读写分离集群

原创 让世界为你转身 2024-11-06
453

1.DM数据库守护

1.1 常见术语

数据库守护DM watch,类似于oracle dg

数据库模式:

normal模式、primary模式、standby模式

数据库状态:

open状态、mount状态、suspend状态

邮件系统(MAL系统):

MAL系统是一个内部高速通信系统,基于TCP/IP协议实现。

OGUID:

数据库守护唯一标识码,用来标识、校验,相同OGUID值的实例。

1.2 数据守护配置

1.2.1 配置规划

MAL_INST_NAME MAL_INST_HOST MAL_INST_PORT MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
DM01 192.168.88.2 5236 5238 192.168.88.2 15236 15238
DM02 192.168.88.3 5236 5238 192.168.88.3 15236 15238

1.2.2 配置文件

mal.ini配置(主备配置相同):

MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = DM01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.88.2 #MAL系统监听TCP连接的IP地址 MAL_PORT = 15236 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.88.2 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM 一致 MAL_DW_PORT = 15238 #实例本地的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 5238 #实例监听守护进程 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = DM02 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 MAL_HOST = 192.168.88.3 #MAL系统监听TCP连接的IP地址 MAL_PORT = 15236 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.88.3 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM 一致 MAL_DW_PORT = 15238 #实例本地的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 5238 #实例监听守护进程 TCP 连接的端口

dmarch.ini(主备的归档配置不同):

[ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = DM02 #实时归档目标实例名(主机和备份配置不同,配置向备机同步) [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dm8/data/DAMENG/arch #本地归档文件存放路径 ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值 ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M

dmwatcher.ini:

[GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #自动切换模式 DW_ERROR_TIME = 10 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 10 #本地实例故障认定时间 INST_OGUID = 8888 #守护系统唯一OGUID 值(这里要和数据库的 OGUID 一致,OGUID 是写入控制文件的) INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

1.2.3 配置步骤

类似于oracle的冷备份搭建dg

1、主库配置dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini,dm.ini中需要开启归档归档和MAL:

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置

2、关闭主库,使用rman备份主库

rman> backup database 'dm.ini' backupset '/dm8/backup/fullbak'

3、拷贝备份到备库上进行还原,还原后更新数据库魔数

#拷贝备份 scp -r /dm8/backup/fullbak db02:/dm8/ #使用rman进行恢复 rman> restore database to '/dm8/data/DAMENG' from backupset '/dm8/backup/fullbak'; #有dm.ini的rman恢复方法 rman> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/fullbak'; #更新魔数,一定要更新,否则数据不同步 rman> recover database '/dm8/data/DAMENG/dm.ini' update db_magic; #查询数据库魔数 select db_magic from v$rlog;

4、拷贝主库的dmmal.ini、dmarch.ini、dmwatcher.ini参数到备库,并进行修改

#拷贝参数文件 scp dmmal.ini dmarch.ini dmwatcher.ini db02:/dm8/data/DAMENG #修改dmarch.ini参数 ARCH_DEST = DM01

5、主库启动到mount状态,修改oguid为8888,数据库模式为primary

#启动主库到mount状态 dmserver /dm8/data/DAMENG/dm.ini mount #修改主库的OGUID为8888 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(8888); SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); #修改数据库模式为primary alter database primary; #查看数据库模式 select instance_name,status$,mode$ from v$instance;

6、备库启动到mount状态,修改oguid为8888,数据库模式为standby

#启动备库到mount状态 dmserver /dm8/data/DAMENG/dm.ini mount #修改备库的OGUID为8888 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(8888); SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); #修改数据库模式为standby alter database standby; #查看数据库模式 select instance_name,status$,mode$ from v$instance;

7、启动主库、备库的数据守护(dmwatcher)

数据守护启动成功后,集群配置正常的话,主备库会自动打开

dmwatcher dmwatcher.ini

8、查询验证主备同步

在主机上创建表,并插入数据提交,在备机上查询数据是否可以正常查询,如果正常说明主备同步正常。查看主机的归档状态,VALID 也说明主备同步正常。

select * from v$arch_status;

9、配置监视器参数dmmonitor.ini

监视器中的 OGUID 要与数据库设置的一致。配置数据守护 dmwatcher的 IP 和端口

MON_DW_CONFIRM = 1 MON_LOG_PATH = /dm8/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 32 MON_LOG_SPACE_LIMIT = 0 [GRP1] MON_INST_OGUID = 8888 MON_DW_IP = 192.168.88.2:15238 MON_DW_IP = 192.168.88.3:15238

10、启动监视器

监视器上可以查看集群的状态,监视器可以是一台单独的服务器,可以不创建实例

dmmonitor /dm8/data/dmmonitor.ini

11、监视器常用命令

help #显示帮助信息 show global info #显示所有组的全局信息 show [group_name] #显示指定组的详细信息,如果未指定组,则显示所有组 choose swithover [group_name] #选择可以切换为primary库的备库列表 login [/@service_name] #登录监视器,登录使用的用户密码为数据库的 switchover

12、主备切换

show choose switchover #使用sysdba用户登录监视器 login #执行切换 switchover

13、主备库注册数据守护、实例为linux系统服务

#切换目录 [root@localhost dm8]# cd /dm8/script/root/ [root@localhost root]# ll 总用量 48 -rwxr-xr-x 1 dmdba dinstall 29104 3 20 14:30 dm_service_installer.sh -rwxr-xr-x 1 dmdba dinstall 10155 3 20 14:30 dm_service_uninstaller.sh -rwxr-xr-x 1 dmdba dinstall 579 3 20 14:30 root_installer.sh #帮助信息 [root@localhost root]# ./dm_service_installer.sh -h Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-dm_ini dm_ini_file] [-watcher_ini watcher_ini_file ] [-monitor_ini monitor_ini_file] [-cssm_ini cssm_ini_file] [-dfs_ini dfs_ini_file] [-dcr_ini dcr_ini_file] [-dss_ini dss_ini_file] [-drs_ini drs_ini_file] [-dras_ini dras_ini_file] [-dcs_ini dcs_ini_file] [-server server_info] [-dmap_ini dmap_ini_file] [-dpc_mode SP|MP|BP] [-m open|mount] [-y dependent_service] [-auto true|false] or dm_service_installer.sh [-s service_file_path] or dm_service_installer.sh -h -t 服务类型,包括dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmasmsvr3,dmdcs,dmdrs,dmdras,dmdss -p 服务名后缀,对于dmimon,dmap服务类型无效 -dm_ini dm.ini文件路径 -watcher_ini dmwatcher.ini文件路径. -monitor_ini dmmonitor.ini文件路径. -dcr_ini dmdcr.ini文件路径. -cssm_ini dmcssm.ini文件路径. -dss_ini dss.ini文件路径. -drs_ini drs.ini文件路径. -dras_ini dras.ini文件路径. -dcs_ini dcs.ini文件路径. -dfs_ini dfs.ini文件路径. -dmap_ini dmap.ini文件路径. -dpc_mode DPC节点类型. -server 服务器信息(IP:PORT) -auto 设置服务是否自动启动,值为true或false,默认true. -m 设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选 -y 设置依赖服务,此选项只针对systemd服务环境下的dmserver,dmasmsvr,dmasmsvr3服务生效 -s 服务脚本路径,设置则忽略除-y外的其他参数选项 -h 帮助 #注册数据库实例服务 ./dm_service_installer.sh -t dmserver -p DM01 -dm_ini /dm8/data/DAMENG/dm.ini #注册dmwatcher服务 ./dm_service_installer.sh -t dmwatcher -p DM01 -watcher_ini /dm8/data/DAMENG/dmwatcher.ini #注册monitor服务 ./dm_service_installer.sh -t dmmonitor -p DM01 -monitor_ini /dm8/data/DAMENG/dmmonitor.ini

14.可以配置一个非确认监视器,用于登录监视器查看主备状态

#单独创建一个dmmonitor.ini MON_DW_CONFIRM = 0 #设置为0,非确认监视器 MON_LOG_PATH = /dm8/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 32 MON_LOG_SPACE_LIMIT = 0 [GRP1] MON_INST_OGUID = 8888 MON_DW_IP = 192.168.88.2:15238 MON_DW_IP = 192.168.88.3:15238 #启动非确认监视器 dmmonitor /dm8/data/dmmonitor.ini

2 读写分离集群

2.1 配置读写分离集群

可以使用DEM 搭建或手工搭建

2.2 读写分离集群接口配置

dm网络连接配置:

[dmdba@localhost ~]$ cat /etc/dm_svc.conf TIME_ZONE=(480) LANGUAGE=(cn) DMTEST=(192.168.88.6:5238) DM=(192.168.88.5:5236) DMG=(192.168.88.2:5236,192.168.88.3:5236)

jdbc接口配置:

rwSeparate:取值 0 1,默认 0,表示不使用读写分离方式 rwPercent: 取值大于 0,默认值 0.75。值越大,表示主机分配的事务数比例越多。 <DRIVER>dm.jdbc.driver.DmDriver</DRIVER> <URL>jdbc:dm://DMG?rwSeparate=1&rwPercent=1</URL>
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论