达梦数据守护搭建

环境说明

机器名IP 地址初始状态
allmart02192.168.192.181 192.168.192.129主库 GRP1_RT_01
allmart03192.168.192.182 192.168.192.130备库 GRP1_RT_02
  • 端口规划

实例名PORT_NUMMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORT
主库 GRP1_RT_013214133141192.168.192.1816114152141
备库 GRP1_RT_023214233142192.168.192.1826114252142

脱机备份、脱机还原方式

正常关闭数据库

./DmServiceDMTEST stop # /home/dameng/dmdbms/bin/DmService<实例名> stop

进行脱机备份

./dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dmdata/data/BACKUP_FILE_01'"

拷贝备份文件到备库所在机器

scp -r BACKUP_FILE_01/ dameng@192.168.192.182:/dmdata/data/BACKUP_FILE_01

执行脱机数据库还原与恢复

# 还原 ./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/data/BACKUP_FILE_01'"

# 恢复 ./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/data/BACKUP_FILE_01'"

# 更新 DB_MAGIC ./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

配置主库

配置 dm.ini

在 allmart02 机器上配置主库的实例名为 GRP1_RT_01,dm.ini 参数修改如下:

##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16 INSTANCE_NAME = GRP1_RT_01

PORT_NUM = 32141 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间

MAL_INI = 1 ##打开MAL系统

ARCH_INI = 1 ##打开归档配置

RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息

  • 查看配置结果:

grep -E "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" dm.ini

配置 dmmal.ini

配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间

[MAL_INST1]

MAL_INST_NAME = GRP1_RT_01 ##实例名,和dm.ini中的INSTANCE_NAME一致

MAL_HOST = 192.168.192.129 ##MAL系统监听TCP连接的IP地址

MAL_PORT = 61141 ##MAL系统监听TCP连接的端口

MAL_INST_HOST = 192.168.192.181 ##实例的对外服务IP地址

MAL_INST_PORT = 32141 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致

MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口

MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口

[MAL_INST2]

MAL_INST_NAME = GRP1_RT_02

MAL_HOST = 192.168.192.130

MAL_PORT = 61142

MAL_INST_HOST = 192.168.192.182

MAL_INST_PORT = 32142

MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

  • 查看配置结果

grep -E "MAL_CHECK_INTERVAL|MAL_CONN_FAIL_INTERVAL|MAL_INST_NAME|MAL_HOST|MAL_PORT|MAL_INST_HOST|MAL_INST_PORT|MAL_DW_PORT|MAL_INST_DW_PORT" dmmal.ini

配置 dmarch.ini

修改 dmarch.ini,配置本地归档和实时归档。

除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。

当前实例 GRP1_RT_01 是主库,需要向 GRP1_RT_02(实时备库)同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_02。

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME ##实时归档类型

ARCH_DEST = GRP1_RT_02 ##实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL ##本地归档类型

ARCH_DEST = /dmdata/arch/arch_dsc0 ##本地归档文件存放路径

ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M

  • 检查dmarch.ini

grep -E "ARCH_TYPE|ARCH_DEST|ARCH_TYPE|ARCH_DEST|ARCH_FILE_SIZE|ARCH_SPACE_LIMIT" dmarch.ini

配置 dmwatcher.ini

修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]

DW_TYPE = GLOBAL ##全局守护类型

DW_MODE = AUTO ##自动切换模式

DW_ERROR_TIME = 10 ##远程守护进程故障认定时间

INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10 ##本地实例故障认定时间

INST_OGUID = 453331 ##守护系统唯一OGUID值

INST_INI = /dmdata/data/DAMENG/dm.ini ##dm.ini配置文件路径

INST_AUTO_RESTART = 1 ##打开实例的自动启动功能

INST_STARTUP_CMD = /home/dameng/dmdbms/bin/dmserver ##命令行方式启动 RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭

  • 检查dmwatcher.ini配置

grep -E "DW_TYPE|DW_MODE|DW_ERROR_TIME|INST_RECOVER_TIME|INST_ERROR_TIME|INST_OGUID|INST_INI|INST_AUTO_RESTART|INST_STARTUP_CMD|RLOG_SEND_THRESHOLD|RLOG_APPLY_THRESHOLD" dmwatcher.ini

以MOUNT方式启动主库

一定要以 Mount 方式启动主库

/home/dameng/dmdbms/bin/dmserver /dmdata/data/DAMENG/dm.ini mount

