暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

达梦主备架构,数据守护与读写分离集群,过程探索与实践

原创 范伟林 2021-08-24
1554

前言

达梦主备架构实战演练,对于Oracle的Aactive DataGuard我们都很熟悉,当然达梦也有自己的一套主备集群方案,称作DataWatch AND ReadWriteShunt数据守护与读写分离集群,本质是应用场景的不同,在达梦的DSC和MPP架构依然适用。

个人感觉主备集群架构做得比较成熟,从架构图可以看到关键进程为dmwatcher守护进程,监视实例的状态;数据库本身传输归档日志到备库进行应用,数据库本身的进程为dmserver;因为达梦为单进程多线程的,不像Oracle那样多进程的进行工作,可以看到每个进程在干嘛。
dmmonitor进程监视整个主备集群的状态,可以做到自动切换。

image.png

环境信息

操作系统版本:中标麒麟NeoKylin 7
数据库版本:DM8

IP和端口规划

主机名 公网IP 实例端口 私网MAL IP 私网端口MAL_PORT 守护进程端口MAL_DW_PORT 实例守护进程端口MAL_INST_DW_PORT
dm-p 192.168.36.21 1661 10.10.10.21 1662 1663 1664
dm-s 192.168.36.22 1771 10.10.10.22 1772 1773 1774

Note:涉及的端口比较多,需要自行规划好。

数据库信息规划

OGUID:166667
数据库名:DMBJ
实例名:DMBJ_RT_01、DMBJ_RT_02

一、数据库安装

Note:主库和备库均安装好达梦数据库软件。

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

创建用户

groupadd dinstall
useradd -g dinstall dmdba

passwd dmdba

创建目录

mkdir -p /dm8/dmdbms
chown dmdba.dinstall -R /dm8
chmod 775 -R /dm8

配置资源限制

vi /etc/security/limits.conf

dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard stack 32768
dmdba soft stack 16384

配置用户环境变量

vi .bash_profile

export DM_HOME=/dm8/dmdbms
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
export PATH=$DM_HOME/bin:$PATH


安装

mount dm8_20210818_x86_rh7_64_ent_8.1.2.18_pack13.iso /mnt

su - dmdba
cd /mnt
./DMInstall.bin -i

Please select the installer's language (E/e:English C/c:Chinese) [E/e]:
Extract install files..........
Welcome to DM DBMS Installer

Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n

Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:
TimeZone:
[ 1]: GTM-12=West Date Line
[ 2]: GTM-11=Samoa
[ 3]: GTM-10=Hawaii
[ 4]: GTM-09=Alaska
[ 5]: GTM-08=Pacific(America and Canada)
[ 6]: GTM-07=Arizona
[ 7]: GTM-06=Central(America and Canada)
[ 8]: GTM-05=East(America and Canada)
[ 9]: GTM-04=Atlantic(America and Canada)
[10]: GTM-03=Brasilia
[11]: GTM-02=Middle Atlantic
[12]: GTM-01=Azores
[13]: GTM=Greenwich Mean Time
[14]: GTM+01=Sarajevo
[15]: GTM+02=Cairo
[16]: GTM+03=Moscow
[17]: GTM+04=AbuDhabi
[18]: GTM+05=Islamabad
[19]: GTM+06=Dakar
[20]: GTM+07=BangKok,Hanoi
[21]: GTM+08=China
[22]: GTM+09=Seoul
[23]: GTM+10=Guam
[24]: GTM+11=Solomon
[25]: GTM+12=Fiji
[26]: GTM+13=Nukualofa
[27]: GTM+14=Kiribati
Please Select the TimeZone [21]:

Installation Type:
1 Typical
2 Server
3 Client
4 Custom
Please Input the number of the Installation Type [1 Typical]:
Require Space: 1263M

Please Input the install path [/home/dmdba/dmdbms]:/dm8/dmdbms
Available Space:89G
Please Confirm the install path(/dm8/dmdbms)? (Y/y:Yes N/n:No) [Y/y]:

