查看主库数据库初始化的配置信息:
SQL> set linesize 1999
SQL> set pagesize 1999
SQL>SELECT ‘页大小’,cast(PAGE()/1024 as varchar) union all
SELECT ‘簇大小’,cast(SF_GET_EXTENT_SIZE() as varchar) union all
SELECT ‘字符集’,CASE SF_GET_UNICODE_FLAG() WHEN ‘0’ THEN ‘GBK18030’ WHEN ‘1’ then ‘UTF-8’ when ‘2’ then ‘EUC-KR’ end union all
SELECT ‘大小写敏感’,cast(SF_GET_CASE_SENSITIVE_FLAG() as varchar) union all
select ‘VARCHAR类型长度是否以字符为单位’,para_value from vdm_ini where para_name='LENGTH_IN_CHAR' union all
select '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM vinstance union all
select ‘数据库名’,name from vdatabase union all
select '端口号',para_value from vdm_ini where para_name=‘PORT_NUM’ union all
select ‘数据库产品ID’, id_code from dual union all
select ‘数据库版本’,substr(svr_version,instr(svr_version,’(’)) FROM vinstance union all
select '数据库模式',MODE from vinstance union all
SELECT '字符数据类型' NAME, CASE VALUE WHEN 0 THEN 'BYTE' WHEN 1 THEN 'CHAR' end FROM vparameter WHERE name like ‘%LENGTH_IN_CHAR%’ union all
select ‘唯一魔数’,cast(permanent_magic as varchar) union all
select ‘LSN’,cast(cur_lsn as varchar) from vrlog union all
select 'KEY文件属性', cluster_type from vlicense;
行号 ‘页大小’ CAST(PAGE()/1024ASvarchar)
1 页大小 32
2 簇大小 32
3 字符集 UTF-8
4 大小写敏感 0
5 VARCHAR类型长度是否以字符为单位 0
6 实例名称 GRP1_RT_01
7 数据库名 GRP1_RT_01
8 端口号 5236
9 数据库产品ID --03134284336-20250117-257733-20132
10 数据库版本 DM Database Server x64 V8
11 数据库模式 PRIMARY
12 字符数据类型 BYTE
13 字符数据类型 CHAR
14 唯一魔数 733811480
15 LSN 47004
16 KEY文件属性 1111
初始化参数介绍:
$ dminit help |grep CHARSET
CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
$ dminit help |grep CASE_SENSITIVE
CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0
$ dminit help |grep LOG_SIZE
LOG_SIZE 日志文件大小(4096),单位为:M,范围为:256M ~ 8G
LENGTH_IN_CHAR
1 或 Y:是, 所有 VARCHAR 类型对象的长度以字符为单位。
这种情况下, 定义长度并非真正按照字符长度调整,而是将存储长度值按照理论字符长度进行放大。
所以会出现实际可插入字符数超过定义长度的情况,这种情况也是允许的。同时,存储的字节长度 8188 上限仍然不变,
也就是说,即使定义列长度为 8188 字符,其实际能插入的字符串占用总字节长度仍然不能超过 8188;
0 或 N:否,所有 VARCHAR 类型对象的长度以字节为单位。默认是0。
该参数影响的仅仅是VARCHAR数据类型,对CHAR类型不影响
0、确认服务器的时间,保证新增节点的时间于原集群时间同步:date
1、备节点创建数据目录和归档目录
mkdir -p /dm8/arch
chown -R dmdba:dinstall /dm8
chmod -R 775 /dm8
mkdir -p /data/dmdata
chown -R dmdba:dinstall /data
chmod -R 775 /data
mkdir /backup
chown dmdba:dinstall /backup/
chmod 775 /backup/
2、备节点初始化实例和注册实例服务
备节点初始化实例
dminit PATH=/data/dmdata DB_NAME=DAMENG INSTANCE_NAME=GRP1_RT_03 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Dm12345678 SYSAUDITOR_PWD=Dm12345678 CASE_SENSITIVE=0 UNICODE_FLAG=1
备节点注册服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_03 -dm_ini /data/dmdata/DAMENG/dm.ini
3、主节点备份数据库并在备节点进行恢复
主节点备份数据
SQL> BACKUP DATABASE FULL FORMAT ‘/backup/PRO_%U_%d’
BACKUPINFO ‘完全备份’
MAXPIECESIZE 32768
COMPRESSED LEVEL 1
PARALLEL 3;
拷贝备份文件到备节点
$ scp -r /backup/PRO_DB_FULL_20250327_084423_742474_DAMENG dmdba@192.168.40.22:/backup/
备节点恢复数据
$ dmrman CTLSTMT=“RESTORE DATABASE ‘/data/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/backup/PRO_DB_FULL_20250327_084423_742474_DAMENG’”
$ dmrman CTLSTMT=“RECOVER DATABASE ‘/data/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/backup/PRO_DB_FULL_20250327_084423_742474_DAMENG’”
$ dmrman CTLSTMT=“RECOVER DATABASE ‘/data/dmdata/DAMENG/dm.ini’ UPDATE DB_MAGIC”
4、配置新备节点的配置文件
(1)配置 dm.ini
在备节点上配置备库的实例名为 GRP1_RT_03,dm.ini 参数修改如下:
INSTANCE_NAME = GRP1_RT_03
PORT_NUM = 5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID,主库模式为primary,备库模式为standby
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志重演信息
(2)!!!dmmal.ini配置文件从主库拷贝到新备节点,然后增加下面内容
[MAL_INST3]
MAL_INST_NAME = GRP1_RT_03
MAL_HOST = 192.168.159.4
MAL_PORT = 5336
MAL_INST_HOST = 192.168.40.22
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
(3)配置dmarch.ini,新增备节点的REALTIME配置上原有的主备节点实例名
$ vi /data/dmdata/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_02
创建 dmwatcher.ini
$ vi /data/dmdata/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /data/dmdata/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
(2)启动备节点到mount模式
$ DmServiceGRP1_RT_03 start mount
或者
$ dmserver /data/dmdata/DAMENG/dm.ini &
(3)修改新增备库的模式和设置OGUID
$ disql sysdba/Dm12345678
SP_SET_PARA_VALUE (1,‘ALTER_MODE_STATUS’,1);
sp_set_oguid(45331);
alter database standby;
SP_SET_PARA_VALUE (1,‘ALTER_MODE_STATUS’,0);
5、修改原来主备节点的信息
在原来的主备节点都动态添加mal信息:
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD(‘MAL_INST3’,‘GRP1_RT_03’,‘192.168.159.4’,5336,‘192.168.40.22’,5236,5436,0,5536);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
动态添加归档配置步骤如下:关闭原系统中所有实例的守护进程和监视器
[dmdba@db2 DAMENG]$ DmMonitorServiceMonitor01 stop
[dmdba@db2 DAMENG]$ DmWatcherServiceWatcher02 stop
[dmdba@db1 DAMENG]$ DmWatcherServiceWatcher01 stop
手动修改原系统中所有实例为 MOUNT 状态,必须先修改主库,再修改备库,否则可能会引发主备数据同步失败导致主库挂起。
原来的主备节点都修改为mount状态
//临时修改 ALTER_MODE_STATUS,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
//临时关闭守护进程活动状态检测,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, ‘DW_INACTIVE_INTERVAL’, 0);
//修改数据库为 MOUNT 状态
SQL> ALTER DATABASE MOUNT;
原来的主备节点都添加realtime的归档
SQL> ALTER DATABASE ADD ARCHIVELOG ‘DEST= GRP1_RT_03, TYPE= REALTIME’;
手动修改原系统中所有实例为 OPEN 状态,必须先修改备库,再修改主库,否则可能会引发主备数据同步失败导致主库挂起。
//修改数据库为 OPEN 状态
SQL> ALTER DATABASE OPEN FORCE;
//将 ALTER_MODE_STATUS 改回原值
SQL> SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
//将 DW_INACTIVE_INTERVAL 改回原值,本例中为 60
SQL> SP_SET_PARA_VALUE(1, ‘DW_INACTIVE_INTERVAL’, 60);
修改监视器
修改确认监视器,添加新备节点信息
$ vi /home/dmdba/dmdbms/bin/dmmonitor.ini
[GRP1]
MON_INST_OGUID = 45331
MON_DW_IP = 192.168.159.2:5436
MON_DW_IP = 192.168.159.3:5436
MON_DW_IP = 192.168.159.4:5436
修改非确认监视器,添加新备节点信息
$ vi /home/dmdba/dmdbms/bin/dmmonitor_manual.ini
[GRP1]
MON_INST_OGUID = 45331
MON_DW_IP = 192.168.159.2:5436
MON_DW_IP = 192.168.159.3:5436
MON_DW_IP = 192.168.159.4:5436
6、注册新增备库的守护进程:用root用户在备节点操作
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher03 -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini
7、启动所有守护进程以及监视器
分别启动主库和备库(包括 GRP1_RT_03)的所有守护进程,最后启动监视器。
启动三个节点的守护进程
$ DmWatcherServiceWatcher01 start
$ DmWatcherServiceWatcher02 start
$ DmWatcherServiceWatcher03 start
启动确认监听器的进程
$ DmMonitorServiceMonitor01 start
8、通过前台方式启动确认监视器,查看集群信息
dmmonitor /home/dmdba/dmdbms/bin/dmmonitor_manual.ini
show global info
文章
阅读量
获赞