开启另一个会话

/home/dameng/dmdbms/bin/disql SYSDBA/SYSDBA@localhost:32141

设置 OGUID

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331);

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

修改数据库模式

启动命令行工具 DIsql,登录主库修改数据库为 Primary 模式

SQL>alter database primary;

配置备库

检查参考配置主库步骤

配置 dm.ini

备机上配置备库的实例名为 GRP1_RT_02,dm.ini 参数修改如下:

##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16 INSTANCE_NAME = GRP1_RT_02

PORT_NUM = 32142 ##数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间

ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间

MAL_INI = 1 ##打开MAL系统

ARCH_INI = 1 ##打开归档配置

RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志重演信息

配置 dmmal.ini(与主库完全一致)

配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间

[MAL_INST1]

MAL_INST_NAME = GRP1_RT_01 ##实例名,和dm.ini中的INSTANCE_NAME一致

MAL_HOST = 192.168.192.129 ##MAL系统监听TCP连接的IP地址

MAL_PORT = 61141 ##MAL系统监听TCP连接的端口

MAL_INST_HOST = 192.168.192.181 ##实例的对外服务IP地址

MAL_INST_PORT = 32141 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致

MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口

MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口

[MAL_INST2]

MAL_INST_NAME = GRP1_RT_02

MAL_HOST = 192.168.192.130

MAL_PORT = 61142

MAL_INST_HOST = 192.168.192.182

MAL_INST_PORT = 32142

MAL_DW_PORT = 52142

MAL_INST_DW_PORT = 33142

配置 dmarch.ini

修改 dmarch.ini,配置本地归档和实时归档。

除了本地归档外,其他归档配置项中的 ARCH_DEST(归档实例名) 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。

当前实例 GRP1_RT_02 是备库,守护系统配置完成后,可能在各种故障处理中,GRP1_RT_02 切换为新的主库,正常情况下,GRP1_RT_01 会切换为新的备库,需要向 GRP1_RT_01 同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_01。

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME ##实时归档类型

ARCH_DEST = GRP1_RT_01 ##实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmdata/arch/arch_dsc0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

ARCH_FLUSH_BUF_SIZE = 16

ARCH_HANG_FLAG = 1

配置 dmwatcher.ini

修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]

DW_TYPE = GLOBAL ##全局守护类型

DW_MODE = AUTO ##自动切换模式

DW_ERROR_TIME = 10 ##远程守护进程故障认定时间

INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10 ##本地实例故障认定时间

INST_OGUID = 453331 ##守护系统唯一OGUID值

INST_INI = /dmdata/data/DAMENG/dm.ini ##dm.ini配置文件路径

INST_AUTO_RESTART = 1 ##打开实例的自动启动功能

INST_STARTUP_CMD = /home/dameng/dmdbms/bin/dmserver ##命令行方式启动 RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭

以MOUNT方式启动备库

一定要以 Mount 方式启动主库

/home/dameng/dmdbms/bin/dmserver /dmdata/data/DAMENG/dm.ini mount

设置 OGUID

启动命令行工具 DIsql,登录备库设置 OGUID 值为 453331

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL>sp_set_oguid(453331);

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

修改数据库模式

启动命令行工具 DIsql,登录备库修改数据库为 Standby 模式。

如果当前数据库不是 Normal 模式,需要先修改 dm.ini 中 ALTER_MODE_STATUS 值为 1,允许修改数据库模式,修改 Standby 模式成功后再改回为 0。如果是 Normal 模式,请忽略下面的第 1 步和第 3 步。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); //第1步

SQL>alter database standby; //第2步

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); //第3步

配置监视器

由于主库和实时备库的守护进程配置为自动切换模式,因此这里必须配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

配置确认监视器时可以选择配置单实例监视器或配置多实例监视器,下面将分别介绍配置单实例监视器以及多实例监视器时 dmmonitor.ini 配置文件中的配置信息。

配置单实例监视器

修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。

MON_DW_CONFIRM = 1 ##确认监视器模式

MON_LOG_PATH = /dmdata/data/log

##监视器日志文件存放路径

MON_LOG_INTERVAL = 60 ##每隔60s定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32 ##每个日志文件最大32M

MON_LOG_SPACE_LIMIT = 0 ##不限定日志文件总占用空间

[GRP1]

MON_INST_OGUID = 453331 ##组GRP1的唯一OGUID值 ##以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置 ##IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT

MON_DW_IP = 192.168.192.129:52141