Pre-Installation Summary
Installation Location: /dm8/dmdbms
Require Space: 1263M
Available Space: 89G
Version Information: 
Expire Date: 
Installation Type: Typical
Confirm to Install? (Y/y:Yes N/n:No):y
2021-08-23 14:07:45 
[INFO] Installing DM DBMS...
2021-08-23 14:07:45 
[INFO] Installing BASE Module...
2021-08-23 14:07:49 
[INFO] Installing SERVER Module...
2021-08-23 14:07:49 
[INFO] Installing CLIENT Module...
2021-08-23 14:07:52 
[INFO] Installing DRIVERS Module...
2021-08-23 14:07:55 
[INFO] Installing MANUAL Module...
2021-08-23 14:07:56 
[INFO] Installing SERVICE Module...
2021-08-23 14:07:56 
[INFO] Move log file to log directory.
2021-08-23 14:07:57 
[INFO] Installed DM DBMS completely.

Please execute the commands by root:
/dm8/dmdbms/script/root/root_installer.sh

End

执行root脚本

/dm8/dmdbms/script/root/root_installer.sh

Move /dm8/dmdbms/bin/dm_svc.conf to /etc
Modify the files' mode of DM Server 
Create the DmAPService service
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)
Start the DmAPService service


二、主库配置

初始化数据库

dminit PATH=/dm8/dmdata DB_NAME=DMBJ INSTANCE_NAME=DMBJ_RT_01 SYSDBA_PWD=dameng1234 SYSAUDITOR_PWD=dameng1234

initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-08-10
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/dmdata/DMBJ/DMBJ01.log


 log file path: /dm8/dmdata/DMBJ/DMBJ02.log

write to dir [/dm8/dmdata/DMBJ].
create dm database success. 2021-08-23 15:43:02

注册实例服务(root)

cd /dm8/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DMBJ -dm_ini /dm8/dmdata/DMBJ/dm.ini

[root@dm-p root]# ./dm_service_installer.sh -t dmserver -p DMBJ -dm_ini /dm8/dmdata/DMBJ/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMBJ.service to /usr/lib/systemd/system/DmServiceDMBJ.service.
Finished to create the service (DmServiceDMBJ)
[root@dm-p root]# 

Note:dm.ini、dmmal.ini、dmarch.ini参数文件均要存放在数据的目录下。

配置实例参数文件(dm.ini)

vi /dm8/dmdata/DMBJ/dm.ini

INSTANCE_NAME = DMBJ_RT_01
PORT_NUM = 1661
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

配置MAL参数文件(dmmal.ini)

vi /dm8/dmdata/DMBJ/dmmal.ini

MAL_CHECK_INTERVAL = 5 
MAL_CONN_FAIL_INTERVAL = 5 

[MAL_INST1]
MAL_INST_NAME = DMBJ_RT_01 
MAL_HOST = 10.10.10.21
MAL_PORT = 1662
MAL_INST_HOST = 192.168.36.21
MAL_INST_PORT = 1661 
MAL_DW_PORT = 1663 
MAL_INST_DW_PORT = 1664 

[MAL_INST2]
MAL_INST_NAME = DMBJ_RT_02
MAL_HOST = 10.10.10.22
MAL_PORT = 1772
MAL_INST_HOST = 192.168.36.22
MAL_INST_PORT = 1771
MAL_DW_PORT = 1773
MAL_INST_DW_PORT = 1774

Note:根据我们前面规划的IP和端口,细心编写

配置归档参数文件(dmarch.ini)

mkdir /dm8/arch

vi /dm8/dmdata/DMBJ/dmarch.ini

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMBJ_RT_02

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0

Note:配置归档传输模式和路径,有两种同步方式REALTIME与Timely,按我理解应该是同步与异步的概念。

mount启动主库

