注册
单机不停库搭建实时备库
专栏/培训园地/ 文章详情 /

单机不停库搭建实时备库

dm_forever 2025/05/13 62 0 0
摘要

1安装前准备

1.1集群规划

使用版本:03134284393-20250324-265835-20151
在此版本之后的版本均可实现不停机搭建备库

A机器 B机器
业务IP 172.10.80.81 172.10.80.82
心跳IP 192.168.80.81 192.168.80.82
实例名 DMSERVER DMSERVER1
实例端口 15236 15236
MAL端口 15336 15336
MAL守护进程端口 15436 15436
守护进程端口 15536 15536
OGUID 45331234 45331234
守护组 GDW_11 GDW_11
安装目录 /dmdba/dmdbms_1 /dmdba/dmdbms_1
备份目录 /dmdba/dmdata1/DAMENG/bak /dmdba/dmdata1/DAMENG/bak
归档目录 /dmdba/dmdata1/DAMENG/arch /dmdba/dmdata1/DAMENG/arch
实例目录 /dmdba/dmdata1 /dmdba/dmdata1
归档上限 51200 51200

1.2集群架构

image.png

2创建单机数据库

2.1创建实例(如已存在可忽略此步骤)

--初始化实例
[dmdba@~]# /dmdba/dmdbms_1/bin/dminit PATH=/dmdba/dmdata1/ INSTANCE_NAME=DMSERVER PAGE_SIZE=32 LOG_SIZE=2048 PORT_NUM=15236 SYSDBA_PWD=Sysdba123 SYSAUDITOR_PWD=Sysdba123
--注册服务
[root@~]# /dmdba/dmdbms_1/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dmdba/dmdata1/DAMENG/dm.ini

2.2启动数据库并修改参数

[dmdba@~]# /dmdba/dmdbms_1/bin/DmServiceDMSERVER start
[dmdba@~]# /dmdba/dmdbms_1/bin/disql <SYSDBA/Sysdba123@172.10.80.81:15236>
--开启归档,如果已经开启过归档可忽略此步骤
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdba/dmdata1/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
SQL> ALTER DATABASE OPEN;
--修改dm.ini
SQL> SP_SET_PARA_VALUE (1,'DW_INACTIVE_INTERVAL',60);
SQL> SP_SET_PARA_VALUE (1,'ALTER_MODE_STATUS',0);
SQL> SP_SET_PARA_VALUE (1,'ENABLE_OFFLINE_TS',2);

2.3创建dmmal.ini并开启MAL_INI参数

[dmdba@~]# vi /dmdba/dmdata1/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间
MAL_TEMP_PATH = /dmdba/dmdata1/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个MAL缓存大小,单位MB
MAL_SYS_BUF_SIZE = 2048 #MAL总大小限制,单位MB
MAL_COMPRESS_LEVEL = 0 #MAL消息压缩等级,0表示不压缩
[MAL_INST1]
MAL_INST_NAME = DMSERVER #实例名,和 dm.ini的INSTANCE_NAME一致
MAL_HOST = 192.168.80.81 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15336 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 172.10.80.81 #实例的对外服务IP地址
MAL_INST_PORT = 15236 #实例对外服务端口,和dm.ini的PORT_NUM一致
MAL_DW_PORT = 15436 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 15536 #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = DMSERVER1
MAL_HOST = 192.168.80.82
MAL_PORT = 15336
MAL_INST_HOST = 172.10.80.82
MAL_INST_PORT = 15236
MAL_DW_PORT = 15436
MAL_INST_DW_PORT = 15536

[dmdba@~]# /dmdba/dmdbms_1/bin/disql <SYSDBA/Sysdba123@172.10.80.81:15236>
SQL> SP_SET_PARA_VALUE (1,'MAL_INI',1);

2.4在线修改dmarch.ini配置

[dmdba@~]# /dmdba/dmdbms_1/bin/disql <SYSDBA/Sysdba123@172.10.80.81:15236>
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=DMSERVER1,TYPE=REALTIME';
--备份数据
SQL> BACKUP DATABASE BACKUPSET '/dmdba/dmdata1/DAMENG/bak/BACKUP_FILE';

2.5创建dmwatcher.ini

[dmdba@~]# vi /dmdba/dmdata1/DAMENG/dmwatcher.ini
[GDW_11]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #故障手动切换模式
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331234 #守护系统唯一OGUID值
INST_INI = /dmdba/dmdata1/DAMENG/dm.ini #dm.ini文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dmdba/dmdbms_1/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

[root@~]# /dmdba/dmdbms_1/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdba/dmdata1/DAMENG/dmwatcher.ini

2.6修改服务名启动方式

[dmdba@~]# vi /dmdba/dmdbms_1/bin/DmServiceDMSERVER
--将START_MODE改为mount
START_MODE=mount

3配置B机器

3.1新建实例

