在介绍DM主备集群之前先简单介绍下相关的概念:
一、DM主备集群概念(DMDataWatch)
1.1、DM主备集群概念:(Oracle:dataguard;MySQL:主备)
DM数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。
DM数据守护提供多种解决方案,可以配置成实时主备、读写分离集群DMRWC、MPP主备,能满足用户关于系统可用性、数据安全性、性能等方面的综合需求。
1.2、实时主备集群:
实时主备由一个主库以及一个或者多个配置了实时(Realtime)归档的备库组成,其主要目的是保障数据库可用性,提高数据安全性。
实时主备系统中,主库提供完整的数据库功能,备库提供只读服务。
主库修改数据产生的redo日志,通过实时归档机制,在写入联机redo日志文件之前发送到备库,实时备库通过重演redo日志与主库保持数据同步。当主库出现故障时,备库在将所有redo日志重演结束后,就可以切换为主库对外提供数据库服务。
主备可以使单机,也可以是DSC、MPP。
1.3、读写分离集群:
读写分离集群由一个主库以及一个或多个配置了即时(Timely)归档的备库组成。主要目标是保障数据库可用性的基础上,实现了读、写操作的自动分离,进一步提升数据库的业务支撑能力。
读写分离集群通过即时归档机制保证主、备库数据一致性,并配合达梦数据库系统的各种接口(JDBC、DPI等),将只读操作自动分流到备库,有效降低主库的负载,提升系统吞吐量。
1.4、MPP主备:(手工维护各节点主备)
MPP主备是在MPP集群的基础上,为每一个MPP节点配置一套实时主备系统,这些实时主备系统一起构成了MPP主备系统。
一个MPP节点对应的主备系统成为一个数据守护组(Group),MPP主备系统中各个数据守护组保持相对独立,当某个MPP主节点出现故障时,在其对应的数据守护组内挑选一个备库切换为主库后,就可以确保整个MPP集群的正常使用。
注意:节点1、备1组成一个数据守护组;节点2、备2是一个组;节点3、备3是一个组。
1.5、DM数据守护的实现原理:
将主库(生产库)产生的redo日志传输到备库,备库接收并重新应用redo日志,从而实现备库与主库的数据同步。
DM数据守护的核心思想是监控数据库状态,获取主、备数据同步情况,为redo日志传输与重演过程中出现的各种异常情况提供一些列的解决方案。
DM数据守护系统结构:
主库、备库
Redo日志、Redo日志传输、Redo日志重演
数据守护(dmwatcher)、监听器(dmmonitor)
1.6、DM数据守护系统结构:
注意:Oracle有个很少用的第三个监控observer,因为核心库正常不允许被切换,需要的话是手工切换。
守护进程(dmwatcher):
是达梦数据守护系统不可或缺的核心部件,是数据库实例与监控器之间信息交流的桥梁;
数据库实例向本地守护进程发送消息,接收本地守护进程的消息和命令。
监视器(dmmonitor):
接收守护进程的消息,并向守护进程发送命令;
数据库实例与监视器之间没有直接的消息交互(中间商式交互);
守护进程解析并执行监视器发起的各种命令Switchover/Takeover/Open database等),并在必要时通知数据库实例执行相应的操作。
1.7、归档:
本地归档:
Redo日志写入日志文件后,又由归档线程再写入本地服务器中的归档日志。
实时归档(Realtime):
实时归档只有在数据库模式为Primary主库才生效,是实现mpp和实时主备的基础。在redo日志写入联机日志文件之前,再通过MAL系统将redo_buf发送到备库。
即时归档(Timely):
在redo日志写入联机日志文件之后,再通过MAL系统将redo_buf发送到备库,即时归档是读写分离实现的基础,一个主库最多配8个即时备库。
注意:说白了只有即时归档是在写入内存之后就发送过去了,并未发生IO,其余模式是写到磁盘之后再发送。
这里说的归档之前说过了,所以就简单介绍下,不做过多赘述。
远程归档:
Redo日志写入日志文件后,又由归档线程再写入远程服务器中的归档日志。
异步归档(Async):
Redo日志写入日志文件后,定时或者定期启动归档redo日志进行发送,设置定时归档必须确保至少有一个本地归档**(需求:有些业务系统需要第二天才能查到数据的情况)。**
视图:select * from v$arch_status;
1.8、OGUID:(Oracle:dbid)
数据守护唯一标识符:select OGUID from V$INSTANCE;
1.9、MAL系统:
MAL系统是基于TCP协议实现的一种内部通讯机制,具有可靠。灵活、高效的特性。
DM通过MAL系统实现redo日志传输,以及其他一些实例间的通讯。
二、主备集群安装前规划
2.1、端口规划:
实例名 | PORT_NUM | MAL_INST_HOST | MAL_INST_PORT | MAL_INST_DM_PORT | MAL_DM_PORT | MAL_HOST | MAL_PORT |
wjdb1 | 15236 | 192.168.114.131 | 15236 | 15237 | 15238 | 192.168.114.131 | 15239 |
wjdb2 | 25236 | 192.168.114.132 | 25236 | 25237 | 25238 | 192.168.114.132 | 25239 |
dmmontior | 192.168.114.134 |
端口号相关说明:
PORT_NUM:数据库实例监听端口
MAL_INST_HOST:数据库的对外服务IP地址
MAL_INST_PORT:实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_INST_DM_PORT:实例监听守护进程TCP连接的端口
MAL_DM_PORT:实例对应的守护进程监听TCP连接的端口
MAL_HOST:MAL系统监听TCP连接的IP地址
MAL_PORT:MAL系统监听TCP连接的端口
2.2、数据库初始化参数:
页大小:16K
簇大小:16页
字符集UTF-8
字符串比较大小写敏感:是
长度以字符为单位:否
数据库名:wjdb
实例名:wjdb1,wjdb2
端口:15236,25236,35236
日志文件大小:共两个(每个256MB)
是否启用归档:是
2.3、安装部署路径规划:
实例名 | wjdb1 | wjdb2 |
IP地址 | 192.168.114.131 | 192.168.114.132 |
安装路径 | /dm/dmdbms/dm8 | /dm/dmdbms/dm8 |
实例路径 | /dm/dmdata/wjdb | /dm/dmdata/wjdb |
归档路径 | /dm/dmarch/wjdb | /dm/dmarch/wjdb |
备份路径 | /dm/dmback | /dm/dmback |
日志路径 | /dm/dmdbms/dm8/log | /dm/dmdbms/dm8/log |
2.4、环境搭建:
2.4.1、基础环境搭建(主库+备库+monitor)(略)
2.4.2、数据库安装(主库+备库+monitor):
su - dmdba
cd /mnt/
./DMInstall.bin -i
[root@DM8 mnt]# /dm8/script/root/root_installer.sh
2.5、主库:
2.5.1、实例安装:
./dminit path=/dm/dmdata db_name=wjdb instance_name=wjdb1 port_num=15236 LOG_SIZE=256 SYSDBA_PWD=dameng123 EXTENT_SIZE=16 PAGE_SIZE=16 charset=1
初始化数据库:直到看到SYSTEM IS READY为止
2.5.2、执行disql 脚本,优化参数:
[dmdba@linux131 tool]$ ./disql sysdba/dameng123@192.168.114.131:15236
call SF_SET_SYSTEM_PARA_VALUE ('MAX_OS_MEMORY',95,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('MAX_SESSIONS',1000,1,2);
call SF_SET_SYSTEM_PARA_VALUE('MAX_SESSION_STATEMENT',5000,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('BUFFER',1024,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('MAX_BUFFER',1024,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('BUFFER_POOLS',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('RECYCLE',512,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('RECYCLE_POOLS',1,1,2);
call SF_SET_SYSTEM_PARA_VALUE('HJ_BUF_GLOBAL_SIZE',500,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('HJ_BUF_SIZE',300,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('DICT_BUF_SIZE',50,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('TEMP_SIZE',200,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('VM_POOL_SIZE',256,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('SESS_POOL_SIZE',256,1,2);
call SF_SET_SYSTEM_PARA_VALUE('CACHE_POOL_SIZE',200,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('WORKER_THREADS',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('TASK_THREADS',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('USE_PLN_POOL',1,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('OLAP_FLAG',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('OPTIMIZER_MODE',1,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('VIEW_PULLUP_FLAG',1,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('COMPATIBLE_MODE',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('ENABLE_MONITOR',0,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('SVR_LOG',0,1,2);
2.5.3、开启归档:
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm/dmarch/wjdb,TYPE = local,FILE_SIZE=256,SPACE_LIMIT = 0';
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
select arch_mode from v$database;
select * from v$dm_arch_ini;
2.5.4、备份:
su dmdba
cd /dm/dmdbms/dm8/bin
./dmrman
backup database '/dm/dmdata/wjdb/dm.ini' full to wjdb_full01 backupset '/dm/dmback/wjdb_full01'
scp -r /dm/dmback/wjdb_full01 192.168.114.132:/dm/dmback
注意:这里是新库,使用脱机备份比较完整。
2.6、备库:
2.6.1、实例安装:
su - dmdba
cd /dm/dmdbms/dm8/bin
./dminit path=/dm/dmdata db_name=wjdb instance_name=wjdb2 port_num=25236 LOG_SIZE=256 SYSDBA_PWD=dameng123 EXTENT_SIZE=16 PAGE_SIZE=16 charset=1
2.6.2数据库恢复:
./dmrman
restore database '/dm/dmdata/wjdb/dm.ini' from backupset '/dm/dmback/wjdb_full01'
recover database '/dm/dmdata/wjdb/dm.ini' from backupset '/dm/dmback/wjdb_full01'
recover database '/dm/dmdata/wjdb/dm.ini' update db_magic
注意:这里第二台数据库千万不能打开。
2.7、主库参数修改:
su - dmdba
cd /dm/dmdata/wjdb
2.7.1、dm.ini(有的按下面参数修改,没有直接加)
vi dm.ini
INSTANCE_NAME = wjdb1 #主库实例
PORT_NUM = 15236 #数据库实例监听端口
DW_PORT = 15237 #守护环境下,监听守护进程连接端口,为上面规划表中的 MAL_INST_DW_PORT 值
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
2.7.2、dmmal.ini(主备库一致)
vi dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = wjdb1 # 实 例 名 , 和 dm.ini 中 的INSTANCE_NAME 一致
MAL_HOST = 192.168.114.131 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 15239 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.114.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 15236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM 一致
MAL_INST_DW_PORT = 15237 #实例监听守护进程 TCP 连接的端口
MAL_DW_PORT = 15238 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = wjdb2 # 实 例 名 , 和 dm.ini 中 的INSTANCE_NAME 一致
MAL_HOST = 192.168.114.132 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 25239 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.114.132 #实例的对外服务 IP 地址
MAL_INST_PORT = 25236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM 一致
MAL_INST_DW_PORT = 25237 #实例监听守护进程 TCP 连接的端口
MAL_DW_PORT = 25238 #实例对应的守护进程监听 TCP 连接的端口
2.7.3、dmarch.ini
两节点都配置,ARCH_DEST 分写写对方的实例。
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = wjdb2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch/wjdb #本地归档文件存放路径
ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 # 单 位 Mb , 0 表 示 无 限 制 , 范 围1024~4294967294M
2.7.4、dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式,手工MANUAL
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID值
INST_INI = /dm/dmdata/wjdb/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
2.8、从库参数配置:
su - dmdba
cd /dm/dmdata/wjdb
2.8.1、dm.ini(有的按下面参数修改,没有直接加)
vi dm.ini
INSTANCE_NAME = wjdb2 #主库实例
PORT_NUM = 25236 #数据库实例监听端口
DW_PORT = 25237 #守护环境下,监听守护进程连接端口,为上面规划表中的 MAL_INST_DW_PORT 值
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
2.8.2、dmmal.ini(主备库一致)
vi dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = wjdb1 # 实 例 名 , 和 dm.ini 中 的INSTANCE_NAME 一致
MAL_HOST = 192.168.114.131 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 15239 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.114.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 15236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM 一致
MAL_INST_DW_PORT = 15237 #实例监听守护进程 TCP 连接的端口
MAL_DW_PORT = 15238 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = wjdb2 # 实 例 名 , 和 dm.ini 中 的INSTANCE_NAME 一致
MAL_HOST = 192.168.114.132 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 25239 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.114.132 #实例的对外服务 IP 地址
MAL_INST_PORT = 25236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM 一致
MAL_INST_DW_PORT = 25237 #实例监听守护进程 TCP 连接的端口
MAL_DW_PORT = 25238 #实例对应的守护进程监听 TCP 连接的端口
2.8.3、dmarch.ini
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = wjdb1 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch/wjdb #本地归档文件存放路径
ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 # 单 位 Mb , 0 表 示 无 限 制 , 范 围1024~4294967294M
2.8.4、dmwatcher.ini
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式,MANUAL 手工切换模式。
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID值
INST_INI = /dm/dmdata/wjdb/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
2.9、主库注册服务:
root用户:
cd /dm/dmdbms/dm8/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/wjdb/dm.ini -p wjdb
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/wjdb/dmwatcher.ini -p wjdb
手工启动数据库至mount状态:
su dmdba
cd /dm/dmdbms/dm8/bin
./dmserver /dm/dmdata/wjdb/dm.ini mount
修改参数:
su - dmdba
[dmdba@linux131 ~]$ cd /dm/dmdbms/dm8/bin
./disql SYSDBA/dameng123@192.168.114.131:15236
select status$ from v$database;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit;
主库mount状态退出:
手动起服务和守护进程:
[dmdba@linux131 bin]$ ./DmServicewjdb start
[dmdba@linux131 bin]$ ./DmWatcherServicewjdb start
截止到现在主库配置已完成。
2.10、备库注册服务:
cd /dm/dmdbms/dm8/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/wjdb/dm.ini -p wjdb
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/wjdb/dmwatcher.ini -p wjdb
启动至mount状态:
su dmdba
cd /dm/dmdbms/dm8/bin
./dmserver /dm/dmdata/wjdb/dm.ini mount
su dmdba
cd /dm/dmdbms/dm8/bin
./disql SYSDBA/dameng123@192.168.114.132:25236
select status$ from v$database;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit;
参数优化:
call SF_SET_SYSTEM_PARA_VALUE ('MAX_OS_MEMORY',95,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('MAX_SESSIONS',1000,1,2);
call SF_SET_SYSTEM_PARA_VALUE('MAX_SESSION_STATEMENT',5000,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('BUFFER',1024,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('MAX_BUFFER',1024,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('BUFFER_POOLS',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('RECYCLE',512,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('RECYCLE_POOLS',1,1,2);
call SF_SET_SYSTEM_PARA_VALUE('HJ_BUF_GLOBAL_SIZE',500,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('HJ_BUF_SIZE',300,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('DICT_BUF_SIZE',50,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('TEMP_SIZE',200,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('VM_POOL_SIZE',256,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('SESS_POOL_SIZE',256,1,2);
call SF_SET_SYSTEM_PARA_VALUE('CACHE_POOL_SIZE',200,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('WORKER_THREADS',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('TASK_THREADS',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('USE_PLN_POOL',1,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('OLAP_FLAG',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('OPTIMIZER_MODE',1,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('VIEW_PULLUP_FLAG',1,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('COMPATIBLE_MODE',2,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('ENABLE_MONITOR',0,1,2);
call SF_SET_SYSTEM_PARA_VALUE ('SVR_LOG',0,1,2);
主库mount状态退出:
手动起服务和守护进程:
[dmdba@linux131 bin]$ ./DmServicewjdb start
[dmdba@linux131 bin]$ ./DmWatcherServicewjdb start
2.11、monitor 服务器配置:
2.11.1、monitor参数配置:
su dmdba
mkdir /dm/dmdbms/dm8/data
vi /dm/dmdbms/dm8/data/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/dmdbms/dm8/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.114.131:15238
MON_DW_IP = 192.168.114.132:25238
#配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini
MAL_DW_PORTMON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/dmdbms/dm8/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.114.131:15238
MON_DW_IP = 192.168.114.132:25238
#配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST, PORT 对应 dmmal.ini 中的MAL_DW_PORT
2.11.2、注册服务:
su - root
cd /dm/dmdbms/dm8/script/root
./dm_service_installer.sh -t dmmonitor -monitor_ini /dm/dmdbms/dm8/data/dmmonitor.ini -p wjdb
后台启动或关闭:
su dmdba
cd /dm/dmdbms/dm8/bin
./DmMonitorServicewjdb start
./DmMonitorServicewjdb stop
前台启动:
/dm/dmdbms/dm8/bin/dmmonitor path=/dm/dmdbms/dm8/data/dmmonitor.ini
show 命令查看信息:
exit退出;
注意:当日常无操作的情况下放在后台起,如果想要操作的话,前台起.
2.12、主备集群检验:同oracle一样
验证建用户、建表空间、建索引、建表、添加数据;
disql SYSDBA/dameng123@192.168.114.131:15236
create tablespace wj20220609 datafile '/dm/dmdata/wjdb/wj2022060901.dbf' size 100 autoextend off;
create tablespace index_idx datafile '/dm/dmdata/wjdb/wj20220609_idx01.dbf' size 100 autoextend off;
create user "wj" identified by "wj123456789" default tablespace wj20220609 default index tablespace index_idx ;
grant dba to "wj" ;
select PATH from v$datafile;
conn wj/wj123456789@192.168.114.131:15236
create table test001 (id int,name varchar(50),create_date date);
insert into test001 values(1,'老哥','2021-04-01');
insert into test001 values(2,'数据库','2021-04-02');
insert into test001 values(3,'教程','2021-04-03');
insert into test001 values(4,'f.net.cn','2021-04-04');
insert into test001 values(5,'wx','2021-04-05');
insert into test001 values(6,'itpux-com','2021-04-06');
insert into test001 values(7,'wx-gzh','2021-04-07');
insert into test001 values(8,'itpux_com','2021-04-08');
insert into test001 values(9,'oracle','2021-04-09');
insert into test001 values(10,'mysql','2021-03-01');
insert into test001 values(11,'nosql','2021-03-02');
insert into test001 values(12,'数据库','2021-03-03');
insert into test001 values(13,'开源数据库','2021-03-04');
insert into test001 values(14,'高端','2021-03-05');
insert into test001 values(15,'mongodb','2021-03-06');
insert into test001 values(16,'redis','2021-03-07');
insert into test001 values(17,'greenplum','2021-03-08');
insert into test001 values(18,'postgresql','2021-03-09');
insert into test001 values(19,'es','2021-05-01');
insert into test001 values(20,'tidb','2021-05-02');
insert into test001 values(21,'db2','2021-05-03');
insert into test001 values(22,'sqlserver','2021-05-04');
insert into test001 values(23,'etl','2021-05-05');
insert into test001 values(24,'clickhouse','2021-05-06');
insert into test001 values(25,'hadoop','2021-06-01');
insert into test001 values(26,'hive','2021-06-02');
insert into test001 values(27,'hbase','2021-06-03');
insert into test001 values(28,'bigdata','2021-06-04');
insert into test001 values(29,'nbu','2021-06-05');
insert into test001 values(30,'linux','2021-06-06');
commit;
2.13、模拟故障:
2.13.1、主库131直接挂掉,reboot
重启之前的monitor状态:
reboot
monitor监视器变化:
再次登录主库131服务器,发现自动切换为备库:
再次登录原备库132服务器,发现自动切换为主库:
备库(131)模式下无法修改数据:
当前主库132建表,插数据:
查看备库131表信息:即时是实时的,再未提交状态下,备库依然无法查看到:
2.13.2、主库(原备库132)挂掉,reboot
观察monitor监视器信息变化:
此时131服务器自动回切(上阶段备库变主库):
此时132服务器自动回切(上阶段主库变备库):
再次登录监视器确认主备库状态:
2.13.3、无故障情况下主备手动切换:
choose switchover grp1
switchover grp1.WJDB2(这里需要先登录一下,然后再switchover)
2.13.4、故障情况下切换:
choose takeover grp1
takeover WJDB1
2.14、主备日常维护启停流程:
ps -ef|grep dmserver
ps -ef|grep dmwatcher
ps -ef|grep dmmonitor
查看主库:
注释:
open状态(status = 4)下: ROLE 1 代表主库;2代表备库 ;0 代表普通库
启动集群顺序:
主库实例服务-备库实例服务-主库守护服务-备库守护服务-监视器服务
停止集群顺序:
停监视器-主库守护进程服务-备库守护进程服务-主库实例服务-备库实例服务