达梦主从部署1主2从(主库需要停机)

环境:
OS:Centos 7
DB:DM8
主库:192.168.1.134 dbname:slnngk instance_name:slnngk01
备库1:192.168.1.135 dbname:slnngk instance_name:slnngk02
备库2:192.168.1.85 dbname:slnngk instance_name:slnngk03

 

说明:
主库上安装数据库软件和启动数据库,主库在归档模式
备库库上只安装了数据库软件

 

主备库的数据目录一致
目录规划(主备一致):
/dmdbms/product ##数据库软件的安装目录
/dmdbms/data ##数据目录
/dmdbms/arch ##归档目录
/dmdbms/backup ##备份目录

 

#############################主库安装数据192.168.1.134################################

1.初始化数据库
su - dmdba
dminit path=/dmdbms/data charset=1 db_name=slnngk instance_name=slnngk01 SYSDBA_PWD="dameng123" SYSAUDITOR_PWD="dameng123"

 

2.注册服务
我们这里三个数据库使用的服务名都统一使用:DmServiceslnngk

su - root
[root@localhost root]#cd /dmdbms/product/script/root
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /dmdbms/data/slnngk/dm.ini -p slnngk
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceslnngk.service to /usr/lib/systemd/system/DmServiceslnngk.service.
Finished to create the service (DmServiceslnngk)

 

 

 

3.启动数据库
[root@localhost root]#systemctl start DmServiceslnngk.service
[root@localhost root]#systemctl status DmServiceslnngk.service

 

4.配置归档模式
su - dmdba
disql sysdba/dameng123
alter database mount;
alter database add archivelog 'dest=/dmdbms/arch,TYPE=local,FILE_SIZE=2048';
alter database archivelog;
alter database open;

 

查看是否在归档模式
SQL> select name,arch_mode from v$database;

LINEID NAME ARCH_MODE
---------- ------ ---------
1 slnngk Y

used time: 1.347(ms). Execute id is 55201.

 

#############################备库安装数据192.168.1.135################################

1.初始化数据库,注意实例名与前面的不一样
su - dmdba
dminit path=/dmdbms/data charset=1 db_name=slnngk instance_name=slnngk02 SYSDBA_PWD="dameng123" SYSAUDITOR_PWD="dameng123"

 

2.注册服务
我们这里三个数据库使用的服务名都统一使用:DmServiceslnngk

su - root
[root@localhost root]#cd /dmdbms/product/script/root
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /dmdbms/data/slnngk/dm.ini -p slnngk
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceslnngk.service to /usr/lib/systemd/system/DmServiceslnngk.service.
Finished to create the service (DmServiceslnngk)

 

3.启动数据库
[root@localhost root]#systemctl start DmServiceslnngk.service
[root@localhost root]#systemctl status DmServiceslnngk.service
这里尝试下是否可以启动数据库

然后将其停掉,因为下面我们会使用主库的备份文件进行恢复的
[root@host135 root]# systemctl stop DmServiceslnngk.service

 

#############################备库安装数据192.168.1.85################################

1.初始化数据库,注意实例名与前面的不一样
su - dmdba
dminit path=/dmdbms/data charset=1 db_name=slnngk instance_name=slnngk03 SYSDBA_PWD="dameng123" SYSAUDITOR_PWD="dameng123"

 

2.注册服务
我们这里三个数据库使用的服务名都统一使用:DmServiceslnngk

su - root
[root@localhost root]#cd /dmdbms/product/script/root
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /dmdbms/data/slnngk/dm.ini -p slnngk
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceslnngk.service to /usr/lib/systemd/system/DmServiceslnngk.service.
Finished to create the service (DmServiceslnngk)

 

 

3.启动数据库
[root@localhost root]#systemctl start DmServiceslnngk.service
[root@localhost root]#systemctl status DmServiceslnngk.service
这里尝试下是否可以启动数据库

然后将其停掉,因为下面我们会使用主库的备份文件进行恢复的
[root@host85 root]# systemctl stop DmServiceslnngk.service

 

#############################主备数据恢复################################

1.关闭主库,以 dmrman 备份数据库
[root@host134 data]# systemctl stop DmServiceslnngk.service
或是登陆到disql,shutdown数据库
[dmdba@localhost ~]$ disql sysdba/dameng123
SQL> shutdown immediate;

 

