达梦数据库-MPP集群和共享存储集群DSC

数据库主流架构

在这里插入图片描述

完全共享: 单点服务
共享磁盘: 多个实例同时访问数据, 节点数增大则对系统I/O 锁资源等产生竞争, 节点数增大性能反而可能下降
完全不共享: 系统中存在一个主控节点, 如果主控节点异常则无法提供服务
完全对等共享: 不存在主控节点

DM 大规模并行处理集群 MPP

完全对等无共享存储集群, 支持多个DM数据库实例组成一个并行计算网络

DM MPP 概念

1、每个数据库实例, 在集群中称为一个EP(执行节点), 客户端可以连接人一个节点进行操作
2、每个EP只负责自身的数据读写
3、内部通过MAL高速系统进行数据传输

MPP 原理

在这里插入图片描述

1、用户选择一个 EP 登录, 此时该 EP 就是此用户的主 EP, 集群中的其余 EP 都是此用户的从 EP
2、主 EP 接受用户的 SQL 请求, 并生成并行执行计划
3、主 EP 将计划打包后分发给其他从 EP
4、各 EP 并行执行
5、主 EP 收集各 EP(包括自己)的执行结果
6、主 EP 将执行结果汇总后返回给用户

MPP 特性

1、TB/PB级别的数据分析
2、支持绝大部分单机功能
3、高性价比
4、高可靠性
5、支持超大规模集群

MPP 数据分布

哈希分布

根据表中的一个字段或多个字段对行进行哈希计算, 计算出来的哈希值和哈希映射表将改行数据分布到映射的节点上
哈希分布节点之间的数据是否均和, 取决于哈希分布列和数据情况, 当节点个数发生变化时, 各个节点的数据需要根据新的哈希映射表重新分布

随机分布

不存在分布列, 插入数据时会按照一定的随机算法将数据均匀分不到各个节点
随机分布优点: 不存在数据和节点之间的映射关系, 节点发生变化可以不对数据进行均衡
随机分布的对于复杂查询性能不如哈希分布高

复制分布

在每个节点上的本地数据都是一分完整的数据拷贝, 查询任意一个节点都可以得到完整的数据不需要从其他节点获取数据
复制分布应用于数据量不大的表

范围分布

根据表中的一个列或者多个列的列值范围进行分布

LIST分布

表中一个列或者多个列的离散值, 来确定存储在那个EP上

全局连接和本地连接

全局连接

客户端连接任意一个EP节点系统会自动建立和其他EP节点之间的关系
用户对数据库的操作也是通过全局连接在所有EP进行使用全局连接时
要求 MPP 系统的所有 EP都正常提供服务, 否则无法建立连接

本地连接

客户端连接某个EP节点后, 该节点不会和其他EP节点建立关系所有操作只在该节点进行

/* MPP 默认使用全局连接 */

disql中MPP_TYPE 可以指定使用本地连接还是全局连接

MPP 执行计划

MGAT    MPP GATHER      主EP收集所有节点数据, 从EP将数据发送给主EP
MCLCT   MPP COLLECT     在 MGAT 的基础上, 增加主从 EP 执行同步功能, 避免数据在主 EP 上堆积. 一个计划树中一般只会在较上层出现一个 MCLCT, 但可能有多个 MGAT
MDIS    MPP DISTRIBUTE  各 EP 节点间相互分发数据, 按照分发列计算行数据的目标节点并发送过去, 目标节点负责接收
MBRO    MPP BROADCAST   功能类似 MGAT, 收集数据到主 EP, 该操作符带有聚集函数运算功能, 仅和 FAGR 配合使用
MSCT    MPP SCATTER     主 EP 发送完整数据到所有从 EP, 保证每个节点数据都完整, 一般和 MGAT配合使用

SELECT 语句处理流程

    1、建立连接       用户连接到 MPP 系统内任意一个 EP 节点, 则该 EP 为连接的主 EP, 其余节点为从 EP
    2、生成执行计划   主 EP 解析查询语句, 生成普通的查询计划后, 根据数据分布情况在合适的位置插入合适的并行通讯操作符, 生成最终的并行查询计划
    3、分发计划       主 EP 把执行计划分发给所有的从 EP
    4、执行计划       各从 EP 收到计划后, 生成执行计划的运行环境, 所有 EP 并行执行, 执行时各 EP通过通讯操作符分发必要的数据并协调执行进度
    5、生成结果集     主 EP 收集所有 EP 的查询结果(包括自身数据), 生成结果集
    6、返回结果集     主 EP 将结果集返回给用户

DML 语句处理流程

    1、建立连接       户连接到 MPP 系统内任意一个 EP 节点, 则该 EP 为连接的主 EP, 其余节点为从 EP
    2、生成执行计划   主 EP 解析语句, 生成执行计划, 其中包含的查询计划(即 WHERE 条件对应的计划)也是并行查询计划, 另外还会生成一个对应的在从 EP 上执行的计划(MPLN)
    3、准备数据       主 EP 开始执行计划时首先把查询计划部分发布给所有的从 EP, 并行执行查询, 主 EP 收集查询结果
    4、定位节点       数据准备完成后, 根据分布列和分布方式计算出需要修改的行数据所在的目标 EP, 将 MPLN 以及操作所需数据发送到各对应的 EP如果目标 EP 为本地则不发送, 在本地直接完成操作
    5、执行修改操作   从 EP 收到 MPLN 计划和数据后生成执行环境, 执行实际的修改操作
    6、返回执行结果   主 EP 等待所有的从 EP 执行完成后才会返回执行结果给客户端, 只要其中有任一个 EP 执行失败, 则已经执行的所有 EP 都会回滚, 保证数据的一致性, 并返回错误信息给客户端

MPP 数据导入

MPP_CLIENT: 该参数用来设置MPP环境下使用dmfldr进行数据加载时数据分布方式

客户端分发模式
本地分发模式

./dmfldr mpp_client=false

MPP 相关配置文件

1、dm.ini

    MAL_INI             MAL 系统配置开关, 0 表示不启用 MAL 系统, 1 表示启用 MAL 系统, 
    MPP_INI             MPP 系统配置开关, 0 表示不启用 MPP 系统, 1 表示启用 MPP 系统, 
    MAX_EP_SITES        MPP 环境下EP 节点的最大数量, 有效值范围(2~1024), 默认值为
    MPP_HASH_LR_RATE    MPP 系统下对 HASH JOIN 节点, 可以根据左右儿子 CARD 代价的比值, 调整 HASH_JOIN 的左右儿子的 MOTION 添加, 从而影响计划如果CARD 比值超过此值, 则小数据量的一方全部收集到主 EP 来做取值范围(1~4294967294), 默认值为 10
    MPP_OP_JUMP         MPP 系统中操作符的跳转开关, 是否支持通讯操作符的跳转功能1: 支持0: 不支持取值范围: 0、1, 默认值为 1
    PHF_NTTS_OPT        MPP 系统中是否进行NTTS计划的优化, 打开时可能减少计划中的NTTS操作符1: 支持0: 不支持取值范围: 0、1, 默认值为 1

2、dmmal.ini

    MAL_CHECK_INTERVAL      MAL 链路检测时间间隔, 取值范围(0s-1800s), 默认 30s, 配置为 0 表示不进行 MAL 链路检测为了防止误判, DMRAC 集群中, 建议将配置值>= DCR_GRP_NETCHK_TIME
    MAL_CONN_FAIL_INTERVAL  判定 MAL 链路断开的时间, 取值范围(2s-1800s), 默认 10s
    MAL_LEAK_CHECK          是否打开 MAL 内存泄露检查, 0: 关闭, 1: 打开, 默认 0
    MAL_LOGIN_TIMEOUT       MPP/DBLINK 等实例间登录时的超时检测间隔(3-1800), 以秒为单位, 默认 15s
    MAL_BUF_SIZE            单个 MAL 缓存大小限制, 以兆为单位当此 MAL 的缓存邮件超过此大小, 则会将邮件存储到文件中有效值范围(0~500000), 默认为 100
    MAL_SYS_BUF_SIZE        MAL 系统总内存大小限制, 单位: M有效值范围(0~500000), 默认为 0, 表示 MAL 系统无总内存限制
    MAL_VPOOL_SIZE          MAL 系统使用的内存初始化大小, 以兆为单位有效值范围( 1~500000 ),  默 认 为128 ,  此 值 一 般 要 设 置 的 比MAL_BUF_SIZE 大一些
    MAL_COMPRESS_LEVEL      MAL 消息压缩等级, 取值范围(0-10)默认为 0, 不进行压缩1–9 表示采用 zip 算法, 从 1 到 9 表示压缩速度依次递减, 压缩率依次递增10 表示采用 snappy 算法, 压缩速度高于 zip算法, 压缩率相对低
    MAL_TEMP_PATH           指定临时文件的目录当邮件使用的内存超过 mal_buf_size或者 mal_sys_buf_size 时, 将新产生的邮件保存到临时文件中如果缺省, 则新产生的邮件保存到 temp.dbf 文件中
    [MAL_NAME]              MAL 名称, 同一个配置文件中 MAL 名称需保持唯一性
    MAL_INST_NAME           数据库实例名, 与 dm.ini 的 INSTANCE_NAME 配置项保持一致, MAL 系统中数据库实例名要保持唯一
    MAL_HOST                MAL IP 地址, 使用 MAL_HOST + MAL_PORT 创建 MAL 链路
    MAL_PORT                MAL 监听端口, 用于数据守护、DSC、MPP 等环境中各节点实例之间MAL链路配置, 监听端端口配置此参数, 范围1024~65534, 发起连接端的端口在 1024~65535 之间随机分配
    MAL_INST_HOST           MAL_INST_NAME 实例对外服务 IP 地址
    MAL_INST_PORT           MAL_INST_NAME 实例服务器监听通讯端口号, 服务器配置此参数 ,  有 效 值 范 围 ( 1024~65534 ),  发 起 连 接 端 的 端 口 在1024-65535 之间随机分配此参数的配置应与 dm.ini 中的 PORT_NUM 保持一致
    MAL_DW_PORT             MAL_INST_NAME 实例守护进程的监听端口, 其他守护进程或监视器使用 MAL_HOST + MAL_DW_PORT 创建与该实例守护进程的 TCP 连接, 监听端配置此参数, 有效值范围(1024~65534), 发起连接端的端口在 1024-65535 之间随机分配
    MAL_LINK_MAGIC          MAL 链路网段标识, 有效值范围(0-65535), 默认 0设置此参数时, 同一网段内的节点都设置相同, 不同网段内的节点设置的值必须不一样