[dmdba@~]# /dmdba/dmdbms_1/bin/dminit PATH=/dmdba/dmdata1/ INSTANCE_NAME=DMSERVER1 PAGE_SIZE=32 LOG_SIZE=2048 PORT_NUM=15236 SYSDBA_PWD=Sysdba123 SYSAUDITOR_PWD=Sysdba123

3.2启动数据库并修改参数

[dmdba@~]# /dmdba/dmdbms_1/bin/DmServiceDMSERVER1 start
[dmdba@~]# /dmdba/dmdbms_1/bin/disql SYSDBA/Sysdba123@172.10.80.82:15236
--开启归档
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdba/dmdata1/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
SQL> ALTER DATABASE OPEN;
--修改dm.ini
SQL> SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1);
[dmdba@~]# /dmdba/dmdbms_1/bin/DmServiceDMSERVER1 stop

3.3替换dmarch.ini

[dmdba@~]# vi /dmdba/dmdata1/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdba/dmdata1/DAMENG/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位MB
ARCH_FLUSH_BUF_SIZE = 2 #归档合并刷盘缓存大小
ARCH_HANG_FLAG = 1 #本地归档写入失败时系统是否挂起
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSERVER #实时归档目标实例名

3.4从A机器将配置文件和备份拷贝到B机器

与A机器DMSERVER的dmmal.ini、dmwatcher.ini相同,将A机器的配置文件scp到B机器
--拷贝配置文件
[dmdba@~]# scp -r /dmdba/dmdata1/DAMENG/dmmal.ini dmwatcher.ini <dmdba@192.168.80.82:/dmdba/dmdata1/DAMENG/>
--拷贝备份
[dmdba@~]# scp -r /dmdba/dmdata1/DAMENG/bak/BACKUP_FILE dmdba@192.168.80.82:/dmdba/dmdata1/DAMENG/bak/

3.5注册服务

[root@~]# /dmdba/dmdbms_1/script/root/dm_service_installer.sh -t dmserver -p DMSERVER1 -dm_ini /dmdba/dmdata1/DAMENG/dm.ini -m mount
[root@~]# /dmdba/dmdbms_1/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdba/dmdata1/DAMENG/dmwatcher.ini

3.6恢复数据

[dmdba@~]# /dmdba/dmdbms_1/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdba/dmdata1/DAMENG/dm.ini' FROM BACKUPSET '/dmdba/dmdata1/DAMENG/bak/BACKUP_FILE'"
[dmdba@~]# /dmdba/dmdbms_1/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdba/dmdata1/DAMENG/dm.ini' FROM BACKUPSET '/dmdba/dmdata1/DAMENG/bak/BACKUP_FILE'"
[dmdba@~]# /dmdba/dmdbms_1/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdba/dmdata1/DAMENG/dm.ini' UPDATE DB_MAGIC"

4配置监视器

4.1创建dmmonitor.ini

[dmdba@~]# vi /dmdba/dmdbms_1/bin/dmmonitor.ini
MON_DW_CONFIRM = 0 #0为非确认,1为确认
MON_LOG_PATH = /dmdba/dmdbms_1/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位MB
[GDW_11]
MON_INST_OGUID = 45331234 #组GDW_11的唯一OGUID 值
MON_DW_IP = 192.168.80.81:15436 #IP对应MAL_HOST,PORT对应MAL_DW_PORT
MON_DW_IP = 192.168.80.82:15436

5启动服务及查看信息

5.1启动数据库并修改参数

  • A机器
    [dmdba@~]# /dmdba/dmdbms_1/bin/disql SYSDBA/SYSDBA@172.10.80.81:15236
    SQL> SP_SET_OGUID(45331234);
    SQL> ALTER DATABASE PRIMARY FORCE;
  • B机器
    [dmdba@~]# /dmdba/dmdbms_1/bin/DmServiceDMSERVER1 start
    [dmdba@~]# /dmdba/dmdbms_1/bin/disql SYSDBA/SYSDBA@172.10.80.82:15236
    SQL> SP_SET_OGUID(45331234);
    SQL> ALTER DATABASE STANDBY;

5.2启动守护进程

A/B机器:[dmdba@~]# /dmdba/dmdbms_1/bin/DmWatcherServiceWatcher start

5.3启动监视器

前台启动:[dmdba@~]# /dmdba/dmdbms_1/bin/dmmonitor /dmdba/dmdbms_1/bin/dmmonitor.ini

5.4启停集群

**启动:**A/B机器守护进程
A/B机器:[dmdba@~]# /dmdba/dmdbms_1/bin/DmWatcherServiceWatcher start
**停止:**A/B机器守护进程→A机器DMSERVER主库→B机器DMSERVER1备库
A/B机器:[dmdba@~]# /dmdba/dmdbms_1/bin/DmWatcherServiceWatcher stop
A机器:[dmdba@~]# /dmdba/dmdbms_1/bin/DmServiceDMSERVER stop
B机器:[dmdba@~]# /dmdba/dmdbms_1/bin/DmServiceDMSERVER1 stop

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服