dmserver /dm8/dmdata/DMBJ/dm.ini  mount &


[dmdba@dm-p DMBJ]$ dmserver /dm8/dmdata/DMBJ/dm.ini  mount &
[1] 63354
[dmdba@dm-p DMBJ]$ file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-18-21.08.10-145226-10013-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-08-10
begin redo pwr log collect, last ckpt lsn: 24823 ...
redo pwr log collect finished
main rfil[/dm8/dmdata/DMBJ/DMBJ01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr record
EP[0]'s cur_lsn[24823], file_lsn[24823]
begin redo log recover, last ckpt lsn: 24823 ...
redo log recover finished
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

Note:在mount下,后续要修改相关参数。

设置OGUID

disql sysdba/dameng1234@192.168.36.21:1661

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(166667);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

Note:OGUID作为数据库的唯一标识比较重要。

SQL> 
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 5.666(ms). Execute id is 0.
SQL> sp_set_oguid(166667);
DMSQL executed successfully
used time: 2.418(ms). Execute id is 1.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL executed successfully
used time: 4.030(ms). Execute id is 3.
SQL> 

修改为主库模式

alter database primary;

SQL> alter database primary;
executed successfully
used time: 4.770(ms). Execute id is 0.
SQL> 

三、备库配置

Note:通过备份恢复的方式还原一个备库出来。

备库的还原

创建备份目录

mkdir -p /backup/dmbj_full
chown dmdba.dinstall -R /backup

关闭主库

shutdown immediate

脱机备份主库

dmrman CTLSTMT="BACKUP DATABASE '/dm8/dmdata/DMBJ/dm.ini' FULL TO dmbj_full BACKUPSET '/backup/dmbj_full'"

file dm.key not found, use default license!
Database mode = 1, oguid = 166667
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 24823 ...
redo pwr log collect finished
EP[0]'s cur_lsn[24823], file_lsn[24823]
Processing backupset /backup/dmbj_full
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]                                 
backup successfully!
time used: 00:00:01.057

Note:当然也可以在线备份。

拷贝相关文件
备份集