3、dmmpp.ctl

dmmpp.ctl 是 DM MPP 系统的控制文件, 它是一个二进制文件, 用户不能直接进行配置
用户需要首先配置 dmmpp.ini, 然后利用 dmctlcvt 工具进行转换得到生成的dmmpp.ctl 文件
MPP 系统中的每个 EP 都必须使用相同的 dmmpp.ctl 文件

    dmmpp.ini 的配置参数
    [SERVICE_NAME]  标识 MPP 系统中每个 EP 实例的选项名
    MPP_SEQ_NO      实例在 mpp 系统内的序号, 取值范围为 0~1023
    MPP_INST_NAME   实例名

MPP 集群搭建

环境说明

    节点一  外网IP: 100.63.1.1 内网IP: 192.168.232.128  INSTANCE_NAME: its01 DB_NAME: its PORT_NUM: 5236 MAL_PORT: 17001 MPP_SEQNO: 0
    节点二  外网IP: 100.63.1.2 内网IP: 192.168.232.129  INSTANCE_NAME: its02 DB_NAME: its PORT_NUM: 5236 MAL_PORT: 17001 MPP_SEQNO: 1

一、各节点安装数据库

1、主库
    [dmdba@itsapp1 dm8]$ ./DMInstall.bin  -i

2、备库
    [dmdba@itsapp2 dm8]$ ./DMInstall.bin  -i

二、各节点初始化数据库

1、主库
    [dmdba@itsapp1 bin]$ ./dminit PATH=/dmdata/ db_name=its instance_name=its01

2、备库
    [dmdba@itsapp2 bin]$ ./dminit PATH=/dmdata/ db_name=its instance_name=its02

三、节点一配置

1、dm.ini

    [dmdba@itsapp1 bin]$ vi /dmdata/its/dm.ini 
    INSTANCE_NAME = ITS01
    PORT_NUM      = 5236
    MAL_INI       = 1
    MPP_INI       = 1

2、dmmal.ini

    [dmdba@itsapp1 bin]$ vi /dmdata/its/dmmal.ini 
    MAL_CHECK_INTERVAL      = 5
    MAL_CONN_FAIL_INTERVAL  = 5
    [MAL_INST1]
        MAL_INST_NAME           = ITS01
        MAL_HOST                = 192.168.232.128
        MAL_PORT                = 17001
        MAL_INST_HOST           = 100.63.1.1
        MAL_INST_PORT           = 5236

    [MAL_INST2]
        MAL_INST_NAME           = ITS02
        MAL_HOST                = 192.168.232.129
        MAL_PORT                = 17001
        MAL_INST_HOST           = 100.63.1.2
        MAL_INST_PORT           = 5236

3、dmmpp.ini

    [dmdba@itsapp1 bin]$ vi /dmdata/its/dmmpp.ini 
    [SERVICE_NAME1]
    MPP_SEQ_NO = 0
    MPP_INST_NAME = ITS01

    [SERVICE_NAME2]
    MPP_SEQ_NO = 1
    MPP_INST_NAME = ITS02

    [dmdba@itsapp1 bin]$ ./dmctlcvt TYPE=2 SRC=/dmdata/its/dmmpp.ini DEST=/dmdata/its/dmmpp.ctl

四、节点二配置

1、dm.ini

    [dmdba@itsapp2 bin]$ vi /dmdata/its/dm.ini 
    INSTANCE_NAME = ITS02
    PORT_NUM      = 5236
    MAL_INI       = 1
    MPP_INI       = 1

2、其他配置文件必须和节点一完全一致, 复制即可
    [dmdba@itsapp1 bin]$ scp /dmdata/its/dmmal.ini 100.63.1.2:/dmdata/its/
    [dmdba@itsapp1 bin]$ scp /dmdata/its/dmmpp.ini 100.63.1.2:/dmdata/its/
    [dmdba@itsapp1 bin]$ scp /dmdata/its/dmmpp.ctl 100.63.1.2:/dmdata/its/

五、启动数据库

1、主库
    [dmdba@itsapp1 bin]$ ./dmserver /dmdata/its/dm.ini 

2、备库
    [dmdba@itsapp2 bin]$ ./dmserver /dmdata/its/dm.ini 

六、测试分布

1、查看实例状态

    [dmdba@itsapp1 bin]$ ./disql
    SQL> SELECT * FROM V$INSTANCE;

    行号     NAME  INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION                DB_VERSION          START_TIME          STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE BUILD_VERSION                      BUILD_TIME          
    ---------- ----- ------------- --------------- --------- -------------------------- ------------------- ------------------- ------- ------ ----------- ----------- -------- ---------------------------------- --------------------
    1          ITS02 ITS02         2               itsapp2   DM Database Server x64 V8  DB Version: 0x7000c 2022-06-13 17:11:28 OPEN    NORMAL 0           0           NULL     1-2-114-22.03.04-158322-10045-ENT  Mar  4 2022 11:52:18
    2          ITS01 ITS01         1               itsapp1   DM Database Server x64 V8  DB Version: 0x7000c 2022-06-13 17:11:07 OPEN    NORMAL 0           0           NULL     1-2-114-22.03.04-158322-10045-ENT  Mar  4 2022 11:52:18

2、测试建表

    SQL> CREATE TABLE T1(id INT);
    SQL> SP_TABLEDEF('SYSDBA','T1');

    行号     COLUMN_VALUE                                                                                   
    ---------- -----------------------------------------------------------------------------------------------
    1          CREATE TABLE "SYSDBA"."T1"  (  "ID" INT) STORAGE(ON "MAIN", CLUSTERBTR)   DISTRIBUTED RANDOMLY;
    -- 默认没有指定如果分布, 则使用随机分布建表

3、插入数据

    CREATE TABLE T1(id INT);
    INSERT INTO T1 VALUES(1);
    INSERT INTO T1 VALUES(10);
    INSERT INTO T1 VALUES(100);
    INSERT INTO T1 VALUES(1000);
    INSERT INTO T1 VALUES(10000);
    INSERT INTO T1 VALUES(100000);
    INSERT INTO T1 VALUES(1000000);
    INSERT INTO T1 VALUES(10000000);
    INSERT INTO T1 VALUES(100000000);
    INSERT INTO T1 VALUES(1000000000);
    COMMIT;

    SQL> CALL SP_GET_EP_COUNT('SYSDBA','T1');

    行号     SEQNO       N_ROWS              
    ---------- ----------- --------------------
    1          0           3
    2          1           7

MPP 动态添加节点

一、安装数据库软件和初始数据库实例

    [dmdba@itsapp3 dm8]$ ./DMInstall.bin -i
    [dmdba@itsapp3 bin]$ ./dminit PATH=/dmdata/ db_name=its instance_name=its03

二、全局登录当前MPP环境中的任意一个节点

    1、禁止全局DDL操作
        SQL> SP_DDL_FORBIDEN(1);

    2、开启归档
        SQL> ALTER DATABASE MOUNT;
        SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmarch , TYPE=LOCAL,FILE_SIZE=128,SPACE_LIMIT=2048';
        SQL> ALTER DATABASE ARCHIVELOG;
        SQL> ALTER DATABASE OPEN;

    3、备份DDL语句
        SQL> BACKUP DATABASE DDL_CLONE BACKUPSET 'CLONE';

三、在新增节点上还原数据库

    1、复制备份文件到本地
        [dmdba@itsapp1 bak]$ scp CLONE 100.63.1.3:/dmdata/its/bak/

    2、进行恢复
        RMAN> RESTORE DATABASE '/dmdata/its/dm.ini' FROM BACKUPSET '/dmdata/its/bak/CLONE';
        RMAN> RECOVER DATABASE '/dmdata/its/dm.ini' FROM BACKUPSET '/dmdata/its/bak/CLONE';
        RMAN> RECOVER DATABASE '/dmdata/its/dm.ini' UPDATE DB_MAGIC;

四、新增配置修改配置文件

    1、dm.ini
        [dmdba@itsapp3 bin]$ vi /dmdata/its/dm.ini 
        MAL_INI = 1
        MPP_INI = 1

    2、dmmal.ini
        [dmdba@itsapp3 bin]$ vi /dmdata/its/dmmal.ini 
        MAL_CHECK_INTERVAL      = 5
        MAL_CONN_FAIL_INTERVAL  = 5
        [MAL_INST1]
            MAL_INST_NAME           = ITS01
            MAL_HOST                = 192.168.232.128
            MAL_PORT                = 17001
            MAL_INST_HOST           = 100.63.1.1
            MAL_INST_PORT           = 5236

        [MAL_INST2]
            MAL_INST_NAME           = ITS02
            MAL_HOST                = 192.168.232.129
            MAL_PORT                = 17001
            MAL_INST_HOST           = 100.63.1.2
            MAL_INST_PORT           = 5236

        [MAL_INST3]
            MAL_INST_NAME           = ITS03
            MAL_HOST                = 192.168.232.130
            MAL_PORT                = 17001
            MAL_INST_HOST           = 100.63.1.3
            MAL_INST_PORT           = 5236

五、以mount方式启动新增节点

    [dmdba@itsapp3 bin]$ ./dmserver /dmdata/its/dm.ini mount
    [dmdba@itsapp3 bin]$ ./disql
    SQL> SP_DDL_FORBIDEN(1);
    SQL> ALTER DATABASE OPEN FORCE;

六、在原有节点上分别动态增加MAL

    SF_MAL_CONFIG(1,0);
    SF_MAL_INST_ADD('MAL_INST3','ITS03','192.168.232.130',17001, '100.63.1.3',5236);
    SF_MAL_CONFIG_APPLY();
    SF_MAL_CONFIG(0,0);

    -- SF_MAL_INST_ADD('mal标签名称','实例名','mal的地址',mal的端口, '实例监听地址',实例监听端口);
    -- 需要使用本地登录方式, 每个节点都执行

