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>