2.使用dmrman备份主库

只有数据库是在关闭状态才能使用dmrman备份

复制代码
[root@localhost dmdbms]# su - dmdba
[dmdba@localhost ~]$ dmrman
dmrman V8
RMAN> backup database '/dmdbms/data/slnngk/dm.ini' backupset '/dmdbms/backup';
backup database '/dmdbms/data/slnngk/dm.ini' backupset '/dmdbms/backup';
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[41034], file_lsn[41034]
Processing backupset /dmdbms/backup
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]                                 
backup successfully!
time used: 00:00:04.126
RMAN> 
复制代码

 

 

3.将备份文件复制到另外两台备库对应目录下(如果是root用户,复制成功需要将备份文件设置属于dmdba:dinstall用户组)
我这里是使用dmdba账号进行scp传输的
su - dmdba
scp -r /dmdbms/backup/* dmdba@192.168.1.135:/dmdbms/backup/
scp -r /dmdbms/backup/* dmdba@192.168.1.85:/dmdbms/backup/

这里dmdba账号的密码设置为:dameng123

 

4.备库使用dmrman执行数据库还原
这个时候备库是没有启动的,
疑惑备库原来初始化的数据目录下的文件是否可以删除掉?

 

备库1:192.168.1.135
若备库是启动的状态,需要将其关闭掉
[root@localhost ~]#systemctl stop DmServiceslnngk.service
[root@localhost ~]# su - dmdba
[dmdba@localhost ~]$ dmrman
dmrman V8


按顺序执行3个命令:
restore database '/dmdbms/data/slnngk/dm.ini' from backupset '/dmdbms/backup';
recover database '/dmdbms/data/slnngk/dm.ini' from backupset '/dmdbms/backup';
recover database '/dmdbms/data/slnngk/dm.ini' update db_magic;

备库2:192.168.1.85
[root@localhost ~]#systemctl stop DmServiceslnngk.service
[root@localhost ~]# su - dmdba
[dmdba@localhost ~]$ dmrman
dmrman V8


按顺序执行3个命令:
restore database '/dmdbms/data/slnngk/dm.ini' from backupset '/dmdbms/backup';
recover database '/dmdbms/data/slnngk/dm.ini' from backupset '/dmdbms/backup';
recover database '/dmdbms/data/slnngk/dm.ini' update db_magic;

 

 

#############################配置文件设置################################

 

1.dm.ini
#三个实例主备库实例都需更改下面参数

su - dmdba
vi /dmdbms/data/slnngk/dm.ini

ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库 OFFLINE 表空间
MAL_INI = 1           ##打开 MAL 系统
ARCH_INI = 1          ##打开归档配置
ALTER_TABLE_OPT=3     ##加快带默认值的字段添加(看情况需要)

 

2.主备配置文件dmmal.ini
#三个实例主备库配置必须完全一致
su - dmdba
vi /dmdbms/data/slnngk/dmmal.ini

复制代码
MAL_CHECK_INTERVAL       = 5      #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL   = 5      #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME       = SLNNGK01        #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST            = 192.168.1.134   #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT            = 61141           #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST       = 192.168.1.134   #实例的对外服务 IP 地址
MAL_INST_PORT       = 5236            #实例的对外服务端口,dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT         = 52141           #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT    = 33141           #实例监听守护进程 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME       = SLNNGK02
MAL_HOST            = 192.168.1.135
MAL_PORT            = 61141
MAL_INST_HOST       = 192.168.1.135
MAL_INST_PORT       = 5236
MAL_DW_PORT         = 52141
MAL_INST_DW_PORT    = 33141


[MAL_INST3]
MAL_INST_NAME       = SLNNGK03
MAL_HOST            = 192.168.1.85
MAL_PORT            = 61141
MAL_INST_HOST       = 192.168.1.85
MAL_INST_PORT       = 5236
MAL_DW_PORT         = 52141
MAL_INST_DW_PORT    = 33141
复制代码

在主库(192.168.1.134)上配置好了,可以scp到另外两个备库
su - dmdba
scp /dmdbms/data/slnngk/dmmal.ini dmdba@192.168.1.135:/dmdbms/data/slnngk/
scp /dmdbms/data/slnngk/dmmal.ini dmdba@192.168.1.85:/dmdbms/data/slnngk/

 

3.归档配置文件dmarch.ini


192.168.1.134主库
若主库上已经配置了本地归档的,那么只需要添加ARCHIVE_REALTIME部分
su - dmdba
vi /dmdbms/data/slnngk/dmarch.ini

复制代码
[ARCHIVE_REALTIME1]
ARCH_TYPE        = REALTIME    #实时归档类型
ARCH_DEST        = SLNNGK02    #实时归档目标实例名,这里是备库的实例名

[ARCHIVE_REALTIME2]
ARCH_TYPE        = REALTIME    #实时归档类型
ARCH_DEST        = SLNNGK03    #实时归档目标实例名,这里是备库的实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE        = LOCAL          #本地归档类型
ARCH_DEST        = /dmdbms/arch   #本地归档文件存放路径
ARCH_FILE_SIZE   = 2024           #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0              #单位Mb,0 表示无限制,范围 1024~4294967294M
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
复制代码

 

 

 

192.168.1.135备库
su - dmdba
vi /dmdbms/data/slnngk/dmarch.ini

 

复制代码
[ARCHIVE_REALTIME1]
ARCH_TYPE        = REALTIME    #实时归档类型
ARCH_DEST        = SLNNGK01    #实时归档目标实例名,这里是备库的实例名

[ARCHIVE_REALTIME2]
ARCH_TYPE        = REALTIME    #实时归档类型
ARCH_DEST        = SLNNGK03    #实时归档目标实例名,这里是备库的实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE        = LOCAL          #本地归档类型
ARCH_DEST        = /dmdbms/arch   #本地归档文件存放路径
ARCH_FILE_SIZE   = 2024           #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0              #单位Mb,0 表示无限制,范围 1024~4294967294M
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
复制代码

 

192.168.1.85备库
su - dmdba
vi /dmdbms/data/slnngk/dmarch.ini

复制代码
[ARCHIVE_REALTIME1]
ARCH_TYPE        = REALTIME    #实时归档类型
ARCH_DEST        = SLNNGK01    #实时归档目标实例名,这里是备库的实例名

[ARCHIVE_REALTIME2]
ARCH_TYPE        = REALTIME    #实时归档类型
ARCH_DEST        = SLNNGK02    #实时归档目标实例名,这里是备库的实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE        = LOCAL          #本地归档类型
ARCH_DEST        = /dmdbms/arch   #本地归档文件存放路径
ARCH_FILE_SIZE   = 2024           #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0              #单位Mb,0 表示无限制,范围 1024~4294967294M
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
复制代码

 

这里配置的归档日志三个节点基本是一致的,只是实时归档配置为对方2个节点

 

4.配置dmwatcher.ini
三个实例主备库配置一致
su - dmdba
vi /dmdbms/data/slnngk/dmwatcher.ini

复制代码
[GRP1]
DW_TYPE       =  GLOBAL     ##全局守护类型
DW_MODE       =  AUTO       ##手工切换 AUTO自动切换模式必须部署一个确认监视器,在集群中每个节点必须配置一致,不能一个是自动,一个是手动
DW_ERROR_TIME    =  10      ##远程守护进程故障认定时间
INST_RECOVER_TIME =  60     ##主库守护进程启动恢复的间隔时间
INST_ERROR_TIME  =  10      ##本地实例故障认定时间
INST_OGUID     =  453332    ##守护系统唯一 OGUID 值
INST_INI      =  /dmdbms/data/slnngk/dm.ini  #dm.ini配置文件路径
INST_AUTO_RESTART =  1      ##打开实例的自动启动功能,若配置为0的话,数据库shutdown后,dmwatch守护进程不会把数据库拉起来
INST_STARTUP_CMD  =  /dmdbms/product/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD =  0    ##指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD =  0   ##指定备库重演日志的时间阀值,默认关闭
复制代码

在主库(192.168.1.134)上配置好了,可以scp到另外两个备库
su - dmdba
scp /dmdbms/data/slnngk/dmwatcher.ini dmdba@192.168.1.135:/dmdbms/data/slnngk/
scp /dmdbms/data/slnngk/dmwatcher.ini dmdba@192.168.1.85:/dmdbms/data/slnngk/

 

5.监视器配置文件
#生产环境如果是自动切换需单独一台服务器配置监视器(该机器只安装AP即可),我这里放在主库(192.168.1.134)上面
su - dmdba
vi /dmdbms/data/slnngk/dmmonitor.ini

 

复制代码
MON_DW_Confirm    = 1           ## 0表示普通监视器 ,最多配置8个,1 确认监视器模式
MON_LOG_PATH    = /dmdbms/log   ##监视器日志文件存放路径
MON_LOG_INTERVAL  = 60          ##每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 256        ##每个日志文件最大 256M
MON_LOG_SPACE_LIMIT  = 0        ##不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID    = 453332     #组 GRP1 的唯一OGUID 值
##配置为监视器到组GRP1的守护进程的连接信息以―IP:PORT‖的形式配置
##IP对应dmmal.ini中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP     = 192.168.1.134:52141
MON_DW_IP     = 192.168.1.135:52141
MON_DW_IP     = 192.168.1.85:52141
复制代码

注意这里需要创建日志文件
su - dmdba
mkdir -p /dmdbms/log

 

#############################每个实例注册守护进程################################

主库:192.168.1.134
su - root
[root@host134 root]# cd /dmdbms/product/script/root
[root@host134 slnngk]#./dm_service_installer.sh -t dmwatcher -p GRP1 -watcher_ini /dmdbms/data/slnngk/dmwatcher.ini

备库1:192.168.1.135
su - root
[root@host135 root]# cd /dmdbms/product/script/root
[root@host135 slnngk]#./dm_service_installer.sh -t dmwatcher -p GRP1 -watcher_ini /dmdbms/data/slnngk/dmwatcher.ini

备库2:192.168.1.85
su - root
[root@host85 root]# cd /dmdbms/product/script/root
[root@host85 slnngk]#./dm_service_installer.sh -t dmwatcher -p GRP1 -watcher_ini /dmdbms/data/slnngk/dmwatcher.ini


这里可以查看刚才注册的服务名
[root@host134 system]# ls -al /usr/lib/systemd/system/Dm*

 

#############################实例注册监听器服务################################
这里只需要在监听服务器上执行,我这里只在192.168.1.134上执行
su - root
[root@host134 root]# cd /dmdbms/product/script/root
[root@localhost ~]# ./dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdbms/data/slnngk/dmmonitor.ini

 

 

#############################配置同步################################
1.启动三个实例,主备库都启动
这里不能使用系统服务(systemctl)启动数据库,该方式启动的状态是open模式,会破坏主从关系,使用后台命令的方式启动

 

192.168.1.134

su - dmdba
[dmdba@host134 log]$ cd ~
[dmdba@host134 ~]$nohup dmserver /dmdbms/data/slnngk/dm.ini mount>dmserver.log &

 

192.168.1.135
su - dmdba
[dmdba@host135 log]$ cd ~
[dmdba@host135 ~]$nohup dmserver /dmdbms/data/slnngk/dm.ini mount>dmserver.log &


192.168.1.85
su - dmdba
[dmdba@host85 log]$ cd ~
[dmdba@host85 ~]$nohup dmserver /dmdbms/data/slnngk/dm.ini mount>dmserver.log &

 

2.配置主从

这个时候每个实例都启动到mount状态的,可以查询检查下

192.168.1.134
disql sysdba/dameng123
SQL> select status$,mode$ from v$instance;

LINEID STATUS$ MODE$
---------- ------- ------
1 MOUNT NORMAL

 


192.168.1.135
disql sysdba/dameng123
SQL> select status$,mode$ from v$instance;

LINEID STATUS$ MODE$
---------- ------- ------
1 MOUNT NORMAL

used time: 5.125(ms). Execute id is 0.

 

192.168.1.85
disql sysdba/dameng123
SQL> select status$,mode$ from v$instance;

LINEID STATUS$ MODE$
---------- ------- ------
1 MOUNT NORMAL

used time: 5.392(ms). Execute id is 0.

 

 

下面进行主备库的配置

A.主库192.168.1.134
disql sysdba/dameng123
SQL>sp_set_oguid(453332);
SQL>alter database primary;

B.备库192.168.1.135
disql sysdba/dameng123
SQL>sp_set_oguid(453332);
SQL>alter database standby;

 

B.备库192.168.1.85
disql sysdba/dameng123
SQL>sp_set_oguid(453332);
SQL>alter database standby;

这个时候主备库三个实例额度状态都是mount状态的,下面需要启动dmwatcher,把实例状态拉起来

 

SQL> select status$ from v$instance;

LINEID STATUS$
---------- -------
1 MOUNT

used time: 0.891(ms). Execute id is 601.

 

3.启动dmwatcher
每个实例都启动(root账号)
192.168.1.134
[root@host134 dmdba]#systemctl start DmWatcherServiceGRP1

192.168.1.135
[root@host135 dmdba]#systemctl start DmWatcherServiceGRP1

192.168.1.85
[root@host85 dmdba]#systemctl start DmWatcherServiceGRP1

 

这个时候查看每个实例的状态:

复制代码
主库192.168.1.134
su - dmdba
disql sysdba/dameng123
SQL> select status$,mode$ from v$instance;

LINEID     STATUS$ MODE$  
---------- ------- -------
1          OPEN    PRIMARY

used time: 0.787(ms). Execute id is 3.



备库192.168.1.135

SQL> select status$,mode$ from v$instance;

Server[LOCALHOST:5236]:mode is standby, state is open
connected

LINEID     STATUS$ MODE$  
---------- ------- -------
1          OPEN    STANDBY

used time: 2.098(ms). Execute id is 100.


备库192.168.1.85

SQL> select status$,mode$ from v$instance;

Server[LOCALHOST:5236]:mode is standby, state is open
connected

LINEID     STATUS$ MODE$  
---------- ------- -------
1          OPEN    STANDBY

used time: 1.735(ms). Execute id is 100.
复制代码

 

3.启动监视器进程
我们的监视器是配置在主库上面的,192.168.1.134
[root@host134 root]# systemctl start DmMonitorServiceMonitor

 

疑问:数据库服务(systemctl)什么时候启动呢,备库可以停掉之前进程后启动,但是主库不想切换的时候如何启动
systemctl status DmServiceslnngk.service

 

############################数据验证###################################################

1.主库上创建表空间和用户
创建表空间

su - dmdba
disql sysdba/dameng123

create tablespace tps_hxl datafile '/dmdbms/data/slnngk/tps_hxl01.DBF' size 1024 autoextend on maxsize 32768; ##这里单位是M,文件目录存储在/dmdata/dmdb/DAMENG,这里设置文件最大值,不设置的话就是16TB
create user hxl identified by dameng123 default tablespace tps_hxl default index tablespace tps_hxl;
grant dba to hxl;

 

2.从库查看表空间和用户

复制代码
SQL> select tablespace_name from SYS.DBA_TABLESPACES;

LINEID     TABLESPACE_NAME
---------- ---------------
1          SYSTEM
2          ROLL
3          TEMP
4          MAIN
5          TPS_HXL
6          MAIN

6 rows got

SQL> select username from SYS.DBA_USERS;

LINEID     USERNAME  
---------- ----------
1          SYSAUDITOR
2          HXL
3          SYSSSO
4          SYSDBA
5          SYS

used time: 25.592(ms). Execute id is 102.
复制代码

 

3.主库创建表写入数据

复制代码
disql hxl/dameng123
create table tb_test(id number,name varchar(32));
insert into tb_test values(1,'name1');
insert into tb_test values(2,'name2');
insert into tb_test values(3,'name3');
insert into tb_test values(4,'name4');
insert into tb_test values(5,'name5');
insert into tb_test values(6,'name6');
insert into tb_test values(7,'name7');
insert into tb_test values(8,'name8');
insert into tb_test values(9,'name9');
insert into tb_test values(10,'name10');
commit;
复制代码

 

从库查询

复制代码
disql hxl/dameng123
SQL> select * from tb_test;

LINEID     ID NAME  
---------- -- ------
1          1  name1
2          2  name2
3          3  name3
4          4  name4
5          5  name5
6          6  name6
7          7  name7
8          8  name8
9          9  name9
10         10 name10

10 rows got
复制代码

 

###########################监视器监控相关############################

在监视器上执行如下命令,我这里是在192.168.1.134机器上执行

1.登陆监视器模式
[dmdba@host134 ~]$ dmmonitor /dmdbms/data/slnngk/dmmonitor.ini
Exist multiple CONFIRM dmmonitor, can only startup one!

 

这里提示只能配置一个确认监视器,我们拷贝下一份dmmonitor.ini,将MON_DW_Confirm修改为0,改成普通监视器
[dmdba@host134 ~]$ cp /dmdbms/data/slnngk/dmmonitor.ini /dmdbms/data/slnngk/dmmonitor0.ini

 

vi /dmdbms/data/slnngk/dmmonitor0.ini

如下项修改为0
MON_DW_Confirm = 0 ## 0表示普通监视器 ,最多配置8个,1 确认监视器模式

复制代码
[dmdba@host134 ~]$dmmonitor /dmdbms/data/slnngk/dmmonitor0.ini
[monitor]         2022-08-10 11:05:41: DMMONITOR[4.0] V8
[monitor]         2022-08-10 11:05:41: DMMONITOR[4.0] IS READY.

[monitor]         2022-08-10 11:05:42: Received message from(SLNNGK01)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-08-10 11:05:41  OPEN           OK        SLNNGK01         OPEN        PRIMARY   VALID    3        40157           40158           

[monitor]         2022-08-10 11:05:42: Received message from(SLNNGK02)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-08-10 11:05:41  OPEN           OK        SLNNGK02         OPEN        STANDBY   VALID    3        40157           40157           

[monitor]         2022-08-10 11:05:42: Received message from(SLNNGK03)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2022-08-10 11:05:51  OPEN           OK        SLNNGK03         OPEN        STANDBY   VALID    3        40157           40157          
                  
复制代码

 

2.查看可切换的节点

复制代码
show
2022-08-10 11:07:17 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GRP1             453332      FALSE           AUTO            FALSE 

choose switchover GRP1
Can choose one of the following instances to do switchover:
1: SLNNGK02
2: SLNNGK03
复制代码

这里列出了实例2和实例3是可以切换的

 

###########################应用程序连接############################
这里我在其中一台从库上连接,这里是在192.168.1.85机器上连接

1.通过服务名连接,只连接备库
[root@host85 root]# more /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(en)
MYDMDB=(192.168.1.134:5236,192.168.1.135:5236,192.168.1.85:5236)
LOGIN_MODE=(2) ##只连接备库
SWITCH_TIMES=(3) ##以服务名连接库时,若未找到符合条件的库建立连接,将尝试遍历服务名中库列表的次数
SWITCH_INTERVAL=(100) ##在服务器之间切换的时间间隔,单位为毫秒


通过服务名连接(大小写都可以)
disql sysdba/dameng123@MYDMDB
disql sysdba/dameng123@mydmdb

SQL> select name,status$,mode$ from v$instance;

LINEID NAME STATUS$ MODE$
---------- -------- ------- -------
1 SLNNGK03 OPEN STANDBY

used time: 3.227(ms). Execute id is 101.

 

2.通过服务名连接,只连接主库
[root@host85 root]# more /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(en)
MYDMDB=(192.168.1.134:5236,192.168.1.135:5236,192.168.1.85:5236)
LOGIN_MODE=(1) ##只连接备库
SWITCH_TIMES=(3) ##以服务名连接库时,若未找到符合条件的库建立连接,将尝试遍历服务名中库列表的次数
SWITCH_INTERVAL=(100) ##在服务器之间切换的时间间隔,单位为毫秒

[dmdba@host85 slnngk]$ disql sysdba/dameng123@MYDMDB

Server[192.168.1.134:5236]:mode is primary, state is open
login used time : 9.862(ms)
disql V8
SQL> select name,status$,mode$ from v$instance;

LINEID NAME STATUS$ MODE$
---------- -------- ------- -------
1 SLNNGK01 OPEN PRIMARY

used time: 3.770(ms). Execute id is 1000.

连接方式说明:
LOGIN_MODE:指定优先登录的服务器模式.
0:优先连接 PRIMARY 模式的库,NORMAL模式次之,最后选择STANTBY模式;
1:只连接主库;
2:只连接备库;
3:优先连接STANDBY 模式的库, PRIMARY 模式次之,最后选择NORMAL模式;
4:优先连接NORMAL 模式的库,PRIMARY 模式次之,最后选择STANDBY模式;

 

posted @   slnngk  阅读(1553)  评论(2编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示