七、全局登录原有集群中的一个节点, 增加MPP节点

    -- 只需登录原有的一个节点执行即可
    SF_MAL_CONFIG(1,1);
    SF_MPP_SAVE_HASHMAP();
    SF_MPP_INST_ADD('service_name3','ITS03');

MPP 主备集群

DM-MPP 环境规划

    100.63.1.1 
        主库一: 实例名: GRP1_MPP_EP01 PORT_NUM=5236 MAL_INST_DW_PORT=16001 MAL_PORT=17001 MAL_DW_PORT=18001
        备库二: 实例名: GRP2_MPP_EP22 PORT_NUM=5237 MAL_INST_DW_PORT=26001 MAL_PORT=27001 MAL-DW_PORT=28001

    100.63.1.2
        主库二: 实例名: GRP2_MPP_EP02 PORT_NUM=5236 MAL_INST_DW_PORT=16001 MAL_PORT=17001 MAL_DW_PORT=18001
        备库一: 实例名: GRP1_MPP_EP11 PORT_NUM=5237 MAL_INST_DW_PORT=26001 MAL_PORT=27001 MAL-DW_PORT=28001

    100.63.1.1 服务器上实例路径
        主库一: /dmdata/EPO1
        备库二: /dmdata/EP02

    100.63.1.2 服务器上实例路径
        主库二: /dmdata/EP02
        备库一: /dmdata/EP01

    守护进程OGUID
        GRP1的oguid:453330
        GRP2的oguid:453331

一、各节点安装数据库软件和初始化实例

    1、初始化主库一
        [dmdba@itsapp1 bin]$ ./dminit PATH=/dmdata DB_NAME=EP01 INSTANCE_NAME=GRP1_MPP_EP01

    2、初始化备库二
        [dmdba@itsapp1 bin]$ ./dminit PATH=/dmdata DB_NAME=EP02 INSTANCE_NAME=GRP1_MPP_EP22

    3、初始化主库二
        [dmdba@itsapp2 bin]$ ./dminit PATH=/dmdata DB_NAME=EP02 INSTANCE_NAME=GRP1_MPP_EP02

    4、初始化备库一
        [dmdba@itsapp2 bin]$ ./dminit PATH=/dmdata DB_NAME=EP01 INSTANCE_NAME=GRP1_MPP_EP11

二、前台启动各个实例

    1、节点一
        [dmdba@itsapp1 bin]$ ./dmserver /dmdata/EP01/dm.ini 
        [dmdba@itsapp1 bin]$ ./dmserver /dmdata/EP02/dm.ini 

    2、节点二
        [dmdba@itsapp2 bin]$ ./dmserver /dmdata/EP01/dm.ini 
        [dmdba@itsapp2 bin]$ ./dmserver /dmdata/EP02/dm.ini 

    -- 启动一次是为了后面做备份

三、主库进行备份

    1、主库一
        [dmdba@itsapp1 bin]$ ./dmrman 
        RMAN> BACKUP DATABASE '/dmdata/EP01/dm.ini' FULL BACKUPSET '/dmbak/full_database';

    2、主库二
        [dmdba@itsapp2 bin]$ ./dmrman 
        RMAN>  BACKUP DATABASE '/dmdata/EP02/dm.ini' FULL BACKUPSET '/dmbak/full_database';

四、备库进行还原

    1、备库二
        RESTORE DATABASE '/dmdata/EP02/dm.ini' FROM BACKUPSET '/dmbak/full_database';
        RECOVER DATABASE '/dmdata/EP02/dm.ini' FROM BACKUPSET '/dmbak/full_database';
        RECOVER DATABASE '/dmdata/EP02/dm.ini' UPDATE DB_MAGIC;

    2、备库一
        RESTORE DATABASE '/dmdata/EP01/dm.ini' FROM BACKUPSET '/dmbak/full_database';
        RECOVER DATABASE '/dmdata/EP01/dm.ini' FROM BACKUPSET '/dmbak/full_database';
        RECOVER DATABASE '/dmdata/EP01/dm.ini' UPDATE DB_MAGIC;

五、配置主库一

    1、dm.ini
        [dmdba@itsapp1 bin]$ vi /dmdata/EP01/dm.ini 
        INSTANCE_NAME        = GRP1_MPP_EP01
        PORT_NUM             = 5236
        DW_INACTIVE_INTERVAL = 60
        ALTER_MODE_STATUS    = 0 
        ENABLE_OFFLINE_TS    = 2 
        MAL_INI              = 1
        ARCH_INI             = 1 
        MPP_INI              = 1
        RLOG_SEND_APPLY_MON  = 64 

    2、dmmal.ini
        [dmdba@itsapp1 bin]$ vi /dmdata/EP01/dmmal.ini 

        MAL_CHECK_INTERVAL      = 5
        MAL_CONN_FAIL_INTERVAL  = 5

        [MAL_INST1]
            MAL_INST_NAME    = GRP1_MPP_EP01
            MAL_HOST         = 192.168.232.128
            MAL_PORT         = 17001
            MAL_INST_HOST    = 100.63.1.1
            MAL_INST_PORT    = 5236
            MAL_DW_PORT      = 18001
            MAL_INST_DW_PORT = 16001


        [MAL_INST2]
            MAL_INST_NAME    = GRP2_MPP_EP02
            MAL_HOST         = 192.168.232.129
            MAL_PORT         = 17001
            MAL_INST_HOST    = 100.63.1.2
            MAL_INST_PORT    = 5236
            MAL_DW_PORT      = 18001
            MAL_INST_DW_PORT = 16001

        [MAL_INST3]
            MAL_INST_NAME    = GRP1_MPP_EP11
            MAL_HOST         = 192.168.232.129
            MAL_PORT         = 27001
            MAL_INST_HOST    = 100.63.1.2
            MAL_INST_PORT    = 5237
            MAL_DW_PORT      = 28001
            MAL_INST_DW_PORT = 26001

        [MAL_INST4]
            MAL_INST_NAME    = GRP2_MPP_EP22
            MAL_HOST         = 192.168.232.128
            MAL_PORT         = 27001
            MAL_INST_HOST    = 100.63.1.1
            MAL_INST_PORT    = 5237
            MAL_DW_PORT      = 28001
            MAL_INST_DW_PORT = 26001

    3、dmarch.ini
        [dmdba@itsapp1 bin]$ vi /dmdata/EP01/dmarch.ini
        [ARCHIVE_REALTIME1]
            ARCH_TYPE = REALTIME
            ARCH_DEST = GRP1_MPP_EP11

        [ARCHIVE_LOCAL1]
            ARCH_TYPE = LOCAL
            ARCH_DEST = /dmdata/EP01/arch
            ARCH_FILE_SIZE = 128
            ARCH_SPACE_LIMIT = 0

    4、dmmpp.ctl
        [dmdba@itsapp1 bin]$ vi /dmdata/EP01/dmmpp.ini
        [service_name1]
        mpp_seq_no = 0
        mpp_inst_name = GRP1_MPP_EP01

        [service_name2]
        mpp_seq_no = 1
        mpp_inst_name = GRP2_MPP_EP02

        [dmdba@itsapp1 bin]$ ./dmctlcvt TYPE=2 SRC=/dmdata/EP01/dmmpp.ini DEST=/dmdata/EP01/dmmpp.ctl

六、配置主库二

    1、dm.ini
        [dmdba@itsapp1 bin]$ vi /dmdata/EP02/dm.ini 
        INSTANCE_NAME        = GRP2_MPP_EP02
        PORT_NUM             = 5236
        DW_INACTIVE_INTERVAL = 60
        ALTER_MODE_STATUS    = 0 
        ENABLE_OFFLINE_TS    = 2 
        MAL_INI              = 1
        ARCH_INI             = 1 
        MPP_INI              = 1
        RLOG_SEND_APPLY_MON  = 64 

    2、dmmal.ini 和 dmmpp.ctl 各节点配置相同, 复制即可
        [dmdba@itsapp1 bin]$ scp /dmdata/EP01/dmmpp.* 100.63.1.2:/dmdata/EP02/

    3、dmarch.ini
        [dmdba@itsapp2 bin]$ vi /dmdata/EP02/dmarch.ini 
        [ARCHIVE_REALTIME1]
            ARCH_TYPE = REALTIME
            ARCH_DEST = GRP2_MPP_EP22

        [ARCHIVE_LOCAL1]
            ARCH_TYPE = LOCAL
            ARCH_DEST = /dmdata/EP02/arch
            ARCH_FILE_SIZE = 128
            ARCH_SPACE_LIMIT = 0

七、配置备库一

    1、dm.ini
        [dmdba@itsapp2 bin]$ vi /dmdata/EP01/dm.ini 
        INSTANCE_NAME        = GRP1_MPP_EP11
        PORT_NUM             = 5237
        DW_INACTIVE_INTERVAL = 60
        ALTER_MODE_STATUS    = 0 
        ENABLE_OFFLINE_TS    = 2 
        MAL_INI              = 1
        ARCH_INI             = 1 
        MPP_INI              = 1
        RLOG_SEND_APPLY_MON  = 64 

    2、dmmal.ini 和 dmmpp.ctl 各节点配置相同, 复制即可
        [dmdba@itsapp1 bin]$ scp /dmdata/EP01/dmmpp.* 100.63.1.2:/dmdata/EP01/

    3、dmarch.ini
        [dmdba@itsapp2 bin]$ vi /dmdata/EP01/dmarch.ini 
        [ARCHIVE_REALTIME1]
            ARCH_TYPE = REALTIME
            ARCH_DEST = GRP1_MPP_EP01

        [ARCHIVE_LOCAL1]
            ARCH_TYPE = LOCAL
            ARCH_DEST = /dmdata/EP01/arch
            ARCH_FILE_SIZE = 128
            ARCH_SPACE_LIMIT = 0

