前言
达梦主备架构实战演练,对于Oracle的Aactive DataGuard我们都很熟悉,当然达梦也有自己的一套主备集群方案,称作DataWatch AND ReadWriteShunt数据守护与读写分离集群,本质是应用场景的不同,在达梦的DSC和MPP架构依然适用。
个人感觉主备集群架构做得比较成熟,从架构图可以看到关键进程为dmwatcher守护进程,监视实例的状态;数据库本身传输归档日志到备库进行应用,数据库本身的进程为dmserver;因为达梦为单进程多线程的,不像Oracle那样多进程的进行工作,可以看到每个进程在干嘛。
dmmonitor进程监视整个主备集群的状态,可以做到自动切换。
环境信息
操作系统版本:中标麒麟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 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了吗,怎么又启动了;因为是守护进程检查到主库状态出现问题,故将其拉起,可以看到这里达梦其实做得挺好的