达梦数据库dm8版本Mpp集群原理系统架构和搭建测试
达梦数据库dm8版本Mpp集群原理系统架构和搭建测试
当前主流的数据库系统架构有完全共享、共享存储、完全不共享和完全对等不共享几种。 其中完全共享体系如 SMP 服务器,局限于单节点服务器,通常价格比较昂贵,其扩展 性和性能受到相应的限制。 共享存储体系允许系统带有多个服务器实例,这些实例与共享存储设备相连。这种体系 可实现多机并行,保证系统的高可用性,但需要通过一个数据管道将所有 I/O 信息过滤到 共享存储子系统,对硬件的要求较高,且并非高性能解决方案。 与此相比,基于硬件的数据仓库平台一般采用完全无共享体系。在这种体系下,通讯功 能部署在一个高宽带网络互连体系上,用户通过一个主控制节点执行并行查询。该体系的一 个重要优势就是每个节点都有一个通往本地磁盘的独立通道,不但简化了体系,还提供良好 的扩展性。但主控节点的存在使得系统规模扩张时主控节点可能成为系统瓶颈,且主控节点 一旦发生故障这个系统将无法提供服务。 DM MPP 采用的完全对等无共享体系架构,结合了完全无共享体系的优点,在此基础上 又前进了一步,不采用增加主控制节点来协调所有并行处理的主从式方法,而是各个节点完 全对等,更进一步简化了体系的实现,也消除了系统可能存在的主节点瓶颈问题。 图 2.1 是这几种数据库系统架构的整体结构示意图。
DM MPP 中的每一个 DM 数据库服务器实例作为一个执行节点,简称 EP。客户端可连接 任意一个 EP 节点进行操作,所有 EP 对客户来说都是对等的。 DM MPP 系统内每个 EP 只负责自身部分数据的读写,执行计划在所有 EP 并行执行, 能充分利用各 EP 的计算能力及发挥各 EP 独立存储的优势。数据只在必要时通过 DM 的高 速邮件 MAL 系统在 EP 间传递。当通信代价占整体执行代价的比例较小时,更能体现大规模 并行处理的优势,随着系统规模的扩大,并行支路越多,优势越明显
原理概述
在 DM MPP 中,数据根据用户指定的分布规则分布在不同的 EP 上。MPP 的核心在于对 用户请求的并行执行,其执行流程可简单描述如下: 1. 用户选择一个 EP 登录,此时该 EP 就是此用户的主 EP,集群中的其余 EP 都是此 用户的从 EP; 2. 主 EP 接受用户的 SQL 请求,并生成并行执行计划; 3. 主 EP 将计划打包后分发给其他从 EP; 4. 各 EP 并行执行; 5. 主 EP 收集各 EP(包括自己)的执行结果; 6. 主 EP 将执行结果汇总后返回给用户。 如图 2.3 所示。
系统特性
DM MPP 采用完全对等不共享架构,系统中各 EP 的功能完全对等,因此对于用户来说, MPP 系统的处理是完全透明的,用户任意登录 MPP 系统的的任一节点进行操作都可获得完 全的 MPP 支持。 使用 DM MPP 可获得以下功能特性支持:
• TB/PB 级数据分析 支持数据的并行装载和操作的并行执行,数据分布式存储在各 EP 中,能支持 TB/PB 级数据分析。
• 支持绝大部分单机功能 支持绝大部分的 DM 单机版功能,同时支持行、列存储,支持存储过程、触发器、索引、 分区表、多媒体数据类型等。
• 高性价比 无需额外配置特殊软、硬件,性价比超高。
• 高可靠性 DM MPP 与 DM 数据守护相结合,为 MPP 系统中的每个 EP 配置一个或多个实时备库, 在 EP 发生故障时其对应备库能迅速切换为主库继续提供服务,确保系统的高可用性。
• 支持超大型集群 支持最多 1024 个 EP,轻松组建超大型集群。
测试部署4节点的达梦MPP集群数据库。
网络配置
本次部署要求做双层网络,业务ip和心跳ip分为不同网段,由于DM MPP 系统需要通过网络在各 EP 间传递数据,因此网络的带宽较高,建议配置万兆内部网络。
节点 |
业务ip |
心跳IP |
网络要求 |
节点1 |
192.168.88.100 |
172.16.1.1 |
百兆网 |
节点2 |
192.168.88.101 |
172.16.1.2 |
百兆网 |
节点3 |
192.168.88.102 |
172.16.1.3 |
百兆网 |
节点4 |
192.168.88.103 |
172.16.1.4 |
百兆网 |
软件配置
类型 |
名称和版本号 |
数量 |
说明 |
操作系统 |
centos 7.8 64位 |
4 |
需要安装gcc、gdb、unixodbc组件 |
数据库 |
达梦数据库管理系统 DM8 |
4 |
统计系统MPP集群 |
1 搭建MPP主备集群
部署前准备
集群规划
|
A机器 |
B机器 |
C机器 |
D机器 |
||||
业务IP |
192.168.88.100 |
192.168.88.101 |
192.168.88.102 |
192.168.88.103 |
||||
心跳IP |
172.16.1.1 |
172.16.1.2 |
172.16.1.3 |
172.16.1.4 |
||||
实例名 |
TEST_MPP_01 |
TEST_MPP_44 |
TEST_MPP_02 |
TEST_MPP_33 |
TEST_MPP_03 |
TEST_MPP_22 |
TEST_MPP_04 |
TEST_MPP_11 |
实例端口 |
5538 |
5539 |
5538 |
5539 |
5538 |
5539 |
5538 |
5539 |
MAL端口 |
5638 |
5639 |
5638 |
5639 |
5638 |
5639 |
5638 |
5639 |
MAL守护进程端口 |
5738 |
5739 |
5738 |
5739 |
5738 |
5739 |
5738 |
5739 |
守护进程端口 |
5838 |
5839 |
5838 |
5839 |
5838 |
5839 |
5838 |
5839 |
OGUID |
45331 |
45334 |
45332 |
45333 |
45333 |
45332 |
45334 |
45331 |
守护组 |
MPP01 |
MPP04 |
MPP02 |
MPP03 |
MPP03 |
MPP02 |
MPP04 |
MPP01 |
安装目录 |
/home/dmdba/dmdbms |
实例目录 |
/dmdata/dmdb |
|||||
归档上限 |
512000M |
归档日志大小 |
512M |
配置A机器-TEST_MPP_01库
初始化实例、脱机备份数据
--初始化实例 ./dminit path=/dmdata/dmdb db_name=TEST_MPP_01 instance_name=TEST_MPP_01 page_size=32 extent_size=32 case_sensitive=0 charset=1 port_num=5538 sysdba_pwd=SYSDBA
--前台正常启停数据库服务一次 ./dmserver /dmdata/dmdb/TEST_MPP_01/dm.ini
--脱机备份数据 ./dmrman ctlstmt=”backup database ‘/dmdata/dmdb/TEST_MPP_01/dm.ini’backupset ‘/dmdata/full_bak_01’”
--将备份文件scp到D服务器上 scp -r /dmdata/full_bak_01 root@192.168.88.103:/dmdata |
修改dm.ini
vim /dmdata/dmdb/TEST_MPP_01/dm.ini
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 MPP_INI = 1 #启用 MPP 配置 |
创建dmarch.ini
vi /dmdata/dmdb/TEST_MPP_01/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/dmarch/arch_01 #本地归档存放路径 ARCH_FILE_SIZE = 512 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 512000 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = TEST_MPP_11 #实时归档目标实例名 |
创建dmmal.ini
vim /dmdata/dmdb/TEST_MPP_01/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间 MAL_COMPRESS_LEVEL = 0 #MAL消息压缩等级,0表示不压缩
[MAL_INST1] MAL_INST_NAME = TEST_MPP_01 #实例名,和 dm.ini中INSTANCE_NAME一致 MAL_HOST = 172.16.1.1 #MAL系统监听TCP连接的IP地址(心跳IP) MAL_PORT = 5638 #MAL系统监听TCP连接的端口 MAL_INST_HOST = 192.168.88.100 #实例的对外服务IP地址 MAL_INST_PORT = 5538 #实例对外服务端口,和dm.ini中PORT_NUM一致 MAL_DW_PORT = 5738 #实例对应的守护进程监听TCP连接的端口 MAL_INST_DW_PORT = 5338 #实例监听守护进程TCP连接的端口 [MAL_INST2] MAL_INST_NAME = TEST_MPP_02 MAL_HOST = 172.16.1.2 MAL_PORT = 5638 MAL_INST_HOST = 192.168.88.101 MAL_INST_PORT = 5538 MAL_DW_PORT = 5738 MAL_INST_DW_PORT = 5838 [MAL_INST3] MAL_INST_NAME = TEST_MPP_03 MAL_HOST = 172.16.1.3 MAL_PORT = 5638 MAL_INST_HOST = 192.168.88.102 MAL_INST_PORT = 5538 MAL_DW_PORT = 5738 MAL_INST_DW_PORT = 5838 [MAL_INST4] MAL_INST_NAME = TEST_MPP_04 MAL_HOST = 172.16.1.4 MAL_PORT = 5638 MAL_INST_HOST = 192.168.88.103 MAL_INST_PORT = 5538 MAL_DW_PORT = 5738 MAL_INST_DW_PORT = 5838 [MAL_INST5] MAL_INST_NAME = TEST_MPP_11 MAL_HOST = 172.16.1.4 MAL_PORT = 5639 MAL_INST_HOST = 192.168.88.103 MAL_INST_PORT = 5539 MAL_DW_PORT = 5739 MAL_INST_DW_PORT = 5839 [MAL_INST6] MAL_INST_NAME = TEST_MPP_22 MAL_HOST = 172.16.1.3 MAL_PORT = 5639 MAL_INST_HOST = 192.168.88.102 MAL_INST_PORT = 5539 MAL_DW_PORT = 5739 MAL_INST_DW_PORT = 5839 [MAL_INST7] MAL_INST_NAME = TEST_MPP_33 MAL_HOST = 172.16.1.2 MAL_PORT = 5639 MAL_INST_HOST = 192.168.88.101 MAL_INST_PORT = 5539 MAL_DW_PORT = 5739 MAL_INST_DW_PORT = 5839 [MAL_INST8] MAL_INST_NAME = TEST_MPP_44 MAL_HOST = 172.16.1.1 MAL_PORT = 5639 MAL_INST_HOST = 192.168.88.100 MAL_INST_PORT = 5539 MAL_DW_PORT = 5739 MAL_INST_DW_PORT = 5839
|
注:所有节点的dmmal.ini文件需保持一致,所以可以在一个节点配置好之后,直接拷贝到其他节点。
创建dmmpp.ini
vi /dmdata/dmdb/TEST_MPP_01/dmmpp.ini
[service_name1] mpp_seq_no = 0 #节点在mpp环境中的序号 mpp_inst_name = TEST_MPP_01 #节点实例名称 [service_name2] mpp_seq_no = 1 mpp_inst_name = TEST_MPP_02 [service_name3] mpp_seq_no = 2 mpp_inst_name = TEST_MPP_03 [service_name4] mpp_seq_no = 3 mpp_inst_name = TEST_MPP_04 |
创建dmmpp.ctl
使用数据库的dmctlcvt工具,将上一步配置的dmmpp.ini文件转换为dmmpp.ctl文件:
./dmctlcvt type=2 src=/dmdata/dmdb/TEST_MPP_01/dmmpp.ini dest=/dmdata/dmdb/TEST_MPP_01/dmmpp.ctl |
注:所有节点的dmmpp.ctl文件需保持一致,故可以在一个节点配置完成之后,直接拷贝到其他节点使用。
创建dmwatcher.ini
vim /dmdata/dmdb/TEST_MPP_01/dmwatcher.ini
[MPP01] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #AUTO表示故障手动切换模式,AUTO表示故障自动切换模式 DW_ERROR_TIME = 20 #远程守护进程故障认定时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_OGUID = 45331 #守护系统唯一OGUID值 INST_INI = /dmdata/dmdb/TEST_MPP_01/dm.ini #dm.ini文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
|
拷贝实例
--拷贝实例到D机器 scp -r /dmdata/dmdb/TEST_MPP_01 dmdba@192.168.88.103: /dmdata/dmdb |
注册服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p TEST_MPP_01 -dm_ini /dmdata/dmdb/TEST_MPP_01/dm.ini -m mount /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p TEST_MPP_GP01 -watcher_ini /dmdata/dmdb/TEST_MPP_01/dmwatcher.ini |
配置B机器-TEST_MPP_02库
初始化实例、脱机备份数据
--初始化实例 ./dminit path=/dmdata/dmdb/ db_name=TEST_MPP_02 instance_name=TEST_MPP_02 page_size=32 extent_size=32 case_sensitive=0 charset=1 port_num=5538 sysdba_pwd=SYSDBA
--前台正常启停数据库服务一次 ./dmserver /dmdata/dmdb/TEST_MPP_02/dm.ini
--脱机备份数据 ./dmrman ctlstmt=”backup database ‘/dmdata/dmdb/TEST_MPP_02/dm.ini’backupset ‘/dmdata/full_bak_02’”
--将备份文件scp到C服务器上 scp -r /dmdata/full_bak_02 dmdba@192.168.88.102:/dmdata |
修改dm.ini
vim /dmdata/dmdb/TEST_MPP_02/dm.ini
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 MPP_INI = 1 #启用 MPP 配置 |
修改dmarch.ini
vim /dmdata/dmdb/TEST_MPP_02/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/dmarch/arch_02 #本地归档存放路径 ARCH_FILE_SIZE = 512 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 512000 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = TEST_MPP_22 #实时归档目标实例名 |
创建dmmal.ini
从A机器直接拷贝dmmal.ini文件即可。
创建dmmpp.ini
直接从A机器直接拷贝dmmpp.ini文件即可。
创建dmmpp.ctl
直接从A机器直接拷贝dmmpp.ctl文件即可。
创建dmwatcher.ini
vi /dmdata/dmdb/TEST_MPP_02/dmwatcher.ini
[MPP02] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #AUTO表示故障手动切换模式,AUTO表示故障自动切换模式 DW_ERROR_TIME = 20 #远程守护进程故障认定时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_OGUID = 45332 #守护系统唯一OGUID值 INST_INI = /dmdata/dmdb/TEST_MPP_02/dm.ini #dm.ini文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 |
拷贝实例
-- 拷贝实例到C机器 scp -r /dmdata/dmdb/TEST_MPP_02 dmdba@192.168.88.102:/dmdata/dmdb |
注册服务
./dm_service_installer.sh -t dmserver -p TEST_MPP_02 -dm_ini /dmdata/dmdb/TEST_MPP_02/dm.ini -m mount ./dm_service_installer.sh -t dmwatcher -p TEST_MPP_GP02 -watcher_ini /dmdata/dmdb/TEST_MPP_02/dmwatcher.ini |
配置C机器-TEST_MPP_03库
初始化实例、脱机备份数据
--初始化实例 ./dminit path=/dmdata/dmdb/ db_name=TEST_MPP_03 instance_name=TEST_MPP_03 page_size=32 extent_size=32 case_sensitive=0 charset=1 port_num=5538 sysdba_pwd=SYSDBA
--前台正常启停数据库服务一次 ./dmserver /dmdata/dmdb/TEST_MPP_03/dm.ini
--脱机备份数据 ./dmrman ctlstmt=”backup database ‘/dmdata/dmdb/TEST_MPP_03/dm.ini’backupset ‘/dmdata/full_bak_03’”
--将备份文件scp到B服务器上 scp -r /dmdata/full_bak_03 dmdba@192.168.88.101:/dmdata |
修改dm.ini
vim /dmdata/dmdb/TEST_MPP_03/dm.ini
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 MPP_INI = 1 #启用 MPP 配置 |
创建dmarch.ini
vi /dmdata/dmdb/TEST_MPP_03/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/dmarch/arch_03 #本地归档存放路径 ARCH_FILE_SIZE = 512 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 512000 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = TEST_MPP_33 #实时归档目标实例名 |
创建dmmal.ini
从A机器直接拷贝dmmal.ini文件即可。
创建dmmpp.ini
直接从A机器直接拷贝dmmpp.ctl文件即可。
创建dmmpp.ctl
直接从A机器直接拷贝dmmpp.ctl文件即可。
创建dmwatcher.ini
vi /dmdata/dmdb/TEST_MPP_03/dmwatcher.ini
[MPP03] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #AUTO表示故障手动切换模式,AUTO表示故障自动切换模式 DW_ERROR_TIME = 20 #远程守护进程故障认定时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_OGUID = 45333 #守护系统唯一OGUID值 INST_INI = /dmdata/dmdb/TEST_MPP_03/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机器 scp -r /dmdata/dmdb/TEST_MPP_03 dmdba@192.168.88.101:/dmdata/dmdb |
1.3.9 注册服务
./dm_service_installer.sh -t dmserver -p TEST_MPP_03 -dm_ini /dmdata/dmdb/TEST_MPP_03/dm.ini -m mount ./dm_service_installer.sh -t dmwatcher -p TEST_MPP_GP03 -watcher_ini /dmdata/dmdb/TEST_MPP_03/dmwatcher.ini |
配置D机器-TEST_MPP_04库
实例、备份数据
--初始化实例 ./dminit path=/dmdata/dmdb/ db_name=TEST_MPP_04 instance_name=TEST_MPP_04 page_size=32 extent_size=32 case_sensitive=0 charset=1 port_num=5538 sysdba_pwd=SYSDBA
--前台正常启停数据库服务一次 ./dmserver /dmdata/dmdb/TEST_MPP_04/dm.ini
--脱机备份数据 ./dmrman ctlstmt=”backup database ‘/dmdata/dmdb/TEST_MPP_04/dm.ini’backupset ‘/dmdata/full_bak_04’”
--将备份文件scp到A服务器上 scp -r /dmdata/full_bak_04 dmdba@192.168.88.100:/dmdata |
修改dm.ini
vim /dmdata/dmdb/TEST_MPP_04/dm.ini
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 MPP_INI = 1 #启用 MPP 配置 |
替换dmarch.ini
vi /dmdata/dmdb/TEST_MPP_04/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/dmarch/arch_04 #本地归档存放路径 ARCH_FILE_SIZE = 512 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 512000 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = TEST_MPP_44 #实时归档目标实例名 |
创建dmmal.ini
从A机器直接拷贝dmmal.ini文件即可。
创建dmmpp.ini
直接从A机器直接拷贝dmmpp.ctl文件即可。
创建dmmpp.ctl
直接从A机器直接拷贝dmmpp.ctl文件即可。
创建dmwatcher.ini
vi /dmdata/TEST_MPP_04/dmwatcher.ini
[MPP04] DW_TYPE = GLOBAL DW_MODE = AUTO DW_ERROR_TIME = 20 INST_ERROR_TIME = 20 INST_RECOVER_TIME = 60 INST_OGUID = 45334 INST_INI = /dmdata/dmdb/TEST_MPP_04/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0 |
拷贝实例
--拷贝实例到A机器 scp -r /dmdata/dmdb/TEST_MPP_04 dmdba@192.168.88.100:/dmdata/dmdb |
注册服务
./dm_service_installer.sh -t dmserver -p TEST_MPP_04 -dm_ini /dmdata/dmdb/TEST_MPP_04/dm.ini -m mount ./dm_service_installer.sh -t dmwatcher -p TEST_MPP_GP04 -watcher_ini /dmdata/dmdb/TEST_MPP_04/dmwatcher.ini |
配置D机器-TEST_MPP_11库
修改dm.ini
vi /dmdata/dmdb/TEST_MPP_01/dm.ini
INSTANCE_NAME = TEST_MPP_11 #数据库实例名 PORT_NUM =5539 #数据库实例监听端口 |
修改dmarch.ini
vi /dmdata//dmdb/TEST_MPP_01/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/dmarch/arch_11 #本地归档存放路径 ARCH_FILE_SIZE = 512 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 512000 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = TEST_MPP_01 #实时归档目标实例名 |
相同配置项
与A机器TEST_MPP_01的dmmal.ini、dmmpp.ini、dmmpp.ctl相同,直接拷贝即可
注册服务
./dm_service_installer.sh -t dmserver -p TEST_MPP_11 -dm_ini /dmdata/dmdb/TEST_MPP_01/dm.ini -m mount ./dm_service_installer.sh -t dmwatcher -p TEST_MPP_GP11 -watcher_ini /dmdata/dmdb/TEST_MPP_01/dmwatcher.ini |
恢复数据
./dmrman CTLSTMT="RESTORE DATABASE ' /dmdata/dmdb/TEST_MPP_01/dm.ini' FROM BACKUPSET ' /dmdata/full_bak_01'" ./dmrman CTLSTMT="RECOVER DATABASE ' /dmdata/dmdb/TEST_MPP_01/dm.ini' FROM BACKUPSET ' /dmdata/full_bak_01'" ./dmrman CTLSTMT="RECOVER DATABASE ' /dmdata/dmdb/TEST_MPP_01/dm.ini' UPDATE DB_MAGIC" |
配置C机器-TEST_MPP_22库
修改dm.ini
vi /dmdata/dmdb/TEST_MPP_02/dm.ini
INSTANCE_NAME = TEST_MPP_22 #数据库实例名 PORT_NUM = 5539 #数据库实例监听端口 |
替换dmarch.ini
vi /dmdata/dmdb/TEST_MPP_02/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/dmarch/arch_22 #本地归档存放路径 ARCH_FILE_SIZE = 512 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 512000 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = TEST_MPP_02 #实时归档目标实例名 |
相同配置项
与A机器TEST_MPP_01的dmmal.ini、dmmpp.ini、dmmpp.ctl相同,直接拷贝即可。
注册服务
./dm_service_installer.sh -t dmserver -p TEST_MPP_22 -dm_ini /dmdata/dmdb/TEST_MPP_02/dm.ini -m mount ./dm_service_installer.sh -t dmwatcher -p TEST_MPP_GP22 -watcher_ini /dmdata/dmdb/TEST_MPP_02/dmwatcher.ini |
恢复数据
./dmrman CTLSTMT="RESTORE DATABASE ' /dmdata/dmdb/TEST_MPP_02/dm.ini' FROM BACKUPSET ' /dmdata/full_bak_02'" ./dmrman CTLSTMT="RECOVER DATABASE ' /dmdata/dmdb/TEST_MPP_02/dm.ini' FROM BACKUPSET ' /dmdata/full_bak_02'" ./dmrman CTLSTMT="RECOVER DATABASE ' /dmdata/dmdb/TEST_MPP_02/dm.ini' UPDATE DB_MAGIC" |
配置B机器-TEST_MPP_33库
修改dm.ini
vi /dmdata/dmdb/TEST_MPP_03/dm.ini
INSTANCE_NAME = TEST_MPP_33 #数据库实例名 PORT_NUM =5539 #数据库实例监听端口 |
替换dmarch.ini
vi /dmdata/dmdb/TEST_MPP_03/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/dmarch/arch_33 #本地归档存放路径 ARCH_FILE_SIZE = 512 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 512000 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = TEST_MPP_03 #实时归档目标实例名 |
相同配置项
与A机器TEST_MPP_01的dmmal.ini、dmmpp.ini、dmmpp.ctl相同,直接拷贝即可。
注册服务
./dm_service_installer.sh -t dmserver -p TEST_MPP_33 -dm_ini /dmdata/dmdb/TEST_MPP_03/dm.ini -m mount ./dm_service_installer.sh -t dmwatcher -p TEST_MPP_GP33 -watcher_ini /dmdata/dmdb/TEST_MPP_03/dmwatcher.ini |
恢复数据
./dmrman CTLSTMT="RESTORE DATABASE ' /dmdata/dmdb/TEST_MPP_03/dm.ini' FROM BACKUPSET ' /dmdata/full_bak_03'" ./dmrman CTLSTMT="RECOVER DATABASE ' /dmdata/dmdb/TEST_MPP_03/dm.ini' FROM BACKUPSET ' /dmdata/full_bak_03'" .//dmrman CTLSTMT="RECOVER DATABASE ' /dmdata/dmdb/TEST_MPP_03/dm.ini' UPDATE DB_MAGIC" |
配置A机器-TEST_MPP_44库
修改dm.ini
vi /dmdata/dmdb/TEST_MPP_04/dm.ini
INSTANCE_NAME = TEST_MPP_44 #数据库实例名 PORT_NUM = 5539 #数据库实例监听端口 |
替换dmarch.ini
vi /dmdata/TEST_MPP_04/dmarch.ini
[ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /dmdata/dmarch/arch_44 #本地归档存放路径 ARCH_FILE_SIZE = 512 #单个归档大小,单位MB ARCH_SPACE_LIMIT = 512000 #归档上限,单位MB [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = TEST_MPP_04 #实时归档目标实例名 |
配置相同项
与A机器TEST_MPP_01的dmmal.ini、dmmpp.ini、dmmpp.ctl相同,直接拷贝即可。
注册服务
./dm_service_installer.sh -t dmserver -p TEST_MPP_44 -dm_ini /dmdata/dmdb/TEST_MPP_04/dm.ini -m mount ./dm_service_installer.sh -t dmwatcher -p TEST_MPP_GP44 -watcher_ini /dmdata/dmdb/TEST_MPP_04/dmwatcher.ini |
恢复数据
./dmrman CTLSTMT="RESTORE DATABASE ' /dmdata/dmdb/TEST_MPP_04/dm.ini' FROM BACKUPSET ' /dmdata/full_bak_04'" ./dmrman CTLSTMT="RECOVER DATABASE ' /dmdata/dmdb/TEST_MPP_04/dm.ini' FROM BACKUPSET ' /dmdata/full_bak_04'" ./dmrman CTLSTMT="RECOVER DATABASE ' /dmdta/dmdb/TEST_MPP_04/dm.ini' UPDATE DB_MAGIC" |
启动服务及查看信息
启动数据库实例
-- A机器 cd /home/dmdba/dmdbms/bin ./DmServiceTEST_MPP_01 start ./DmServiceTEST_MPP_44 start
-- B机器 cd /home/dmdba/dmdbms/bin ./DmServiceTEST_MPP_02 start ./DmServiceTEST_MPP_33 start
-- C机器 cd /home/dmdba/dmdbms/bin ./DmServiceTEST_MPP_03 start ./DmServiceTEST_MPP_22 start
-- D机器 cd /home/dmdba/dmdbms/bin ./DmServiceTEST_MPP_04 start ./DmServiceTEST_MPP_11 start |
修改参数
注意使用局部登录的方式
--A机器 ./disql SYSDBA/SYSDBA@localhost:5538#"{mpp_type=local}" SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> SP_SET_OGUID(45331); SQL> ALTER DATABASE PRIMARY; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
./disql SYSDBA/SYSDBA@localhost:5539#"{mpp_type=local}" SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> SP_SET_OGUID(45334); SQL> ALTER DATABASE STANDBY; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
--B机器 ./disql SYSDBA/SYSDBA@localhost:5538#"{mpp_type=local}" SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> SP_SET_OGUID(45332); SQL> ALTER DATABASE PRIMARY; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
./disql SYSDBA/SYSDBA@localhost:5539#"{mpp_type=local}" SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> SP_SET_OGUID(45333); SQL> ALTER DATABASE STANDBY; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
-- C机器 ./disql SYSDBA/SYSDBA@localhost:5538#"{mpp_type=local}" SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> SP_SET_OGUID(45333); SQL> ALTER DATABASE PRIMARY; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
./disql SYSDBA/SYSDBA@localhost:5539#"{mpp_type=local}" SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> SP_SET_OGUID(45332); SQL> ALTER DATABASE STANDBY; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
-- D机器 ./disql SYSDBA/SYSDBA@localhost:5538#"{mpp_type=local}" SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> SP_SET_OGUID(45334); SQL> ALTER DATABASE PRIMARY; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
./disql SYSDBA/SYSDBA@localhost:5539#"{mpp_type=local}" SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL> SP_SET_OGUID(45331); SQL> ALTER DATABASE STANDBY; SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); |
启动守护进程
A机器: cd /home/dmdba/dmdbms/bin ./DmWatcherServiceTEST_MPP_GP01 start ./DmWatcherServiceTEST_MPP_GP44 start B机器: cd /home/dmdba/dmdbms/bin ./DmWatcherServiceTEST_MPP_GP02 start ./DmWatcherServiceTEST_MPP_GP33 start C机器: cd /home/dmdba/dmdbms/bin ./DmWatcherServiceTEST_MPP_GP03 start ./DmWatcherServiceTEST_MPP_GP22 start D机器: cd /home/dmdba/dmdbms/bin ./DmWatcherServiceTEST_MPP_GP04 start ./DmWatcherServiceTEST_MPP_GP11 start |
创建dmmonitor.ini
在监视器机器(143.128.4.47)上操作
vi /home/dmdba/dmmonitor/dmmonitor.ini
MON_DW_CONFIRM = 1 #0为非确认,1为确认 MON_LOG_PATH = /dmdata/dmmonitor/dmmonitor_log #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 #单个日志大小,单位MB MON_LOG_SPACE_LIMIT = 0 #日志上限,单位MB
[MPP01] MON_INST_OGUID = 45331 #组GMPP1_01的唯一OGUID 值 MON_DW_IP = 172.16.1.1:5738 #IP对应MAL_HOST,PORT对应MAL_DW_PORT MON_DW_IP = 172.16.1.4:5739 [MPP02] MON_INST_OGUID = 45332 #组GMPP1_02的唯一OGUID 值 MON_DW_IP = 172.16.1.2:5738 MON_DW_IP = 172.16.1.3:5739 [MPP03] MON_INST_OGUID = 45333 #组GMPP1_03的唯一OGUID 值 MON_DW_IP = 172.16.1.3:5738 MON_DW_IP = 172.16.1.2:5739 [MPP04] MON_INST_OGUID = 45334 #组GMPP1_04的唯一OGUID 值 MON_DW_IP = 172.16.1.4:5738 MON_DW_IP = 172.16.1.1:5739 |
注册服务
./dm_service_installer.sh -t dmmonitor -p TEST_MPP -monitor_ini /home/dmdb/dmmonitor/dmmonitor.ini |
启停集群
启动: -- 启动实例 A机器: ./DmServiceTEST_MPP_01 start B机器:./DmServiceTEST_MPP_02 start C机器: ./DmServiceTEST_MPP_03 start D机器: ./DmServiceTEST_MPP_04 start
D机器: ./DmServiceTEST_MPP_11 start C机器:./DmServiceTEST_MPP_22 start B机器:./DmServiceTEST_MPP_33 start A机器: ./DmServiceTEST_MPP_44 start
--启动守护 A机器:./DmWatcherServiceTEST_MPP_GP01 start B机器:./DmWatcherServiceTEST_MPP_GP02 start C机器: ./DmWatcherServiceTEST_MPP_GP03 start D机器: ./DmWatcherServiceTEST_MPP_GP04 start
D机器: ./DmWatcherServiceTEST_MPP_GP11 start C机器:./DmWatcherServiceTEST_MPP_GP22 start B机器:./DmWatcherServiceTEST_MPP_GP33 start A机器: ./DmWatcherServiceTEST_MPP_GP44 start
--启动监视器 监视器机器:/DmMonitorServiceTEST_MPP start
停止: --停止监视器 监视器机器:/DmMonitorServiceTEST_MPP stop
-- 停止守护 A机器: ./DmWatcherServiceTEST_MPP_GP01 stop B机器:./DmWatcherServiceTEST_MPP_GP02 stop C机器: ./DmWatcherServiceTEST_MPP_GP03 stop D机器: ./DmWatcherServiceTEST_MPP_GP04 stop
D机器: ./DmWatcherServiceTEST_MPP_GP11 stop C机器:./DmWatcherServiceTEST_MPP_GP22 stop B机器:./DmWatcherServiceTEST_MPP_GP33 stop A机器: ./DmWatcherServiceTEST_MPP_GP44 stop
--停止实例 A机器: ./DmServiceTEST_MPP_01 stop B机器:./DmServiceTEST_MPP_02 stop C机器: ./DmServiceTEST_MPP_03 stop D机器: ./DmServiceTEST_MPP_04 stop
D机器: ./DmServiceTEST_MPP_11 stop C机器:./DmServiceTEST_MPP_22 stop B机器:./DmServiceTEST_MPP_33 start A机器: ./DmServiceTEST_MPP_44 start |
配置服务名连接
创建dm_svc.conf(4台机器上都配置)
vi /etc/dm_svc.conf
TIME_ZONE=(480) LANGUAGE=(cn) login_mode=(1) TEST_MPP=(192.168.88.100:5538,192.168.88.101:5538,192.168.88.102:5538,192.168.88.103:5538,192.168.88.101:5539,192.168.88.102:5539,192.168.88.103:5539,192.168.88.104:5539) |