八、配置备库二

    1、dm.ini
        [dmdba@itsapp1 bin]$ vi /dmdata/EP02/dm.ini 
        INSTANCE_NAME        = GRP2_MPP_EP22
        PORT_NUM             = 5237
        DW_INACTIVE_INTERVAL = 60
        ALTER_MODE_STATUS    = 0 
        ENABLE_OFFLINE_TS    = 2 
        MAL_INI              = 1
        ARCH_INI             = 1 
        MPP_INI              = 1
        RLOG_SEND_APPLY_MON  = 64 

    2、dmmal.ini 和 dmmpp.ctl 各节点配置相同, 复制即可
        [dmdba@itsapp1 bin]$ scp /dmdata/EP01/dmmpp.* 100.63.1.2:/dmdata/EP01/

    3、dmarch.ini
        [dmdba@itsapp1 bin]$ vi /dmdata/EP02/dmarch.ini 
        [ARCHIVE_REALTIME1]
            ARCH_TYPE = REALTIME
            ARCH_DEST = GRP2_MPP_EP02

        [ARCHIVE_LOCAL1]
            ARCH_TYPE = LOCAL
            ARCH_DEST = /dmdata/EP02/arch
            ARCH_FILE_SIZE = 128
            ARCH_SPACE_LIMIT = 0

九、启动主库一

    [dmdba@itsapp1 bin]$ ./disql SYSDBA/SYSDBA@100.63.1.1:5236#"{mpp_type=local}"
    SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
    SP_SET_OGUID(45330);        -- 注意OGUID不一样
    ALTER DATABASE PRIMARY;
    SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

十、启动主库二

    [dmdba@itsapp1 bin]$ ./disql SYSDBA/SYSDBA@100.63.1.2:5236#"{mpp_type=local}"
    SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
    SP_SET_OGUID(45331);        -- 注意OGUID不一样
    ALTER DATABASE PRIMARY;
    SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

十一、启动备库一

    [dmdba@itsapp2 bin]$ ./disql SYSDBA/SYSDBA@100.63.1.2:5237#"{mpp_type=local}"
    SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
    SP_SET_OGUID(45330);             -- 注意OGUID不一样
    ALTER DATABASE STANDBY;
    SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

十二、启动备库二

    [dmdba@itsapp1 bin]$  ./disql SYSDBA/SYSDBA@100.63.1.1:5237#"{mpp_type=local}"
    SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
    SP_SET_OGUID(45331);             -- 注意OGUID不一样
    ALTER DATABASE STANDBY;
    SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

十三、配置守护进程

    [dmdba@itsapp1 bin]$ vi /dmdata/EP01/dmwatcher.ini 
    [GRP1]
    DW_TYPE = GLOBAL                       #全局守护类型
    DW_MODE = AUTO                         #自动切换模式
    DW_ERROR_TIME = 10                     #远程守护进程故障认定时间
    INST_RECOVER_TIME = 60                 #主库守护进程启动恢复的间隔时间
    INST_ERROR_TIME = 10                   #本地实例故障认定时间
    INST_OGUID = 45330                     #守护系统唯一OGUID值
    INST_INI = /dmdata/EP01/dm.ini         #dm.ini配置文件路径
    INST_AUTO_RESTART = 1                  #打开实例的自动启动功能
    INST_STARTUP_CMD = /dm8/bin/dmserver   #命令行方式启动
    RLOG_SEND_THRESHOLD = 0                #指定主库发送日志到备库的时间阈值, 默认关闭
    RLOG_APPLY_THRESHOLD = 0               #指定备库重演日志的时间阈值, 默认关闭

    [GRP2]
    DW_TYPE = GLOBAL                        #全局守护类型
    DW_MODE = AUTO                          #自动切换模式
    DW_ERROR_TIME = 10                      #远程守护进程故障认定时间
    INST_RECOVER_TIME = 60                  #主库守护进程启动恢复的间隔时间
    INST_ERROR_TIME = 10                    #本地实例故障认定时间
    INST_OGUID = 45331                      #守护系统唯一OGUID值
    INST_INI = /dmdata/EP02/dm.ini          #dm.ini配置文件路径
    INST_AUTO_RESTART = 1                   #打开实例的自动启动功能
    INST_STARTUP_CMD = /dm8/bin/dmserver    #命令行方式启动
    RLOG_SEND_THRESHOLD = 0                 #指定主库发送日志到备库的时间阈值, 默认关闭
    RLOG_APPLY_THRESHOLD = 0                #指定备库重演日志的时间阈值, 默认关闭

    [dmdba@itsapp2 bin]$ scp /dmdata/EP01/dmwatcher.ini 100.63.1.2:/dmdata/EP01/

十四、配置监控器

    [dmdba@itsapp2 bin]$ vi /dmdata/EP01/dmmonitor.ini
    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 = 45330
    MON_DW_IP = 192.168.232.128:18001   # 主库一IP:MAL_DWPORT
    MON_DW_IP = 192.168.232.129:28001   # 备库一IP:MAL_DW_PORT

    [GRP2]
    MON_INST_OGUID = 45331
    MON_DW_IP = 192.168.232.128:18001   # 主库二IP:MAL_DW_PORT
    MON_DW_IP = 192.168.232.129:28001   # 备库二IP:MAL_DW_PORT

十五、启动dmwatcher

1、节点一
[dmdba@itsapp1 bin]$ ./dmwatcher /dmdata/EP01/dmwatcher.ini

、节点二
[dmdba@itsapp2 bin]$ ./dmwatcher /dmdata/EP01/dmwatcher.ini

十六、启动监视器

    [dmdba@itsapp2 bin]$ ./dmmonitor /dmdata/EP01/dmmonitor.ini 
    show mpp
    2022-06-13 19:59:49 
    #------------------------------------------------------------------#
        INST_NAME       EP_SEQNO  EP_IP               EP_PORT     
    0   GRP1_MPP_EP01   0         100.63.1.1          5236        
    1   GRP2_MPP_EP02   1         100.63.1.2          5236        
    #------------------------------------------------------------------#

    show global info
    2022-06-13 20:03:14 
    #================================================================================#
    GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
    GRP1             45330       TRUE            AUTO            TRUE      

    <<DATABASE GLOBAL INFO:>>
    DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
    192.168.232.128     18001        2022-06-13 20:03:14  GLOBAL    VALID     OPEN           GRP1_MPP_EP01    OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID    

    DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
    192.168.232.129     28001        2022-06-13 20:03:14  GLOBAL    VALID     OPEN           GRP1_MPP_EP11    OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    

    #--------------------------------------------------------------------------------#
    2022-06-13 20:03:14 
    #--------------------------------------------------------------------------------#
    GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
    GRP2             45331       TRUE            AUTO            TRUE      

    <<DATABASE GLOBAL INFO:>>
    DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
    192.168.232.129     18001        2022-06-13 20:03:14  GLOBAL    VALID     OPEN           GRP2_MPP_EP02    OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID    

    DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
    192.168.232.128     28001        2022-06-13 20:03:14  GLOBAL    VALID     OPEN           GRP2_MPP_EP22    OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    

    #================================================================================#

MPP 系统函数和系统视图

获取会话连接的 EP 的节点序号       SF_GET_SELF_EP_SEQNO();
根据 ROWID 获取本行数据来自哪个EP  SF_GET_EP_SEQNO(ROWID);     
获取 EP 节点配置信息               SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取当前会话连接的实例名           SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取 MPP 系统内所有 EP 的所有会话  SELECT * FROM V$SESSIONS;
获取当前连接的实例上的所有会话     SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();
获取实例 EP01 上的所有会话         SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = (SELECT DISTINCT EP_SEQNO FROM V$MPP_CFG_ITEM WHERE INST_NAME ='EP01');
获取表 TEST 在每个实例上的数据行数 CALL SP_GET_EP_COUNT('SYSDBA','TEST');
获取所接实例上的表 TEST 的使用空间 SELECT TABLE_USED_PAGES('SYSDBA','TEST');
获取每个实例上的表 TEST 使用空间   SELECT TABLE_USED_PAGES('SYSDBA','TEST'), NAME FROM V$INSTANCE;
获取所有实例上表 TEST 的总使用空间 SELECT SUM(TOTAL_SIZE) FROM (SELECT TABLE_USED_PAGES('SYSDBA','TEST') TOTAL_SIZE, NAME FROM V$INSTANCE);

DM 共享存储集群

在这里插入图片描述

允许多个数据库实例同时访问、操作同一数据库, 具有高可用、高性能、负载均衡等特性
DMDSC 支持故障自动切换和故障自动重加入, 某一个数据库实例故障后, 不会导致数据库服务无法提供

DM-DSC 集群

1、多个实例访问同一个数据库
2、数据文件和控制文件在集群中只有一份
3、每个节点都有自己REOD日志, 存储在共享存储上
4、每个节点都有自己的归档日志, 可以保存到共享存储上, 也可以保存在本地磁盘上

DM-DSC 组成

数据库
数据库实例
共享存储
通信网络
集群管理软件

共享存储上保存的文件
数据文件
控制文件
日志文件
DCR
VOTING DISK

DM-DSC 特性

  1. 高可用性: 只要集群中有一个活动节点九可以正常提供服务
  2. 高吞吐量: 多个节点同时提供数据库服务
  3. 负载均衡: 用户的连接请求被平均分配到集群的各个节点

故障处理

当系统出现故障时, DMCSS 检测故障并自动将故障节点踢出集群, 保证数据库正常提供服务, 故障节点的连接会自动切换到活动节点, 未提交的事务进行回滚

故障恢复

当某个节点故障处理完成后, DMCSS 检测到故障节点恢复时, 自动启动节点重新加入流程, 将节点重新加入集群

DMCSSM

集群监视器, DMCSSM 和 DMCSS 相互通信获取并监控整个集群系统的状态信息, DMCSSM还提供一系列命令来管理和维护集群

DCR

集群注册表, 用于存储和维护集群配置的详细信息, 整个集群环境共享DCR配置信息
包括: DMDSC、DMASM、DMCSS 资源, 实例名、监听端口、集群中故障节点信息等
DCR 必须存储在共享存储上供所有节点都可以访问
在一个集群中只能配置一个DCR磁盘

voting disk

表决磁盘, 用于记录集群成员信息, 通过表决磁盘进行心跳检测, 确定集群中节点的状态、判断节点是否出现故障
表决磁盘还用来传递命令, DMCSS通过表决磁盘传递控制命令, 通知节点执行相同命令
表决磁盘必须存储在共享存储上在一个集群中只能配置一个表决磁盘

MAL 系统

