达梦实时主备集群部署

1.部署主备机群

1.1 环境准备

     安装准备前先在两台主备服务器安装好数据库,本示例中组名为“GRP1” ,配置为实时主备,主库命名为“CB01” ,备库命名为“CB02”。

机器名IP地址初始状态操作系统备注
DW_1192.168.23.166 192.168.23.166主库 麒麟V10

内网:192.168.23.166

外网:192.168.23.166

DW_2192.168.23.177 192.168.23.177备库 

内网:192.168.23.177

外网:192.168.23.177

DW_3192.168.23.188确认监视器

端口划分

实例名PORT_NUMMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORT
CB0158005337192.168.23.16653385339
CB0258005337192.168.23.17753385339

MAL系统是基于 TCP  协议实现的一种内部通信机制,DM通过 MAL系统实现 Redo日志传输, 以及其他一 些实例间的消息通讯。

守护进程 (dmwatcher ) 是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息, 接收本地守护进程的消息和命令;

监视器 (dmmonitor) 接收守护进程的消息,并向守护进程发送命令;数据库实例与监视器之间没有直接的消 息交互;

守护进程解析并执行监视器发起的各种命令 (Switchover/Takeover/Open force  等) ,并在必要时通知数据库实例执行相应的操作。

MAL_DW_PORT:守护进程监听端口,其他守护进程或监视器使用 MAL_HOST + MAL_DW_ PORT创建 TCP 连 接。监视器配置文件 dmmonitor.ini  中,MON_DW_ IP  就是一组 MAL_HOST: MAL_DW_PORT。

MAL_INST_DW_PORT:实例对守护进程的监听端口,守护进程使用 MAL_HOST + MAL_INST_DW_PORT  创建到实例的 TCP连接。

1.2主库节点初始化实例

按实际需要初始化实例:

本例只指定数据库存放路径、DB_NAME、INSTANCE_NAME,页大小为32k,其它参数使用默认值:

[dmdba@kylin bin]$ ./dminit path=/dm8/dmdata DB_NAME=CB INSTANCE_NAME=CB01 PORT_NUM=5800 page_size=32

启动主库验证实例能否正常启动,启动完成后退出。

[dmdba@kylin bin]$ ./dmserver /dm8/dmdata/CB/dm.ini

1.3注册服务并启动实例