scp /backup/dmbj_full/* 192.168.36.22:/backup/dmbj_full

参数文件和控制文件

mkdir -p /dm8/dmdata/DMBJ
scp /dm8/dmdata/DMBJ/dm.ini 192.168.36.22:/dm8/dmdata/DMBJ/
scp /dm8/dmdata/DMBJ/dm.ctl 192.168.36.22:/dm8/dmdata/DMBJ/
scp /dm8/dmdata/DMBJ/dmarch.ini 192.168.36.22:/dm8/dmdata/DMBJ/
scp /dm8/dmdata/DMBJ/dmmal.ini 192.168.36.22:/dm8/dmdata/DMBJ/

还原备库数据文件

dmrman CTLSTMT=" RESTORE DATABASE '/dm8/dmdata/DMBJ/dm.ini' FROM BACKUPSET '/backup/dmbj_full'"

dmrman V8
RESTORE DATABASE '/dm8/dmdata/DMBJ/dm.ini' FROM BACKUPSET '/backup/dmbj_full'
file dm.key not found, use default license!
Read ini warning, default dm.ctl backup path [/dm8/dmdata/DMBJ/ctl_bak] does not exist. 
Read ini warning, default backup path [/dm8/dmdata/DMBJ/bak] does not exist. 
[Percent:0.00%][Speed:0.00M/s][Cost:00:00:01][Remaining:00:00:00]Normal of FAST                     
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]                                 
restore successfully.
time used: 00:00:02.377

介质恢复

dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/DMBJ/dm.ini' FROM BACKUPSET '/backup/dmbj_full'"

dmrman V8
RECOVER DATABASE '/dm8/dmdata/DMBJ/dm.ini' FROM BACKUPSET '/backup/dmbj_full'
file dm.key not found, use default license!
Read ini warning, default backup path [/dm8/dmdata/DMBJ/bak] does not exist. 
Database mode = 1, oguid = 166667
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[24823], file_lsn[24823]
no log generates while the backupset [/backup/dmbj_full] created
recover successfully!
time used: 267.371(ms)
[dmdba@dm-s DMBJ]$ 

更新Magic

dmrman CTLSTMT="RECOVER DATABASE '/dm8/dmdata/DMBJ/dm.ini' UPDATE DB_MAGIC"

dmrman V8
RECOVER DATABASE '/dm8/dmdata/DMBJ/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Read ini warning, default backup path [/dm8/dmdata/DMBJ/bak] does not exist. 
Database mode = 1, oguid = 166667
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[24823], file_lsn[24823]
recover successfully!
time used: 00:00:01.004
[dmdba@dm-s DMBJ]$ 

配置归档参数文件(dmarch.ini)

mkdir /dm8/arch

vi /dm8/dmdata/DMBJ/dmarch.ini

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMBJ_RT_01

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0

Note:更改归档传输路径为主库。

配置实例参数文件(dm.ini)

vi /dm8/dmdata/DMBJ/dm.ini

INSTANCE_NAME = DMBJ_RT_02
PORT_NUM = 1771
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

Note:修改实例名和端口,dmmal.ini无需修改。

修改备库模式

启动

dmserver /dm8/dmdata/DMBJ/dm.ini  mount &

配置备库OGUID

disql sysdba/dameng1234@192.168.36.22:1661

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

sp_set_oguid(166667);

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

Note:保障备库的OGUID一致,我们再更新一次确保。

修改备库模式

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

四、配置守护进程

Note:主备节点均要配置,守护进程会自动将主库节点的实例启动到mount状态,并且由守护进程来控制实例的open状态。

配置守护进程参数文件(dmwatcher.ini)

vi /dm8/dmdata/DMBJ/dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 166667
INST_INI = /dm8/dmdata/DMBJ/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

注册守护进程服务(root)

cd /dm8/dmdbms/script/root
./dm_service_installer.sh -t dmwatcher -p DMBJ -watcher_ini /dm8/dmdata/DMBJ/dmwatcher.ini

Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceDMBJ.service to /usr/lib/systemd/system/DmWatcherServiceDMBJ.service.
Finished to create the service (DmWatcherServiceDMBJ)

启动

DmWatcherServiceDMBJ start

Note:主备节点启动即可,无顺序关系。
主库:

[dmdba@dm-p ~]$ 
Starting DmWatcherServiceDMBJ:                             [ OK ]

备库:

[dmdba@dm-s ~]$ 
Starting DmWatcherServiceDMBJ:                             [ OK ]

集群检验

dmwatch后台日志

2021-08-23 18:19:13.230 [INFO] dmwatcher P0000064937 T0000140513118435072  Send tcp msg to local ep DMBJ_RT_01, hpc_seqno:0, code:0
2021-08-23 18:19:13.230 [INFO] dmwatcher P0000064937 T0000140513118435072  Set GRP1 dmwatcher sub state to WAIT_CLEAR
2021-08-23 18:19:13.230 [INFO] dmwatcher P0000064937 T0000140513118435072  dw2_group_get_curr_ep_retcode, ep(DMBJ_RT_01) cmd_ret:cmd=217, dseq=1629713809, code=100
2021-08-23 18:19:13.231 [INFO] dmwatcher P0000064937 T0000140513118435072  dw2_group_get_curr_ep_retcode, ep(DMBJ_RT_01) cmd_ret:cmd=217, dseq=1629713809, code=0
2021-08-23 18:19:13.231 [INFO] dmwatcher P0000064937 T0000140513118435072  dw2_clear_ep_cmd_info_low, clear ep(DMBJ_RT_01) cmd info, and reset curr_ep to NULL.
2021-08-23 18:19:13.231 [INFO] dmwatcher P0000064937 T0000140513118435072  notify ep(DMBJ_RT_01) set dw_stat to NONE success!
2021-08-23 18:19:13.231 [INFO] dmwatcher P0000064937 T0000140513118435072  dw2_clear_ep_cmd_info_low, clear ep(DMBJ_RT_01) cmd info.
2021-08-23 18:19:13.231 [INFO] dmwatcher P0000064937 T0000140513118435072  Clear all ep g_dw_status finished, Recovery finished!
2021-08-23 18:19:13.231 [INFO] dmwatcher P0000064937 T0000140513118435072  switch sub_state to sub_stat_start!
2021-08-23 18:19:13.231 [INFO] dmwatcher P0000064937 T0000140513118435072  Set GRP1 dmwatcher process to OPEN(SUB:STARTUP) status

主库


[dmdba@dm-p ~]$ disql sysdba/dameng1234@192.168.36.21:1661

Server[192.168.36.21:1661]:mode is primary, state is open
login used time : 1.088(ms)
disql V8
SQL> select NAME,OGUID,STATUS$,MODE$ from v$instance;

LINEID     NAME       OGUID       STATUS$ MODE$  
---------- ---------- ----------- ------- -------
1          DMBJ_RT_01 166667      OPEN    PRIMARY

used time: 2.304(ms). Execute id is 400.
SQL> 


备库

[dmdba@dm-s DMBJ]$ disql sysdba/dameng1234@192.168.36.22:1661

Server[192.168.36.22:1661]:mode is standby, state is open
login used time : 1.399(ms)
disql V8
SQL> select NAME,OGUID,STATUS$,MODE$ from v$instance;

LINEID     NAME       OGUID       STATUS$ MODE$  
---------- ---------- ----------- ------- -------
1          DMBJ_RT_02 166667      OPEN    STANDBY
used time: 0.966(ms). Execute id is 204.
SQL> 

五、配置监视器

Note:监视器可以实现主备集群的自动切换,后面我们进行验证下;监视器可以配置在专门的服务器,这里演示配置在节点1上。

创建日志目录

mkdir -p /dm8/DW/log

配置监视器参数文件(dmmonitor.ini)

vi /dm8/DW/dmmonitor.ini

MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/DW/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
ON_INST_OGUID = 166667
MON_DW_IP = 10.10.10.21:1663
MON_DW_IP = 10.10.10.22:1773

Note:填写私网的守护端口,MAL_DW_PORT

注册服务(root)

cd /dm8/dmdbms/script/root
./dm_service_installer.sh -t dmmonitor -p DMBJ -monitor_ini /dm8/DW/dmmonitor.ini

Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceDMBJ.service to /usr/lib/systemd/system/DmMonitorServiceDMBJ.service.
Finished to create the service (DmMonitorServiceDMBJ)
[root@dm-p root]# 

启动

DmMonitorServiceDMBJ start 

六、集群测试检验

测试同步

主库:

create tablespace fwl datafile '/dm8/dmdata/DMBJ/fwl01.dbf' size 512;
create user fwl identified by "fwl123456789" default tablespace fwl default index tablespace fwl;
grant dba to fwl;

create table fwl.t1(id number,name varchar(10));
insert into fwl.t1 values(1,'aa');
commit;

[dmdba@dm-p ~]$  disql sysdba/dameng1234@192.168.36.21:1661

Server[192.168.36.21:1661]:mode is primary, state is open
login used time : 1.388(ms)
disql V8
SQL> 
SQL> create tablespace fwl datafile '/dm8/dmdata/DMBJ/fwl01.dbf' size 512;
executed successfully
used time: 44.688(ms). Execute id is 303.
SQL> create user fwl identified by "fwl123456789" default tablespace fwl default index tablespace fwl;
executed successfully
used time: 7.823(ms). Execute id is 304.
SQL> grant dba to fwl;
executed successfully
used time: 3.932(ms). Execute id is 305.
SQL> create table fwl.t1(id number,name varchar(10));
executed successfully
used time: 4.689(ms). Execute id is 306.
SQL> insert into fwl.t1 values(1,'aa');
affect rows 1
used time: 0.495(ms). Execute id is 309.
SQL> commit;
executed successfully
used time: 1.072(ms). Execute id is 310.

SQL>  select * from fwl.t1;

LINEID     ID NAME
---------- -- ----
1          1  aa

used time: 0.566(ms). Execute id is 311.
SQL> 

备库查看:

[dmdba@dm-s ~]$ disql sysdba/dameng1234@192.168.36.22:1771

Server[192.168.36.22:1771]:mode is standby, state is open
login used time : 1.471(ms)
disql V8
SQL> select * from fwl.t1;

LINEID     ID NAME
---------- -- ----
1          1  aa

used time: 4.363(ms). Execute id is 0.
SQL> 

可以看到同步正常,表空间、用户、数据都过来了。

查看恢复状态

SQL> select * from V$RECOVER_STATUS;
no rows

used time: 0.296(ms). Execute id is 318.
SQL> 

正常,无延迟的。

测试故障切换

kill掉主库实例。

[dmdba@dm-p ~]$ ps -ef | grep dmdba
dmdba      8895      1  0 18:43 ?        00:00:00 /dm8/dmdbms/bin/dmap
dmdba      8897      1  0 18:43 ?        00:00:00 /dm8/dmdbms/bin/dmwatcher /dm8/dmdata/DMBJ/dmwatcher.ini
dmdba      8901      1  0 18:43 ?        00:00:00 /dm8/dmdbms/bin/dmserver /dm8/dmdata/DMBJ/dm.ini -noconsole
root       9616   9574  0 18:46 pts/0    00:00:00 su - dmdba
dmdba      9617   9616  0 18:46 pts/0    00:00:00 -bash
dmdba      9800      1  0 18:53 pts/0    00:00:00 /dm8/dmdbms/bin/dmmonitor /dm8/DW/dmmonitor.ini
dmdba      9833   9617  0 18:54 pts/0    00:00:00 ps -ef
dmdba      9834   9617  0 18:54 pts/0    00:00:00 grep --color=auto dmdba
[dmdba@dm-p ~]$ kill -9 8901
[dmdba@dm-p ~]$ 

查看备库角色

[dmdba@dm-s ~]$ disql sysdba/dameng1234@192.168.36.22:1771

Server[192.168.36.22:1771]:mode is standby, state is open
login used time : 0.978(ms)
disql V8
SQL> select NAME,OGUID,STATUS$,MODE$ from v$instance;

LINEID     NAME       OGUID       STATUS$ MODE$  
---------- ---------- ----------- ------- -------
1          DMBJ_RT_02 166667      OPEN    STANDBY

used time: 2.568(ms). Execute id is 400.
SQL> /

LINEID     NAME       OGUID       STATUS$ MODE$  
---------- ---------- ----------- ------- -------
1          DMBJ_RT_02 166667      OPEN    PRIMARY

used time: 0.595(ms). Execute id is 401.
SQL> 

可以看到备库很快就切换成主库了。

查看主库
[dmdba@dm-p ~]$ disql sysdba/dameng1234@192.168.36.21:1661

Server[192.168.36.21:1661]:mode is standby, state is open
login used time : 1.490(ms)
disql V8
SQL> select NAME,OGUID,STATUS,MODE,MODE from v$instance;

LINEID NAME OGUID STATUS$ MODE$


1 DMBJ_RT_01 166667 OPEN STANDBY

used time: 2.988(ms). Execute id is 0.
SQL>
可以看到原主库已经变成备库了,可能有人疑问,原主库不是kill了吗,怎么又启动了;因为是守护进程检查到主库状态出现问题,故将其拉起,可以看到这里达梦其实做得挺好的

最后修改时间:2021-08-24 12:14:27
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论