DMDSC集群存在两套MAL系统, DMASM服务器之间配置一套, dmserver之间配置一套, 一旦MAL链路出现异常, DMCSS会进行裁定, 并从集群中踢出一个节点保证集群正常运行

DM-DSC 限制

1、支持定时器, 但只有控制节点上配置的定时器生效只支持脱机配置定时器, 不支持联机配置
2、支持作业, 但只有控制节点上支持执行作业
3、不支持 HUGE 表
4、不支持外部表
5、不支持 table 级别的 space limit 功能
6、支持全文索引, 但仅支持默认词库, 需要将默认词库文件 SYSWORD.UTF8.LIB 放到 ASM 文件系统中
7、不支持 DBMS_ALERT、DBMS_LOCK 包
8、不支持数据复制
9、不能与 MPP 集群混合使用
10、不支持为表空间文件指定 mirror_path
11、不支持闪回查询, 不允许打开闪回功能

DMCSS 集群

集群同步服务, 使用DMASM集群或DMDSC集群中每个节点都需要配置一个DMCSS服务
各个节点上的DMCSS服务构成一个DMCSS集群
DMCSS集群分为: 控制节点和普通节点, 控制节点负责管理管理和监控整个DMDSC集群
当DMCSS集群出现故障时, 会自动从普通节点中选出一个控制节点

DMCSS原理

    在表决磁盘中为每个被监控对象(dmserver,dmasmsvr,dmcss) 分配一片独立的存储区域
    被监控对象定时向表决磁盘写入信息(时间戳、状态、命令、以及命令执行结果)
    DMCSS控制节点定时从表决磁盘读取信息检查被监控对象的状态变化,启动相应的处理流程
    被监控对象只能被动的接收DMCSS控制节点的命令, 执行并响应

DMCSS主要功能

    1、写入心跳信息
    2、选举DMCSS控制节点
    3、选举DMASM、DMDSC控制节点
    4、管理被监控对象的启动流程
    5、集群状态监控
    7、节点故障处理
    8、节点重新加入
    9、接收DMCSSM指令

DMCSS 选举控制节点

    1、先启动的DMCSS节点为控制节点
    2、如果同时启动, 选择节点号小的作为控制节点
    3、如果控制节点故障, 那么会将先向表决磁盘写入心跳信息的节点设置为控制节点
    4、如果控制节点故障, 同时多个节点先向表决磁盘写入心跳信息, 那么选择节点号小的作为控制节点

DMCSS 选举监控对象控制节点

    1、只有一个活动节点, 则设置活动节点为控制节点
    2、存在多个活动节点, 则选举节点号小的为控制节点

启动流程

    DMASM 和 DMDSC 集群中的实例启动后一直处于waiting状态, 等待DMCSS的启动命令
    DMCSS控制节点在选取监控对象控制节点后, 通知控制节点启动, 在控制捷尔的启动完成后再依次通知其他普通节点启动

状态检测

    DMCSS维护集群状态, 随着节点活动信息的变化, DMCSS节点会通知被监控节点执行不同的命令来控制节点启动、故障处理、重新加入等操作
    DMCSS控制节点每秒从表决磁盘读取被监控对象的心跳信息, 一旦被监控对象的时间戳再DCR_GRP_DSKCHK_CNT秒内没有变化则认为被监控对象出现异常
    DMCSS普通节点定时读取DMCSS控制节点的信息信息, 监控DMCSS运行状态
    DMCSS实例启动后, 每间隔一秒向表决磁盘指定区域写入心跳信息(包括自身状态、时间戳等) 表示DMCSS节点处于活动状态

故障处理

    DMCSS控制节点检测到实例故障后, 首先向故障实例的表决磁盘区域写入kill命令(所有实例一旦发现kill命令, 无条件自杀)

DMCSS控制节点故障处理流程

        1、活动节点重新选举DMCSS控制节点
        2、新的DMCSS控制及节点通知DMCSS故障节点对应的dmasmsver、dmserver强制退出

DMASMSVR实例故障处理流程

        1、挂起工作线程
        2、更新DCR的故障节点信息
        3、通知故障节点对应的dmserver强制退出
        4、dmasmsver进行故障恢复
        5、恢复工作线程

dmserver实例故障处理流程

        1、更新DCR故障节点信息
        2、重新选举一个控制节点
        3、通知dmserver控制节点启动故障处理流程
        4、等待dmserver故障处理结束

节点重新加入

数据库实例加入

        1、挂起工作线程
        2、修改节点的状态
        3、执行恢复操作
        4、重新进入STARTUP状态, 准备启动
        5、OPEN重新加入的节点
        6、重启工作线程
        7、执行OPEN数据库实例操作

DMASM实例加入

        1、挂起工作线程
        2、修改节点的状态
        3、执行恢复操作
        4、重新进入STARTUP状态, 准备启动
        5、OPEN重新加入的节点
        6、重启工作线程

集群指令

    DMCSS控制节点通过一系列的集群指令, 控制被监控对象的启动、故障处理切换等操作
    DMCSS控制节点向目标对象的表决磁盘指令去写入命令, 通知目标对象执行相应的命令并等待返回结果

DMASM 集群

自动存储管理器, 提供一个专用的分布式文件系统, 支持多节点同时访问、修改数据

DMASMCMD 文件系统初始化工具

    主要功能
        1、格式化ASM磁盘
        2、初始化DCR 同时指定密码
        3、初始化 voting disk
        4、导出 DCR 配置信息
        5、导入 DCR 配置信息
        6、清理 DCR 指定组中的故障节点信息
        7、创建用于模拟裸设备或块设备的磁盘文件
        8、列出指定路径下的磁盘属性
        9、联机修改DCR 磁盘, 扩展节点

DMASMSVR

    每个提供ASM服务的节点都必须启动一个DMASMSVR服务
    DMASMSVR启动时扫描/dev/raw/ 的所有裸设备或块设备、加载ASM磁盘
    DMASMSVR实例之间使用MAL系统进行通信和数据的传递
    DMASMSVR的启动、关闭、故障处理由DMCSS控制, DMASMSVR定期向表决磁盘只当的区域写入时间戳、状态、命令、命令执行结果等信息
    DMCSS控制节点定时从表决磁盘读取信息, 检查DMASMSVR的实例状态等、启动相应的处理流程
    DMASMSVR只有一个控制节点由DMCSS选举出来的, 所有DDL操作都是控制节点执行

DMASMTOOL

    管理ASM的工具
        创建磁盘组
            CREATE DISKGROUP 'disk_name' ASMDISK '/dev/raw/xxx';

        添加磁盘
            ALTER DISKGROUP 'disk_name' ADD ASMDISK '/dev/raw/xxx';

        删除磁盘组
            DROP DISKGROUP 'disk_name';

DM-DSC 启动关闭流程

启动DMDSC集群之前, 要先启动DMCSS服务和DMASM服务
DMCSS服务需要手动退出所有节点, 没有同步功能
LINUX环境下 DMASMSVR 和 dmserver 都监控了操作系统的SIGTERM信号
    执行 kill -10 则DMASMSVR 和 dmserver 服务都能正常退出
    执行 kill -2 命令 dmserver实例节点自动退出, 不影响其他节点正常运行

关闭DMDSC集群时, 一次关闭 dmserver DMASMSVR DMCSS 服务

DM-DSC 配置说明

dmdcr_cfg.ini
格式化DCR 和 voting disk的配置文件, 配置包含三类: 集群环境全局信息、集群组的信息、组内节点信息
使用dmasmcmd工具, 可以根据dmdcr_cfg.ini配置文件格式化DCR 和 voting disk

    集群全局配置信息
        DCR_VTD_PATH    Voting Disk路径
        DCR_N_GRP       集群环境包括多少个group, 取值范围1~16
        DCR_OGUID       消息标识, dmcssm登录dmcss消息校验用


    集群组信息
        DCR_GRP_TYPE	    组类型(CSS\ASM\DB)
        DCR_GRP_NAME	    组名, 16字节, 配置文件内不可重复
        DCR_GRP_N_EP	    组内节点个数N, 最大16
        DCR_GRP_EP_ARR	    组内包含的节点序列号, {0,1,2,...N-1}用户不能指定, 仅用于从DCR磁盘export出来可见
        DCR_GRP_N_ERR_EP	组内故障节点个数用户不能指定, 仅用于从DCR磁盘export出来可见
        DCR_GRP_ERR_EP_ARR	组内故障节点序列号用户不能指定, 仅用于从DCR磁盘export出来可见
        DCR_GRP_DSKCHK_CNT	磁盘心跳机制, 容错时间, 单位秒, 缺省60S, 取值范围5~600


    节点信息, 某些属性可能只针对某一类型节点, 比如SHM_KEY只针对ASM节点有效
        DCR_EP_NAME	            节点名, 16字节, 配置文件内不可重复, DB的节点名必须和dm.ini里的INSTANCE_NAME保持一致ASM的节点名必须和dmasvrmal.ini里的MAL_INST_NAME一致同一类型节点的EP_NAME不能重复
        DCR_EP_SEQNO	        组内序号, CSS/ASM不能配置, 自动分配DB可以配置, 0 ~ n_ep -1, 组内不能重复, 如不配置则自动分配
        DCR_EP_HOST	            节点IP(实例所在机器的IP地址)对DB来说, 是绑定VIP的网卡对应的物理IP地址, 若配置DCR_VIP才需要配置, 否则不需要配置CSS中设置表示DMCSSM可以通过该IP连接CSS, 可以不配置
        DCR_EP_PORT	            节点TCP监听端口(CSS/ASM/DB有效, 对应登录CSS/ASM/DB的端口号), 节点实例配置此参数, 取值范围1024~65534 发起连接端的端口在1024~65535之间随机分配特别对DB来说, DB的DCR_EP_PORT与dm.ini中的PORT_NUM不一致时, DB端口以DCR_EP_PORT为准
        DCR_EP_SHM_KEY	        共享内存标识, 数值类型(ASM有效, 初始化共享内存的标识符), 应为大于0的4字节整数
        DCR_VIP	                节点VIP(DB有效, 表示配置的虚拟IP), 需要和DCR_EP_HOST在同一网段若需要取消VIP配置, 仅需要将DB组的DCR_VIP和DCR_EP_HOST删除即可
        DCR_CHECK_PORT	        DCR检查端口号检查实例是否活动的时候用, 各实例不能冲突实例配置此参数, 取值范围1024~65535 DCR发起连接的端口在1024~65534之间随机分配
        DCR_EP_SHM_SIZE	        共享内存大小, 单位M, (ASM有效, 初始化共享内存大小), 取值范围10~1024共享内存大小与其能管理的磁盘大小的关系详见6.4节
        DCR_EP_ASM_LOAD_PATH	ASM磁盘扫描路径, Linux下一般为/dev/raw, 文件模拟情况, 必须是全路径, 不能是相对路径

