目录
1.3 启动主备库到mount,检查FILE_LSN 和CUR_LSN 及永久魔数主备是否一致
1.7 配置dmwatcher.ini(主备)
达梦数据守护系统包含诸多部件,需要在多个节点部署;部署过程包括数据准备、配置文件修改,数据一致性确认等多个步骤。本例为2节点全新实时主备(手动切换)环境搭建过程。
主备信息:
主备角色 | 服务ip | 心跳ip | 实例名 | 实例端口 |
主库 | 192.168.204.128
| 192.168.204.128 | DM1 | 5236 |
备库 | 192.168.204.130
| 192.168.204.130
| DM2 | 5236 |
1.1 主备库节点初始化实例
本例只指定数据库存放路径,页大小为16k,重做日志大小2048,字符集UTF-8,字符串比较时,结尾空格填充模式兼容。其他参数为默认参数。
1.2 使用主库备份还原备库
关闭主库
[dmdba@DM1 bin]$ cd /home/dbdba/dmdbms/bin
[dmdba@DM1 bin]$ ./DmServiceDM1 stop
备份主库
RMAN> BACKUP DATABASE '/opt/dmdbms/DAMENG/dm.ini' full backupset '/normal_bak/db_full_bak_01';
BACKUP DATABASE '/opt/dmdbms/DAMENG/dm.ini' full backupset '/normal_bak/db_full_bak_01';
file dm.key not found, use default license!
Database mode = 1, oguid = 453331
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 26255 ...
redo pwr log collect finished
EP[0]'s cur_lsn[26255], file_lsn[26255]
Processing backupset /normal_bak/db_full_bak_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
backup successfully!
time used: 00:00:04.885
[dmdba@DM1 normal_bak]$ scp -r db_full_bak_01/ 192.168.204.130:/normal_bak
dmdba@192.168.204.130's password:
db_full_bak_01.meta 100% 81KB 80.5KB/s 00:00
db_full_bak_01.bak
RMAN> restore database '/opt/dmdbms/DAMENG/dm.ini' from backupset '/normal_bak/db_full_bak_01';
restore database '/opt/dmdbms/DAMENG/dm.ini' from backupset '/normal_bak/db_full_bak_01';
file dm.key not found, use default license!
[Percent:0.00%][Speed:0.00M/s][Cost:00:00:00][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:01][Remaining:00:00:00]
restore successfully.
time used: 00:00:01.431
RMAN> recover database '/opt/dmdbms/DAMENG/dm.ini' from backupset '/normal_bak/db_full_bak_01';
recover database '/opt/dmdbms/DAMENG/dm.ini' from backupset '/normal_bak/db_full_bak_01';
Database mode = 1, oguid = 453331
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26255], file_lsn[26255]
no log generates while the backupset [/normal_bak/db_full_bak_01] created
recover successfully!
time used: 315.652(ms)
RMAN> recover database '/opt/dmdbms/DAMENG/dm.ini' update db_magic;
recover database '/opt/dmdbms/DAMENG/dm.ini' update db_magic;
Database mode = 1, oguid = 453331
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26255], file_lsn[26255]
recover successfully!
time used: 00:00:01.013
1.3 启动主备库到mount,检查FILE_LSN 和CUR_LSN 及永久魔数主备是否一致
1.4 修改dm.ini参数(主备)
[dmdba@localhost DAMENG]$ vi dm.ini
NSTANCE_NAME=DM0 #DM1为主库实例名,备库为DM2
DW_PORT = 33141 #守护环境下,监听守护进程连接端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
1.5 配置dmmal.ini文件(主备)
[dmdba@localhost DAMENG]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DM1 #实例名
MAL_HOST = 192.168.204.128 #MAL 系统监听 TCP 连接的私网 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.204.128 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.204.130
MAL_PORT = 61142
MAL_INST_HOST = 192.168.204.130
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
1.6 配置归档dmarch.ini文件
主库上添加内容(DM1实例):
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dmdbms/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 M,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 M,0 表示无限制,范围 1024~4294967294M
备库上添加内容(DM2实例):
[dmdba@localhost DAMENG]$ vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM1 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dmdbms/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M
1.7 配置dmwatcher.ini(主备)
[root@DM1 DAMENG]# vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式,设为 AUTO 则为自动切换
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /opt/dmdbms/DAMENG/dm.ini #dm.ini 配置文件 路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD =/home/dbdba/dmdbms/bin/dmserver #命令行 方式启动
1.8 设置 OGUID (主备)
SQL> sp_set_oguid(453331);
1.9 修改数据库模式
SQL> alter database primary; --主库
SQL> alter database standby; --备库
1.10 启动守护进程(主备)
./dmwatcher /opt/dmdbms/DAMENG/dmwatcher.ini
1.11 每个节点都配置普通监视器
由于主库和实时备库的守护进程配置为手动切换模式,因此这里选择配置普
通监视器。编辑 dmmonitor.ini 配置普通监视器,其中 MON_DW_IP 中的 IP 和
PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。
MON_DW_Confirm = 0 #普通监视器模式
MON_LOG_PATH = /dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值 #以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置 #ip对应dmmal.ini中的MAL_HOST,PORT对dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.204.128:52141
MON_DW_IP = 192.168.204.130:52142
[root@DM1 bin]# ./dmmonitor /home/dbdba/dmdbms/bin/dmmonitor.ini
[monitor] 2021-05-10 15:04:53: DMMONITOR[4.0] V8
[monitor] 2021-05-10 15:04:53: DMMONITOR[4.0] IS READY.
[monitor] 2021-05-10 15:04:53: Received message from(DM1)
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2021-05-10 15:04:53 STARTUP OK DM1 MOUNT PRIMARY VALID 2 26255 26255
1.12 注册服务
1.12.1注册数据库服务
主库:
[root@DM1 dmdata]# cd /home/dbdba/dmdbms/script/root/
[root@DM1 root]# ./dm_service_installer.sh -t dmserver -dm_ini /opt/dmdbms/DAMENG/dm.ini -m mount -p DM01
Move the service script file(/home/dbdba/dmdbms/bin/DmServiceDM01 to /etc/rc.d/init.d/DmServiceDM01)
Finished to create the service (DmServiceDM01)
备库:
[root@localhost ~]# cd /home/dmdba/dmdbms/script/root/
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /opt/dmdbms/DAMENG/dm.ini -m mount -p DM02
Move the service script file(/home/dmdba/dmdbms/bin/DmServiceDM02 to /etc/rc.d/init.d/DmServiceDM02)
Finished to create the service (DmServiceDM02)
1.12.2注册守护进程服务
主库:
[root@DM1 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dmdbms/DAMENG/dmwatcher.ini -p DMW1
Move the service script file(/home/dbdba/dmdbms/bin/DmWatcherServiceDMW1 to /etc/rc.d/init.d/DmWatcherServiceDMW1)
Finished to create the service (DmWatcherServiceDMW1)
备库:
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dmdbms/DAMENG/dmwatcher.ini -p DMW2
Move the service script file(/home/dmdba/dmdbms/bin/DmWatcherServiceDMW2 to /etc/rc.d/init.d/DmWatcherServiceDMW2)
Finished to create the service (DmWatcherServiceDMW2)
1.12.3注册监视器服务
主库:
[root@DM1 root]# ./dm_service_installer.sh -t dmmonitor -monitor_ini /opt/dmdbms/DAMENG/dmmonitor.ini -p DMM1
Move the service script file(/home/dbdba/dmdbms/bin/DmMonitorServiceDMM1 to /etc/rc.d/init.d/DmMonitorServiceDMM1)
Finished to create the service (DmMonitorServiceDMM1)
1.13 配置dm_svc.conf
在/etc 目录下会自动生成集群的dm_svc.conf配置文件,请自行复制它到客户端机器的相关目录下:
dm_svc.conf配置文件,Windows平台下位于%SystemRoot%\system32目录,Linux平台下位于/etc目录。
TIME_ZONE=(+8:00)
LANGUAGE=(en)
DM_DW=(192.168.204.128:5236,192.168.204.130:5236)
[DM_DW]
LOGIN_MODE=(1)
SWITCH_TIME=2000
SWITCH_INTERVAL=10
此处需要注意将服务名(红色字体部分)改为:DM_DW 或自己需要的。