MON_DW_IP = 192.168.192.130:52142

启动守护进程

启动各个主备库上的守护进程:

./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini

  • 主机启动守护进程

  • 备机启动守护进程

/home/dameng/dmdbms/bin/dmwatcher /dmdata/data/DAMENG/dmwatcher.ini

  • 启动监视器

多实例确认监视器系统中,需逐个单独启动各监视器。

/home/dameng/dmdbms/bin/dmmonitor /dmdata/data/DAMENG/dmmonitor.ini

监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入 help 命令,查看各种命令使用说明,结合实际情况选择使用。

至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。

验证数据是否同步

# 主库插入 [dameng@allmart02 bin]$ /home/dameng/dmdbms/bin/disql SYSDBA/SYSDBA@localhost:32141 服务器[localhost:32141]:处于主库打开状态 登录使用时间 : 2.506(ms)

disql V8 SQL> create table date(id int, name varchar2(20));

操作已执行 已用时间: 41.564(毫秒). 执行号:601.

SQL> insert into date values (1, 'one'); 影响行数 1 已用时间: 0.602(毫秒). 执行号:602. SQL> select * from date;

SQL> 行号 ID NAME ---------- ----------- ---- 1 1 one 已用时间: 10.744(毫秒). 执行号:603.

SQL> commit;

操作已执行 已用时间: 3.570(毫秒). 执行号:604. # 从库查找

[dameng@allmart03 ~]$ /home/dameng/dmdbms/bin/disql SYSDBA/SYSDBA@localhost:32142

服务器[localhost:32142]:处于备库打开状态 登录使用时间 : 4.506(ms)

disql V8 SQL> select * from date;

SQL> 行号 ID NAME ---------- ----------- ---- 1 1 one 已用时间: 9.640(毫秒). 执行号:1.

注册服务

上面操作都是前台启动的方式,关闭窗口就会退出,下面我们将启动命令注册为系统服务。

切换至ROOT用户

主机注册守护进程服务

/home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p dmrw -dm_ini /dmdata/data/DAMENG/dm.ini -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini

主机注册监视器服务(在哪台上就配哪台)

/home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p confirm -dm_ini /dmdata/data/DAMENG/dm.ini -monitor_ini /dmdata/data/DAMENG/dmmonitor.ini

从机注册守护进程服务

/home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p dmrw -dm_ini /dmdata/data/DAMENG/dm.ini -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini

启动服务(主从都启动)

使用dameng 用户启动

systemctl status DmWatcherServicedmrw

启动监控服务

systemctl start DmMonitorServiceconfirm

注意启动和关闭顺序

启动 主库启动 → 从库启动 → 主库守护进程 → 从库守护进程 → 监视器

停止 监视器 → 从库守护进程 → 主库守护进程 → 从库停止 → 主库停止

达梦社区地址:https://eco.dameng.com

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Boost程序探秘:深度解析C++准标准》是一本详细介绍Boost程序的书籍。Boost是一个开源的C++程序集合,提供了许多重要的功能和工具,帮助开发者更高效地开发C++应用程序。 《Boost程序探秘:深度解析C++准标准》首先介绍了Boost程序的概念、历史和发展。然后,逐一介绍了Boost的各个模块和组件,包括: 1. 智能指针:详细介绍了shared_ptr、scoped_ptr和weak_ptr等智能指针的使用方法和原理,帮助开发者更好地管理资源和避免内存泄漏。 2. 容器:介绍了各种常用的数据容器,如vector、map、set等,并介绍了它们在Boost中的实现和扩展功能。 3. 函数对象和算法:介绍了Boost中的函数对象和算法,其中包含了丰富的算法和函数对象,方便开发者进行各种数据处理和计算操作。 4. 正则表达式:详细介绍了Boost中正则表达式的使用,包括基本语法、匹配规则和替换操作等。 5. 多线程和并发:介绍了Boost中多线程和并发编程的相关模块,包括线程、互斥锁、条件变量等,帮助开发者编写高效的并发程序。 6. 其他模块:还介绍了Boost中的其他模块,如日期时间、解析、文件系统等,帮助开发者完成更多的任务和功能。 《Boost程序探秘:深度解析C++准标准》不仅介绍了Boost的具体用法,还深入解析了其实现原理和设计思想,帮助开发者更好地理解和使用Boost程序。对于想要提高自己的C++编程技能和加快开发效率的开发者来说,这本书是一本非常实用的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值