dmdcr.ini

    dmcss、dmasmsvr、dmasmtool等工具的输入参数, 记录当前节点序号以及DCR磁盘路径
        DMDCR_PATH	                记录DCR磁盘路径
        DMDCR_SEQNO	                记录当前节点序号(用来获取ASM登录信息)
        DMDCR_MAL_PATH	            保存dmmal.ini配置文件的路径 , 仅对dmasmsvr有效
        DMDCR_ASM_RESTART_INTERVAL	DMCSS认定DMASM节点故障重启的时间间隔(取值0~ 86400s) , DMCSS只负责和DMDCR_SEQNO节点号相等的DMASM节点的故障重启 , 超过设置的时间后 , 如果DMASM节点的active标记仍然为FALSE , 则DMCSS会执行自动拉起 如果配置为0 , 则不会执行自动拉起操作 , 默认为60s
        DMDCR_ASM_STARTUP_CMD	    DMCSS认定DMASM节点故障后 , 执行自动拉起的命令串 , 可以配置为服务方式或命令行方式启动 , 具体可参考说明部分
        DMDCR_DB_RESTART_INTERVAL	DMCSS认定DMDSC节点故障重启的时间间隔(取值0~ 86400s) , DMCSS只负责和DMDCR_SEQNO节点号相等的DMDSC节点的故障重启 , 超过设置的时间后 , 如果DMDSC节点的active标记仍然为FALSE , 则DMCSS会执行自动拉起 如果配置为0 , 则不会执行自动拉起操作 , 默认为60s
        DMDCR_DB_STARTUP_CMD	    DMCSS认定DMDSC节点故障后 , 执行自动拉起的命令串 , 可以配置为服务方式或命令行方式启动 , 具体可参考说明部分
        DMDCR_AUTO_OPEN_CHECK	    指定时间内如果节点实例未启动 , DMCSS会自动将节点踢出集群环境 , 单位为秒 , 取值范围应大于等于30s不配置此参数时表示不启用此功能
        DMDCR_MESSAGE_CHECK	        是否对CSS通信消息启用通信体校验(只有当消息的发送端和接收端都配置为1才启用通信体校验)0: 不启用;1: 启用默认为1

dminit.ini 初始化数据库配置参数

DM-DSC 环境搭建

环境说明

      节点一: 100.63.1.8  10.10.10.8  itsdata1
      节点二: 100.63.1.9  10.10.10.9  itsdata2
    共享存储: 100.63.1.10 10.10.10.10 itsstorage

一、共享存储配置

    1、安装iscsi软件
        [root@itsstorage ~]# yum -y install scsi-target-utils iscsi-initiator-utils

    2、配置对外提供的磁盘
        [root@itsstorage ~]# iscsi-iname 
        iqn.1994-05.com.redhat:626da0b7621c
        [root@itsstorage ~]# vi /etc/tgt/targets.conf 
        <target iqn.1994-05.com.redhat:626da0b7621c>
            backing-store /dev/sdb
            backing-store /dev/sdc
            backing-store /dev/sdd
            backing-store /dev/sde
        </target>

        [root@itsstorage ~]# /etc/init.d/tgtd start

    3、查看存储信息
        [root@itsstorage ~]# tgtadm --lld iscsi --op show --mode target
        Target 1: iqn.1994-05.com.redhat:626da0b7621c
            System information:
                Driver: iscsi
                State: ready
            I_T nexus information:
            LUN information:
                LUN: 0
                    Type: controller
                    SCSI ID: IET     00010000
                    SCSI SN: beaf10
                    Size: 0 MB, Block size: 1
                    Online: Yes
                    Removable media: No
                    Prevent removal: No
                    Readonly: No
                    Backing store type: null
                    Backing store path: None
                    Backing store flags: 
                LUN: 1
                    Type: disk
                    SCSI ID: IET     00010001
                    SCSI SN: beaf11
                    Size: 10737 MB, Block size: 512
                    Online: Yes
                    Removable media: No
                    Prevent removal: No
                    Readonly: No
                    Backing store type: rdwr
                    Backing store path: /dev/sdb
                    Backing store flags: 
                LUN: 2
                    Type: disk
                    SCSI ID: IET     00010002
                    SCSI SN: beaf12
                    Size: 10737 MB, Block size: 512
                    Online: Yes
                    Removable media: No
                    Prevent removal: No
                    Readonly: No
                    Backing store type: rdwr
                    Backing store path: /dev/sdc
                    Backing store flags: 
                LUN: 3
                    Type: disk
                    SCSI ID: IET     00010003
                    SCSI SN: beaf13
                    Size: 10737 MB, Block size: 512
                    Online: Yes
                    Removable media: No
                    Prevent removal: No
                    Readonly: No
                    Backing store type: rdwr
                    Backing store path: /dev/sdd
                    Backing store flags: 
                LUN: 4
                    Type: disk
                    SCSI ID: IET     00010004
                    SCSI SN: beaf14
                    Size: 10737 MB, Block size: 512
                    Online: Yes
                    Removable media: No
                    Prevent removal: No
                    Readonly: No
                    Backing store type: rdwr
                    Backing store path: /dev/sde
                    Backing store flags: 
            Account information:
            ACL information:
                ALL
        [root@itsstorage ~]# 

二、各个节点配置存储客户端

    1、安装软件
        [root@itsdata1 ~]# yum -y install iscsi-initiator-utils

    2、各个节点扫描存储信息
        [root@itsdata1 ~]# iscsiadm -m discovery -t st -p 100.63.1.10
        Starting iscsid:                                           [  OK  ]
        100.63.1.10:3260,1 iqn.1994-05.com.redhat:626da0b7621c
        [root@itsdata1 ~]# 

    3、各个节点登录存储
        [root@itsdata1 ~]# iscsiadm -m node -T iqn.1994-05.com.redhat:626da0b7621c -p 100.63.1.10 -l
        Logging in to [iface: default, target: iqn.1994-05.com.redhat:626da0b7621c, portal: 100.63.1.10,3260] (multiple)
        Login to [iface: default, target: iqn.1994-05.com.redhat:626da0b7621c, portal: 100.63.1.10,3260] successful.
        [root@itsdata1 ~]# 

    4、各节点查看磁盘挂载情况
        [root@itsdata1 ~]# fdisk -l

        Disk /dev/sda: 42.9 GB, 42949672960 bytes
        255 heads, 63 sectors/track, 5221 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x000eb617

        Device Boot      Start         End      Blocks   Id  System
        /dev/sda1   *           1          26      204800   83  Linux
        Partition 1 does not end on cylinder boundary.
        /dev/sda2              26         157     1048576   82  Linux swap / Solaris
        Partition 2 does not end on cylinder boundary.
        /dev/sda3             157        5222    40688640   83  Linux

        Disk /dev/sdb: 10.7 GB, 10737418240 bytes
        64 heads, 32 sectors/track, 10240 cylinders
        Units = cylinders of 2048 * 512 = 1048576 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x00000000


        Disk /dev/sdc: 10.7 GB, 10737418240 bytes
        64 heads, 32 sectors/track, 10240 cylinders
        Units = cylinders of 2048 * 512 = 1048576 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x00000000


        Disk /dev/sde: 10.7 GB, 10737418240 bytes
        64 heads, 32 sectors/track, 10240 cylinders
        Units = cylinders of 2048 * 512 = 1048576 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x00000000


        Disk /dev/sdd: 10.7 GB, 10737418240 bytes
        64 heads, 32 sectors/track, 10240 cylinders
        Units = cylinders of 2048 * 512 = 1048576 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x00000000

        [root@itsdata1 ~]# 

三、各节点安装数据库软件

    [dmdba@itsdata1 dm8]$ ./DMInstall.bin -i

四、各节点配置裸设备

    [root@itsdata1 ~]# vi /etc/udev/rules.d/90-raw.rules
    ACTION=="add",KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw1 %N"
    ACTION=="add",KERNEL=="sdc",RUN+="/bin/raw /dev/raw/raw2 %N"
    ACTION=="add",KERNEL=="sdd",RUN+="/bin/raw /dev/raw/raw3 %N"
    ACTION=="add",KERNEL=="sde",RUN+="/bin/raw /dev/raw/raw4 %N"
    KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"

    [root@itsdata1 ~]# scp /etc/udev/rules.d/90-raw.rules 100.63.1.9:/etc/udev/rules.d/

    [root@itsdata1 ~]# start_udev 
    Starting udev:                                             [  OK  ]
    [root@itsdata1 ~]# partprobe /dev/sdb
    [root@itsdata1 ~]# partprobe /dev/sdc
    [root@itsdata1 ~]# partprobe /dev/sdd
    [root@itsdata1 ~]# partprobe /dev/sde
    [root@itsdata1 ~]# ls /dev/raw/ -1
    raw1
    raw2
    raw3
    raw4
    rawctl
    [root@itsdata1 ~]# 
    [root@itsdata1 ~]# blockdev --getsize64 /dev/raw/raw{1,2,3,4}
    10737418240
    10737418240
    10737418240
    10737418240
    [root@itsdata1 ~]# 