[root@kylin dm8]# cd script/root/
[root@kylin root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm8/dmdata/CB/dm.ini -p CB
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCB.service → /usr/lib/systemd/system/DmServiceCB.service.
创建服务(DmServiceCB)完成

关闭DmServiceCB服务开机自启动

[root@kylin root]# systemctl disable DmServiceCB.service 
Removed /etc/systemd/system/multi-user.target.wants/DmServiceCB.service.

启动DmServiceCB服务

[dmdba@kylin bin]$ ./DmServiceCB start
Starting DmServiceCB: 
                                                           [ OK ]

1.4启动归档模式

[dmdba@kylin bin]$ ./disql SYSDBA/SYSDBA:5800

服务器[LOCALHOST:5800]:处于普通打开状态
登录使用时间 : 3.788(ms)
disql V8
SQL> alter database mount;
操作已执行
已用时间: 2.191(毫秒). 执行号:0.
SQL> alter database archivelog;
操作已执行
已用时间: 4.864(毫秒). 执行号:0.
SQL> alter database add archivelog 'dest=/dmdata/arch,type=local,file_size=128,space_limit=0';
操作已执行
已用时间: 1.730(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 10.293(毫秒). 执行号:0.
SQL> select arch_mode from v$database;

行号     ARCH_MODE
---------- ---------
1          Y

已用时间: 0.891(毫秒). 执行号:501.
SQL> 

1.5使用主库备份还原备库

1.主库创建备份目录

我的在 /dm8/dmdata/CB/CB_01(路劲自己创)

2.备份主库:

[dmdba@kylin bin]$ ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/dmdata/CB/dm.ini' FULL TO CB_01 BACKUPSET  '/dm8/dmdata/CB/back/CB_01'"

可以使用联机备份:

SQL> backup database full backupset '/dm8/dmdata/CB/back/CB_FULL_01';

3.主库备份后创建测试表:

创建测试表造数据

[dmdba@kylin bin]$ ./disql SYSDBA/SYSDBA:5800

服务器[LOCALHOST:5800]:处于普通打开状态
登录使用时间 : 3.480(ms)
disql V8
SQL> create tablespace susu datafile '/dm8/dmdata/CB/susu.DBF' size 128;
操作已执行
已用时间: 38.463(毫秒). 执行号:901.
SQL> create user ss identified by WYFwyf123 default tablespace susu; 
操作已执行
已用时间: 12.860(毫秒). 执行号:902.
SQL> create table ss.ss(C1 INT, time datetime);
操作已执行
已用时间: 12.305(毫秒). 执行号:903.
SQL> insert into ss.ss values (1,sysdate);
影响行数 1

已用时间: 0.750(毫秒). 执行号:904.
SQL> commit;
操作已执行
已用时间: 1.261(毫秒). 执行号:905.
SQL> select * from ss.ss;

行号     C1          TIME                      
---------- ----------- --------------------------
1          1           2024-06-05 16:00:28.000000

已用时间: 1.171(毫秒). 执行号:906.

4.到备库上创建备份目录和数据库文件目录:

mkdir -p  /dm8/back

5.主备上拷贝备份到备库

[dmdba@kylin bin]$ scp -r /dm8/dmdata/CB/back/CB_FULL_01// 192.168.23.177:/dm8/back

Authorized users only. All activities may be monitored and reported.
dmdba@192.168.23.177's password: 
CB_FULL_01.meta                                          100%   98KB  39.5MB/s   00:00    
CB_FULL_01.bak                                           100%   25MB 148.4MB/s   00:00    

1.6初始化备库实例

[dmdba@kylin bin]$ ./dminit PATH=/dm8/dmdata DB_NAME=CB INSTANCE_NAME=CB02 PORT_NUM=5800 page_size=32

启动备库验证实例能否正常启动:

[dmdba@kylin bin]$ ./dmserver /dm8/dmdata/CB/dm.ini 

注册服务并启动实例:

[root@kylin dm8]# cd script/root/
[root@kylin root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm8/dmdata/CB/dm.ini -p CB
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceCB.service → /usr/lib/systemd/system/DmServiceCB.service.
创建服务(DmServiceCB)完成

关闭DmServiceCB服务开机自启动

[root@kylin root]# systemctl disable DmServiceCB.service 
Removed /etc/systemd/system/multi-user.target.wants/DmServiceCB.service.

启动DmServiceCB服务

[dmdba@kylin bin]$ DmServiceCB start
Starting DmServiceCB: 
                                                           [ OK ]

开启归档模式

[dmdba@kylin bin]$ ./disql SYSDBA/SYSDBA:5800

服务器[LOCALHOST:5800]:处于普通打开状态
登录使用时间 : 3.992(ms)
disql V8

SQL> alter database mount;
操作已执行
已用时间: 2.242(毫秒). 执行号:0.

SQL> alter database add archivelog 'DEST=/dmdata/arch,type=local,FILE_SIZE=128,space_limit=0';
操作已执行
已用时间: 1.721(毫秒). 执行号:0.

SQL> alter database archivelog;
操作已执行
已用时间: 6.216(毫秒). 执行号:0.

SQL> alter database open;
操作已执行
已用时间: 6.914(毫秒). 执行号:0.

SQL> select arch_mode from v$database;

行号     ARCH_MODE
---------- ---------
1          Y

已用时间: 1.151(毫秒). 执行号:501.

1.7备库还原

[dmdba@kylin bin]$ cd /dm8/bin
[dmdba@kylin bin]$ ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/dmdata/CB/dm.ini' FROM BACKUPSET '/dm8/back/CB_FULL_01'"

[dmdba@kylin bin]$ ./dmrman CTLSTMT="RECOVER DATABASE  '/dm8/dmdata/CB/dm.ini'  FROM  BACKUPSET '/dm8/back/CB_FULL_01'"

[dmdba@kylin bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/CB/dm.ini' UPDATE DB_MAGIC"

1.8修改主备的 dm.ini 参数

修改主备库参数,注意 2 个库的 instance_name 参数不同。


INSTANCE_NAME = CB01

PORT_NUM = 5800    #数据库实例监听端口
ALTER_MODE_STATUS = 0    #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2    #不允许备库 OFFLINE  表空间
MAL_INI = 1    #打开 MAL  系统
ARCH_INI = 1    #打开归档配置

1.9配置主备库 dmmal.ini 文件

主备库编辑dmmal.ini文件:集群中所有节点内容必须一致。

vi dmmal.ini

添加内容:

MAL_CHECK_INTERVAL = 5             #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5         #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = CB01               #与dm.ini中的INSTANCE_NAME一致 
MAL_HOST = 192.168.23.166          #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338                    #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.23.166     #实例的对外服务 IP 地址
MAL_INST_PORT = 5800               # 实例的对外服务端口, 和dm.ini 中的 PORT_NUM
 一致
MAL_INST_DW_PORT = 5337            #实例监听守护进程TCP 连接的端口
MAL_DW_PORT = 5339                 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME=CB02                 #实例名,和dm.ini中 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.23.177          #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5338                    #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.23.177     #实例的对外服务 IP 地址
MAL_INST_PORT = 5800               # 实例的对外服务端口, 和dm.ini 中的 PORT_NUM
 一致
MAL_INST_DW_PORT = 5337            #实例监听守护进程TCP 连接的端口
MAL_DW_PORT = 5339                 #实例对应的守护进程监听 TCP 连接的端口

1.10配置主备库的归档 dmarch.ini 文件

主库的:

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME      #实时归档类型
ARCH_DEST = CB02          #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL         #本地归档类型
ARCH_DEST = /dmdata/arch  #本地归档文件存放路径
ARCH_FILE_SIZE = 128      #单位 Mb ,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0      #单位 Mb ,0  表示无限制,范围 1024~4294967294M

1.11主备库配置守护进程

编辑数据守护配置文件:

vi dmwatcher.ini

添加内容:

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

1.12以 mount 模式启动主备库

[dmdba@kylin bin]$ ./dmserver /dm8/dmdata/CB/dm.ini mount
[dmdba@kylin bin]$ ./dmserver /dm8/dmdata/CB/dm.ini mount

1.13设置 OGUID 并修改主备库模式

启动主备库到mount,设置oguid,修改数据库模式

主库:
[dmdba@kylin bin]$ ./disql SYSDBA/SYSDBA:5800

服务器[LOCALHOST:5800]:处于普通配置状态
登录使用时间 : 3.646(ms)
disql V8
SQL> sp_set_oguid(20220610);
修改为主库模式:
SQL> alter database primary;

备库:
[dmdba@kylin bin]$ ./disql SYSDBA/SYSDBA:5800

服务器[LOCALHOST:5800]:处于普通配置状态
登录使用时间 : 3.358(ms)
disql V8
SQL> sp_set_oguid(20220610);
修改为备库模式
SQL> alter database standby;

1.14配置监控器

本例为自动切换需要配置确认监视器dmmonitor.ini文件(确认监视器只能配一个,一般选择主备库以外的其他机器,安装了达梦服务端的即可),其中 MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。
vi dmmonitor.ini
添加内容:

MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/data/DAMENG/log/ #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s  定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 20220610    #组 GRP1的唯一OGUID值
MON_DW_IP = 192.168.23.166:5339
MON_DW_IP = 192.168.23.177:5339

1.15启动数据守护和监控器

数据守护

主备库启动守护进程:(会自动启动数据库)
[dmdba@kylin bin]$ ./dmwatcher /dm8/dmdata/CB/dmwatcher.ini 
[dmdba@kylin bin]$ ./dmwatcher /dm8/dmdata/CB/dmwatcher.ini 

监控器

[dmdba@kylin bin]$ ./dmmonitor /dm8/data/SUSU/dmmonitor.ini 

都要open状态才成功,感谢观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值