目录
1.数据规划
2.集群搭建
3.监视器中状态含义
|
主库 |
备库 |
实例名 |
GRP_SP_1 |
GRP_SP_2 |
实例路径 |
/home/dmdba/dmdbms/data |
/home/dmdba/dmdbms/data |
端口号 |
5236 |
5236 |
1).实例创建
示例
./dminit path=/home/dmdba/dmdbms/data db_name=GRP_SP_1 instance_name=GRP_SP_1 PORT_NUM=5236
2).启停数据库
使用前台启动的方式,启停主备库一次启停数据库
示例:
./dmserver /home/dmdba/dmdbms/data/GRP_SP_1/dm.ini
3).数据库备份、还原、恢复-使用DMRMAN工具进行数据库备份与还原恢复
a. 主库进行数据库备份,将备份集发送到备库
./dmrman ctlstmt="backup database '/home/dmdba/dmdbms/data/GRP_SP_1/dm.ini' to bk_sp backupset'/home/dmdba/dmdbms/bk_sp'"
b.备库从主库收到备份集进行数据库还原恢复操作
备库数据库还原: ./dmrman ctlstmt=" restore database '/home/dmdba/dmdbms/data/GRP_SP_2/dm.ini' from backupset '/home/dmdba/dmdbms/bk_sp'"
备库数据库恢复: ./dmrman ctlstmt=" recover database '/home/dmdba/dmdbms/data/GRP_SP_2/dm.ini' from backupset '/home/dmdba/dmdbms/bk_sp'"
备库魔数更新: ./dmrman ctlstmt=" recover database '/home/dmdba/dmdbms/data/GRP_SP_2/dm.ini' update db_magic"
4).配置文件编辑
a.主库配置
i.修改dm.ini文件
修改参数如下:
参数 |
值 |
ALTER_MODE_STATUS |
0 |
ENABLE_OFFLINE_TS |
2 |
MAL_INI |
1 |
ARCH_INI |
1 |
ii.配置MAL系统
创建dmmal.ini文件,内容如下(主备库的MAL配置文件完全相同,不用修改)
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP_SP_1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.75.131(机器ip) #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP_SP_2
MAL_HOST = 192.168.75.133(机器ip)
MAL_PORT = 61142
MAL_INST_HOST = 192.168.1.132
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
iii.归档配置
配置本地归档和实时归档,创建dmarch.ini文件,内容如下:
[CHIVE_REALTIME]
ARCH_TYPE = REALTIME#实时归档类型
ARCH_DEST = GRP_SP_2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmdbms/arch_file #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M
iv.配置守护进程
创建dmwatcher.ini文件,内容如下:
[GRP_SP]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331#守护系统唯一 OGUID 值
INST_INI = /home/dmdba/dmdbms/data/GRP_SP_1/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
b.备库配置
i.修改dm.ini文件:
参数 |
值 |
ALTER_MODE_STATUS |
0 |
ENABLE_OFFLINE_TS |
2 |
MAL_INI |
1 |
ARCH_INI |
1 |
ii.配置MAL系统,创建dmmal.ini文件,内容如下:
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP_SP_1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST =192.168.75.131(机器ip) #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP_SP_2
MAL_HOST = 192.168.75.132(机器ip)
MAL_PORT = 61142
MAL_INST_HOST = 192.168.1.132
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
iii.归档配置
配置本地归档和实时归档,创建dmarch.ini文件,内容如下:
[CHIVE_REALTIME]
ARCH_TYPE = REALTIME#实时归档类型
ARCH_DEST = GRP_SP_1 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/dmdbms/arch_file #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M
iv.配置守护进程
创建dmwatcher.ini文件,内容如下:
[GRP_SP]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331#守护系统唯一 OGUID 值
INST_INI = /home/dmdba/dmdbms/data/GRP_SP_2/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
v.配置监视器
配置监视器,创建dmmonitor.ini文件,内容如下:
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdbms/mon_log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP_SP]
MON_INST_OGUID = 453332 #组 GRP1 的唯一 OGUID 值 #以下配置为监视器到组 GRP1 的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.75.131:52141
MON_DW_IP = 192.168.75.133:52142
5)启动主备库,并进行参数修改操作
启动主备库(mount方式),修改OGUID和数据库模式(主库-primary、备库-standby)
a.修改OGUID
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453332);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
b.修改数据库模式
主库:alter database primary;
备库:alter database standby;
注:启动实例的时候,为了防止实例重构回滚表空间,生成REDO日志,一定要以Mount方式启动。
6) 启动守护进程
主库 ./dmwatcher /home/dmdba/dmdbms/data/GRP_SP_1/dmwatcher.ini
备库 ./dmwatcher /home/dmdba/dmdbms/data/GRP_SP_2/dmwatcher.ini
7) 启动监视器-观察主备库状态
./dmmonitor /home/dmdba/dmdbms/data/GRP_SP_2/dmmonitor.ini
守护进程状态(WSTATUS)
守护进程启动状态,需要根据远程守护进程发送的状态信息,结合本地数据库的初始模式、状态和数据同步情况。确定本地数据库的启动模式和状态之后,进入open状态。
各数据库实例状态已经一致时,守护进程在START或者Open状态下通知实例执行相关操作,都进入UNIFY EP状态执行。
守护进程正常工作,监控数据库,并定时发送数据库状态信息,接受其他守护进程发送的信息,接受监视器发送的用户请求。
注:主备集群搭建配置成功之后,守护进程的状态切换为:
STARTUP-->UNIFY EP-->STARTUP-->Open
集群是否搭建成功判断
正常情况下,在库中所有ok节点启动到mount状态后,守护进程会根据本地和远程守护进程发送的实例状态信息,进行一系列条件判断。如果满足条件,守护进程会通知本地所有ok节点执行ALTER DATABASE OPEN FORCE语句,将实例启动到OPEN状态,守护进程也会切换为OPEN状态,这一过程不需要人工干预的。