五、配置初始化配置文件dmdcr_cfg --只需在一个节点执行

    [dmdba@itsdata1 ~]$ vi /dm8/config/dmdcr_cfg.ini
    DCR_N_GRP            = 3
    DCR_VTD_PATH         = /dev/raw/raw2
    DCR_OGUID            = 63635

    # 第一组配置CSS, DCR_GRP_NAME的名称要和成员的组名称相同
    [GRP]
    DCR_GRP_TYPE         = CSS  
    DCR_GRP_NAME         = CSS
    DCR_GRP_N_EP         = 2
    DCR_GRP_DSKCHK_CNT   = 60

    [CSS]
    DCR_EP_NAME          = CSS1
    DCR_EP_HOST          = 10.10.1.8
    DCR_EP_PORT          = 9341

    [CSS]
    DCR_EP_NAME          = CSS2
    DCR_EP_HOST          = 10.10.1.9
    DCR_EP_PORT          = 9341

    # 第二组配置ASM, DCR_GRP_NAME的名称要和成员的组名称相同
    [GRP]
    DCR_GRP_TYPE         = ASM
    DCR_GRP_NAME         = ASM
    DCR_GRP_N_EP         = 2
    DCR_GRP_DSKCHK_CNT   = 60

    [ASM]
    DCR_EP_NAME          = ASM1
    DCR_EP_SHM_KEY       = 93360
    DCR_EP_SHM_SIZE      = 10
    DCR_EP_HOST          = 10.10.1.8
    DCR_EP_PORT          = 9351
    DCR_EP_ASM_LOAD_PATH = /dev/raw

    [ASM]
    DCR_EP_NAME          = ASM2
    DCR_EP_SHM_KEY       = 93361
    DCR_EP_SHM_SIZE      = 10
    DCR_EP_HOST          = 10.10.1.9
    DCR_EP_PORT          = 9351
    DCR_EP_ASM_LOAD_PATH = /dev/raw

    # 第三组配置DB, DCR_GRP_NAME的名称要和成员的组名称相同
    [GRP]
    DCR_GRP_TYPE         = DB
    DCR_GRP_NAME         = DSC
    DCR_GRP_N_EP         = 2
    DCR_GRP_DSKCHK_CNT   = 60

    [DSC]
    DCR_EP_NAME          = DSC1
    DCR_EP_SEQNO         = 0
    DCR_EP_PORT          = 5236
    DCR_CHECK_PORT       = 9741  

    [DSC]
    DCR_EP_NAME          = DSC2
    DCR_EP_SEQNO         = 1
    DCR_EP_PORT          = 5236
    DCR_CHECK_PORT       = 9741

六、创建ASM磁盘

    [dmdba@itsdata1 bin]$ ./dmasmcmd 
    ASM>CREATE DCRDISK  '/dev/raw/raw1' 'DCR'
    ASM>CREATE VOTEDISK '/dev/raw/raw2' 'VOTE'
    ASM>CREATE ASMDISK  '/dev/raw/raw3' 'LOG0'
    ASM>CREATE ASMDISK  '/dev/raw/raw4' 'DATA0'
    /* 只需要再节点一执行 */

七、根据初始化配置文件dmdcr_cfg.ini 进行初始化

    ASM>INIT DCRDISK  '/dev/raw/raw1' FROM  '/dm8/config/dmdcr_cfg.ini' IDENTIFIED BY '123456'  -- DCR磁盘可以指定其他ASM磁盘
    ASM>INIT VOTEDISK '/dev/raw/raw2' FROM  '/dm8/config/dmdcr_cfg.ini'                         -- VOTEDISK必须和dmdcr_cfg.ini中配置的一样
    /* 只需要再节点一执行 */

八、配置ASM使用的mal系统 dmasvrmal.ini

    [dmdba@itsdata1 ~]$ vi /dm8/config/dmasvrmal.ini
    [MAL_INST1]
    MAL_INST_NAME = ASM1        # 该参数要和 dmdcr_cfg.ini 中的 DCR_EP_NAME 保持一致
    MAL_HOST      = 10.10.1.8
    MAL_PORT      = 7236

    [MAL_INST2]
    MAL_INST_NAME = ASM2
    MAL_HOST      = 10.10.1.9
    MAL_PORT      = 7236

九、配置DCR启动配置文件 dmdcr.ini

    1、节点一配置
        [dmdba@itsdata1 bin]$ vi /dm8/config/dmdcr.ini
        DMDCR_PATH                 = /dev/raw/raw1
        DMDCR_MAL_PATH             = /dm8/config/dmasvrmal.ini
        DMDCR_SEQNO                = 0
        DMDCR_ASM_RESTART_INTERVAL = 10
        DMDCR_ASM_STARTUP_CMD      = /dm8/bin/dmasmsvr  dcr_ini=/dm8/config/dmdcr.ini
        DMDCR_DB_RESTART_INTERVAL  = 30
        DMDCR_DB_STARTUP_CMD       = /dm8/bin/dmserver  path=/dm8/config/dsc1/dm.ini dcr_ini=/dm8/config/dmdcr.ini

    2、节点二配置
        [dmdba@itsdata2 bin]$ vi /dm8/config/dmdcr.ini
        DMDCR_PATH                 = /dev/raw/raw1
        DMDCR_MAL_PATH             = /dm8/config/dmasvrmal.ini     
        DMDCR_SEQNO                = 1
        DMDCR_ASM_RESTART_INTERVAL = 10
        DMDCR_ASM_STARTUP_CMD      = /dm8/bin/dmasmsvr  dcr_ini=/dm8/config/dmdcr.ini
        DMDCR_DB_RESTART_INTERVAL  = 30
        DMDCR_DB_STARTUP_CMD       = /dm8/bin/dmserver  path=/dm8/config/dsc2/dm.ini dcr_ini=/dm8/config/dmdcr.ini

    /* 两个节点的 DMDCR_SEQNO 参数不能相同要唯一 path后面的dm.ini参数位置也不一样 */

十、启动DMCSS集群

    1、节点一
        [dmdba@itsdata1 bin]$ ./dmcss DCR_INI=/dm8/config/dmdcr.ini 

    2、节点二
        [dmdba@itsdata2 bin]$ ./dmcss DCR_INI=/dm8/config/dmdcr.ini

十一、创建ASM磁盘组

    [dmdba@itsdata1 bin]$ ./dmasmtool  dcr_ini=/dm8/config/dmdcr.ini 
    DMASMTOOL V8
    ASM>CREATE DISKGROUP 'DMLOG' ASMDISK '/dev/raw/raw3'
    ASM>CREATE DISKGROUP 'DMDATA' ASMDISK '/dev/raw/raw4'
    ASM>ls
    +
    disk groups total [4]......
    NO.1 	 name: DMLOG
    NO.2 	 name: DMDATA
    NO.3 	 name: VOTE
    NO.4 	 name: DCR
    Used time: 0.688(ms).
    ASM>

十二、初始化数据库实例 – 只需要在一个节点执行

    [dmdba@itsdata1 bin]$ vi /dm8/config/dminit.ini
    db_name        = DSC
    system_path    = +DMDATA/data
    system         = +DMDATA/data/dsc/system.dbf
    system_size    = 128
    roll           = +DMDATA/data/dsc/roll.dbf
    roll_size      = 128
    main           = +DMDATA/data/dsc/main.dbf
    main_size      = 128
    ctl_path       = +DMDATA/data/dsc/dm.ctl
    ctl_size       = 8
    log_size       = 1024
    dcr_path       = /dev/raw/raw1   #dcr 磁盘路径, 目前不支持 asm, 只能是裸设备
    dcr_seqno      = 0
    auto_overwrite = 1

    # inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
    [DSC1]
    config_path    = /dm8/config/dsc1
    port_num       = 5236
    mal_host       = 10.10.1.8
    mal_port       = 9236
    log_path       = +DMLOG/log/DSC1_log01.log
    log_path       = +DMLOG/log/DSC1_log02.log

    #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
    [DSC2]
    config_path    = /dm8/config/dsc2
    port_num       = 5236
    mal_host       = 10.10.1.9
    mal_port       = 9236
    log_path       = +DMLOG/log/DSC2_log01.log
    log_path       = +DMLOG/log/DSC2_log02.log

    [dmdba@itsdata1 bin]$ ./dminit control=/dm8/config/dminit.ini
    [dmdba@itsdata1 bin]$ scp -r /dm8/config/dsc2 100.63.1.9:/dm8/config/

十三、注册DMCSS服务

    1、节点一
        [root@itsdata1 root]# ./dm_service_installer.sh -t dmcss -p css1 -dcr_ini /dm8/config/dmdcr.ini

    2、节点二
        [root@itsdata2 root]# ./dm_service_installer.sh -t dmcss -p css2 -dcr_ini /dm8/config/dmdcr.ini

十四、前台关闭CSS服务, 以服务方式启动

    1、节点一
        [root@itsdata1 ~]# /etc/init.d/DmCSSServicecss1 start
        Starting DmCSSServicecss1:                                 [ OK ]
        [root@itsdata1 ~]# 

    2、节点二
        [root@itsdata2 root]# /etc/init.d/DmCSSServicecss2 start
        Starting DmCSSServicecss2:                                 [ OK ]
        [root@itsdata2 root]# 

十五、配置DMCSSM监控系统

    [dmdba@itsdata1 bin]$ vi /dm8/config/dmcssm.ini
    CSSM_OGUID           = 63635
    CSSM_CSS_IP          = 10.10.1.8:9341
    CSSM_CSS_IP          = 10.10.1.9:9341
    CSSM_LOG_PATH        =/dm8/log
    CSSM_LOG_FILE_SIZE   = 1024
    CSSM_LOG_SPACE_LIMIT = 0

    [dmdba@itsdata1 bin]$ ./dmcssm ini_path=/dm8/config/dmcssm.ini
    show                -- 输入命令
    monitor current time:2022-06-14 15:01:17, n_group:3
    =================== group[name = CSS, seq = 0, type = CSS, Control Node = 0] ========================================
    [CSS1] auto check = TRUE, global info:
    [ASM1] auto restart = TRUE
    [DSC1] auto restart = TRUE

    [CSS2] auto check = TRUE, global info:
    [ASM2] auto restart = TRUE
    [DSC2] auto restart = TRUE

    -- CSS集群
    ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
        2022-06-14 15:01:16    CSS1          0         9341    Control Node OPEN               WORKING      OK           TRUE         2106423           2106633         
        2022-06-14 15:01:16    CSS2          1         9341    Normal Node  OPEN               WORKING      OK           TRUE         2108780           2108985         

    =================== group[name = ASM, seq = 1, type = ASM, Control Node = 0] ========================================
    n_ok_ep = 2
    ok_ep_arr(index, seqno):
    (0, 0)
    (1, 1)

    sta = OPEN, sub_sta = STARTUP
    break ep = NULL
    recover ep = NULL
    -- ASM 集群
    crash process over flag is TRUE
    ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
        2022-06-14 15:01:16    ASM1          0         9351    Control Node OPEN               WORKING      OK           TRUE         2114352           2114538         
        2022-06-14 15:01:16    ASM2          1         9351    Normal Node  OPEN               WORKING      OK           TRUE         2116074           2116256         

    =================== group[name = DSC, seq = 2, type = DB, Control Node = 0] ========================================
    n_ok_ep = 2
    ok_ep_arr(index, seqno):
    (0, 0)
    (1, 1)

    sta = OPEN, sub_sta = STARTUP
    break ep = NULL
    recover ep = NULL
    -- DSC 集群
    crash process over flag is TRUE
    ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
        2022-06-14 15:01:16    DSC1          0         5236    Control Node OPEN               WORKING      OK           TRUE         2190357           2190484         
        2022-06-14 15:01:16    DSC2          1         5236    Normal Node  OPEN               WORKING      OK           TRUE         2191321           2191447         
    ==================================================================================================================

