业务地址:10.77.16.153-主库a
业务地址:10.77.16.154-备库b
CPU: Intel(R) (84核)
操作系统:Kylin Linux Advanced Server release V10 SP3 2403/(Halberd)-x86_64-Build20.01/20240426
内存:256GB
/data 500GB
a和b是云服务器。
业务地址:10.77.16.155-主库c
业务地址:10.77.16.156-备库d
CPU: Kunpeng-920 (128核)
操作系统:Kylin Linux Advanced Server release V10 SP3 2403/(Halberd)-aarch64-Build20/20240426
内存:512GB
/data 7TB
c和d是裸金属服务器。
(1)a和b是主备集群,设备类型是云服务器,生产数据库系统运行在该服务器上,其中a是主库。
(2)c和d是裸金属服务器,主备集群已经部署完成,数据库版本和操作系统版本与a,b保持一致。
(3)切换当天需要将c,d两个节点做为备机加入到a,b集群中,构成1主3备集群,其中a节点是主库。
(4)1主3备集群运行正常,数据一致后,手动切换主库到c节点。
(5)将原来的a,b节点剔除集群,由c,d组成独立的主备集群。
(6)在第四步以前,原生产环境a,b节点数据库一直处于运行中,可以对外提供服务。
备份四个节点的dm.ini、dmarch.ini、dmmal.ini、dmmonitor.ini、dmwatcher.ini文件。
16.153,16.154,16.155,16.156
配置文件路径:/data/dmdata/DM
cp dm.ini dmarch.ini dmmal.ini dmwatcher.ini dmmonitor.ini /home/dmdba/dmbackup/configbackup20260828
(1)对主库a进行联机备份操作
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400@localhost:5236
backup database full backupset '/data/dmbackup/DB_FULL_2026082803' compressed level 1 parallel 5;
select sf_bakset_check('DISK','/data/dmbackup/DB_FULL_2026082803');
预计备份时间:5分钟左右。总数据量60多G。
(2)在c,d节点上还原数据
拷贝备份集到c,d节点的/data/dmbackup/目录,使用DMRMAN工具脱机还原。
scp -r DB_FULL_2026082803/ 10.77.16.155:/data/dmbackup
scp -r DB_FULL_2026082803/ 10.77.16.156:/data/dmbackup
/data/dmdbms/bin/dmrman
RESTORE DATABASE '/data/dmdata/DM/dm.ini' FROM BACKUPSET '/data/dmbackup/DB_FULL_2026082803';
RECOVER DATABASE '/data/dmdata/DM/dm.ini' FROM BACKUPSET '/data/dmbackup/DB_FULL_2026082803';
RECOVER DATABASE '/data/dmdata/DM/dm.ini' UPDATE DB_MAGIC;
在c,d机器上配置如下:
MAL_CHECK_INTERVAL = 60 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 60 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DM #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.77.16.153 #MAL系统监听TCP内部网络IP
MAL_PORT = 1141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.77.16.153 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
MAL_DW_PORT = 2141 #实例对应的守护进程监听TCP端口
MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DM_ST #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.77.16.154 #MAL系统监听TCP内部网络IP
MAL_PORT = 1141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.77.16.154 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
MAL_DW_PORT = 2141
MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口
[MAL_INST3]
MAL_INST_NAME = DM1 #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.77.16.155 #MAL系统监听TCP内部网络IP
MAL_PORT = 1141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.77.16.155 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
MAL_DW_PORT = 2141 #实例对应的守护进程监听TCP端口
MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口
[MAL_INST4]
MAL_INST_NAME = DM2 #与dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.77.16.156 #MAL系统监听TCP内部网络IP
MAL_PORT = 1141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.77.16.156 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
MAL_DW_PORT = 2141
MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口
c机器修改dmarch.ini,配置本地归档和即时归档。
ARCH_WAIT_APPLY = 0
ARCH_RESERVE_TIME = 21600
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 512000
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM2 #实时归档目标实例名
##增加以下内容
##增加16.153的实时归档路径
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM #实时归档目标实例名
##增加16.154的实时归档路径
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM_ST #实时归档目标实例名
d机器修改 dmarch.ini,配置本地归档和即时归档。
ARCH_WAIT_APPLY = 0
ARCH_RESERVE_TIME = 21600
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 512000
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM1 #实时归档目标实例名
##增加以下内容
##增加16.153的实时归档路径
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM #实时归档目标实例名
##增加16.154的实时归档路径
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM_ST #实时归档目标实例名
c,d机器修改dmwatch.ini。
[DM]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 65 #本地实例故障认定时间
INST_OGUID = 20260819 #守护系统唯一OGUID 值
INST_INI = /data/dmdata/DM/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /data/dmdbms/bin/DmServiceDM start #服务方式启动
/data/dmdbms/bin/DmServiceDM start
启动命令行工具 DIsql,登录c,d备库设置 OGUID 值。
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS',1);
sp_set_oguid(20260819);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS',0);
需要分别连接a,b库,每个实例单独执行:
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','DM1','10.77.16.155',1141,'10.77.16.155',5236,2141,0,3141);
SF_MAL_INST_ADD('MAL_INST4','DM2','10.77.16.156',1141,'10.77.16.156',5236,2141,0,3141);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
关闭监视器
/data/dmdbms/bin/DmMonitorServiceMonitor stop
关闭a主库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
关闭b备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
分别连接a,b原系统中的所有实例,动态添加dmarch.ini 中归档节点。
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
ALTER DATABASE ADD ARCHIVELOG 'DEST= DM1, TYPE= REALTIME';
ALTER DATABASE ADD ARCHIVELOG 'DEST= DM2, TYPE= REALTIME';
在a、b、c、d的dmmonitor.ini配置文件中增加以下内容:
MON_DW_IP=10.77.16.153:2141
MON_DW_IP=10.77.16.154:2141
MON_DW_IP=10.77.16.155:2141
MON_DW_IP=10.77.16.156:2141
分别启动主库和备库的所有守护进程,最后启动监视器。
##启动a主库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
##启动b备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
##启动c备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
##启动d备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
##登录监视器,检查数据库集群状态。
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
show命令查看集群节点状态
4个节点的FLSN和CLSN相同,说明4个节点的数据是一致的。
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
login
username:SYSDBA
password:******
choose switchover DM
Can choose one of the following instances to do switchover:
1: DM_ST
2: DM1
3: DM2
switchover DM1
YES
show
DMDBA_hust4400
在c主库上创建测试表,插入数据。
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
create table test(id varchar(100),no number);
insert into test values('lxx','2001');
commit;
select * from test;
在a,b,d上查询数据
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
select * from test;
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
login
username:SYSDBA
password:******
detach database DM
detach database DM_ST
/data/dmdbms/bin/DmMonitorServiceMonitor stop
注释所有节点监视器dmmonitor.ini文件中a,b节点信息
#MON_DW_IP=10.77.16.153:2141
#MON_DW_IP=10.77.16.154:2141
cd /data/dmdbms/bin
关闭c主库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
关闭a备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
关闭b备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
关闭d备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM stop
注释掉配置文件中的内容:
#[MAL_INST1]
#MAL_INST_NAME = DM #与dm.ini中的INSTANCE_NAME一致
#MAL_HOST = 10.77.16.153 #MAL系统监听TCP内部网络IP
#MAL_PORT = 1141 #MAL系统监听TCP连接的端口
#MAL_INST_HOST = 10.77.16.153 #实例的对外服务IP地址
#MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
#MAL_DW_PORT = 2141 #实例对应的守护进程监听TCP端口
#MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口
#[MAL_INST2]
#MAL_INST_NAME = DM_ST #与dm.ini中的INSTANCE_NAME一致
#MAL_HOST = 10.77.16.154 #MAL系统监听TCP内部网络IP
#MAL_PORT = 1141 #MAL系统监听TCP连接的端口
#MAL_INST_HOST = 10.77.16.153 #实例的对外服务IP地址
#MAL_INST_PORT = 5236 #与dm.ini中的PORT_NUM一致
#MAL_DW_PORT = 2141
#MAL_INST_DW_PORT = 3141 #实例监听守护进程TCP连接的端口
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SF_MAL_CONFIG(1,0);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
ALTER DATABASE DELETE ARCHIVELOG 'DEST= DM, TYPE= REALTIME';
ALTER DATABASE DELETE ARCHIVELOG 'DEST= DM_ST, TYPE= REALTIME';
启动c主库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
启动d备库守护进程
/data/dmdbms/bin/DmWatcherServiceDM start
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
show命令查看集群节点状态
c,d个节点的FLSN和CLSN值相同,说明2个节点的数据是一致的。
写入数据进行测试
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
insert into test values('lxx','3001');
commit;
select * from test;
[DM]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 65 #本地实例故障认定时间
INST_OGUID = 20260819 #守护系统唯一OGUID 值
INST_INI = /data/dmdata/DM/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /data/dmdbms/bin/DmServiceDM start #命令行方式启动
重启c,d守护进程
/data/dmdbms/bin/DmWatcherServiceDM restart
前台启动监视器
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
List命令查看DW_MODE配置是否生效
登录c节点数据库,删除测试数据。
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
drop table test;
commit;
select * from test;
a节点
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(20260818);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
b节点
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(20260818);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
前台启动监视器
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
在16.153、16.154上恢复dm.ini、dmmal.ini、dmmonitor.ini、dmarch.ini、dmwatcher.ini配置文件。
a主库:10.77.16.153
/data/dmdbms/bin/DmServiceDM start
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400@localhost:5236
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(20260819);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
b备库:10.77.16.154
/data/dmdbms/bin/DmServiceDM start
/data/dmdbms/bin/disql SYSDBA/DMDBA_hust4400@localhost:5236
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(20260819);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);
/data/dmdbms/bin/DmWatcherServiceDM start
/data/dmdbms/bin/dmmonitor /data/dmdata/DM/dmmonitor.ini
文章
阅读量
获赞