十六、配置客户端访问

    [root@itsdata1 ~]# vi /etc/dm_svc.conf 
    TIME_ZONE=(480)
    LANGUAGE=(en)
    dmdsc=(100.63.1.8:5236,100.63.1.9:5236)

    [dmdba@itsdata1 bin]$ ./disql SYSDBA/SYSDBA@dmdsc
    SQL> SELECT * FROM V$DSC_EP_INFO;

    LINEID     EP_NAME EP_SEQNO    EP_GUID              EP_TIMESTAMP         EP_MODE      EP_STATUS
    ---------- ------- ----------- -------------------- -------------------- ------------ ---------
    1          DSC1    0           2190357              2190635              Control Node OK
    2          DSC2    1           2191321              2191598              Normal Node  OK

DM-DSC 故障重连机制

1、关闭节点一
[root@itsdata1 root]# /etc/init.d/DmCSSServicecss1 stop

2、客户端可以正常连接并且不受限制
[dmdba@itsdata2 bin]$ ./disql SYSDBA/SYSDBA@dmdsc
SQL> select * from t1;

LINEID     ID         
---------- -----------
1          0

SQL> INSERT INTO T1 VALUES(1);
SQL> COMMIT;
SQL>                          select * from t1;
LINEID     ID         
---------- -----------
1          0
2          1

show

monitor current time:2022-06-14 15:33:47, n_group:3
=================== group[name = CSS, seq = 0, type = CSS, Control Node = 1] ========================================

[CSS1] auto check = FALSE, global info:
Connect to [CSS1] failed, please check the network or the CSSM_CSS_IP config in [/dm8/config/dmcssm.ini] .
[CSS2] auto check = TRUE, global info:
[ASM2] auto restart = TRUE
[DSC2] auto restart = TRUE


ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
    2022-06-14 15:33:46    CSS1          0         9341    Normal Node  OPEN               SYSHALT      OK           FALSE        2106423           2108332         
    2022-06-14 15:33:46    CSS2          1         9341    Control Node OPEN               WORKING      OK           TRUE         2108780           2110910         

=================== group[name = ASM, seq = 1, type = ASM, Control Node = 1] ========================================

n_ok_ep = 1
ok_ep_arr(index, seqno):
(0, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
    2022-06-14 15:33:46    ASM1          0         9351    Normal Node  OPEN               SYSHALT      ERROR        FALSE        2114352           2116250         
    2022-06-14 15:33:46    ASM2          1         9351    Control Node OPEN               WORKING      OK           TRUE         2116074           2118185         

=================== group[name = DSC, seq = 2, type = DB, Control Node = 1] ========================================

n_ok_ep = 1
ok_ep_arr(index, seqno):
(0, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
    2022-06-14 15:33:46    DSC1          0         5236    Normal Node  OPEN               SYSHALT      ERROR        FALSE        2190357           2192196         
    2022-06-14 15:33:46    DSC2          1         5236    Control Node OPEN               WORKING      OK           TRUE         2191321           2193377         

==================================================================================================================

DM-DSC 故障节点字都加入

[root@itsdata1 root]# /etc/init.d/DmCSSServicecss1 start

show

monitor current time:2022-06-14 15:36:57, n_group:3
=================== group[name = CSS, seq = 0, type = CSS, Control Node = 1] ========================================
[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = TRUE
[DSC1] auto restart = TRUE

[CSS2] auto check = TRUE, global info:
[ASM2] auto restart = TRUE
[DSC2] auto restart = TRUE
ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
    2022-06-14 15:36:57    CSS1          0         9341    Normal Node  OPEN               WORKING      OK           TRUE         2796560           2796706         
    2022-06-14 15:36:57    CSS2          1         9341    Control Node OPEN               WORKING      OK           TRUE         2108780           2111098         
=================== group[name = ASM, seq = 1, type = ASM, Control Node = 1] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
    2022-06-14 15:36:57    ASM1          0         9351    Normal Node  OPEN               WORKING      OK           TRUE         2803462           2803584         
    2022-06-14 15:36:57    ASM2          1         9351    Control Node OPEN               WORKING      OK           TRUE         2116074           2118374         

=================== group[name = DSC, seq = 2, type = DB, Control Node = 0] ========================================
n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL
crash process over flag is TRUE
ep:	css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts              
    2022-06-14 15:36:57    DSC1          0         5236    Control Node OPEN               WORKING      OK           TRUE         2898145           2898210         
    2022-06-14 15:36:57    DSC2          1         5236    Normal Node  OPEN               WORKING      OK           TRUE         2191321           2193565         

==================================================================================================================

DM-DSC 性能视图

V$DSC_EP_INFO                   显示实例信息, 登录任意节点查询得到的结果一致
V$DSC_GBS_POOL                  显示 GBS 控制结构的信息, 仅显示登录节点的信息
V$DSC_GBS_POOLS_DETAIL          显示分片的 GBS_POOL 详细信息, 仅显示登录节点的信息
V$DSC_GBS_CTL                   显示 GBS 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_DETAIL            显示 GBS 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_LRU_FIRST         显示 GBS 控制块 LRU 链表首页信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_LRU_FIRST_DETAIL  显示 GBS 控制块 LRU 链表首页详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_LRU_LAST          显示 GBS 控制块 LRU 链表尾页信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_CTL_LRU_LAST_DETAIL   显示 GBS 控制块 LRU 链表尾页详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GBS_REQUEST_CTL           显示等待 GBS 控制块的请求信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_POOL                  显示 LBS 控制结构的信息, 仅显示登录节点的信息
V$DSC_LBS_POOLS_DETAIL          显示分片的 LBS_POOL 详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL                   显示 LBS 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_LRU_FIRST         显示 LBS 的 LRU_FIRST 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_LRU_LAST          显示 LBS 的 LRU_LAST 控制块信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_DETAIL            显示 LBS 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_LRU_FIRST_DETAIL  显示 LBS 的 LRU_FIRST 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_LBS_CTL_LRU_LAST_DETAIL   显示 LBS 的 LRU_LAST 控制块详细信息多个 pool, 依次扫描, 仅显示登录节点的信息
V$DSC_GTV_SYS                   显示 GTV 控制结构的信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据无效
V$DSC_GTV_TINFO                 显示 TINFO 控制结构的信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据为空暂时没有什么用, 查询结果为空
V$DSC_GTV_ACTIVE_TRX            显示全局活动事务信息, 仅登录集群环境控制节点才能获取数据, 登录其他节点返回数据为空暂时没有什么用, 查询结果为空
V$DSC_LOCK                      显示全局活动的事务锁信息, 登录任意节点查询得到的结果一致
V$DSC_TRX                       显示所有活动事务的信息通过该视图可以查看所有系统中所有的事务以及相关信息, 如锁信息等, 登录任意节点查询得到的结果一致
V$DSC_TRXWAIT                   显示事务等待信息, 登录任意节点查询得到的结果一致
V$DSC_TRX_VIEW                  显示当前事务可见的所有活动事务视图信息根据达梦多版本规则, 通过该视图可以查询系统中自己所见的事务信息;可以通过与 v$dsc_trx 表的连接查询它所见事务的具体信息, 登录任意节点查询得到的结果一致
V$ASMATTR                       如果使用有 ASM 文件系统, 可通过此视图查看 ASM 文件系统相关属性, 登录任意节点查询得到的结果一致
V$ASMGROUP                      如果使用有 ASM 文件系统, 可通过此视图查看 ASM 磁盘组信息, 登录任意节点查询得到的结果一致
V$ASMDISK                       如果使用有 ASM 文件系统, 可通过此视图查看所有的 ASM 磁盘信息, 登录任意节点查询得到的结果一致
V$ASMFILE                       如果使用有 ASM 文件系统, 可通过此视图查看所有的 ASM 文件信息, 登录任意节点查询得到的结果一致
V$DCR_INFO                      查看 DCR 配置的全局信息, 登录任意节点查询得到的结果一致
V$DCR_GROUP                     查看 DCR 配置的组信息, 登录任意节点查询得到的结果一致
V$DCR_EP                        查看 DCR 配置的节点信息, 登录任意节点查询得到的结果一致
V$DSC_REQUEST_STATISTIC         统计 DSC 环境内 TYPE 类型请求时间, 仅显示登录节点的信息
V$DSC_REQUEST_PAGE_STATISTIC    统计 lbs_XX 类型最耗时的前 100 页地址信息, 仅显示登录节点的信息
V$DSC_CRASH_OVER_INFO           显示 DSC 环境各节点数据页最小first_modified_lsn, 以及故障节点 file_lsn如果活动节点 buffer 中不存在更新页则 min_first_modified_lsn 为 NULL;节点故障后, 只有在所有 OK 节点 min_first_modified_lsn 都大于或等于故障节点file_lsn 之后, 才允许故障节点重加入;满足所有 OK 节点 min_first_modified_lsn都大于 crash_lsn 之后, crash_lsn 会清零
V$DSC_GLS_SYS                   显示 DSC 环境下的系统全局封锁相关信息


​详细内容请参考官方文档:​​https://eco.dameng.com​​

更多详情请访问达梦在线服务平台 https://eco.dameng.com/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值