注册
达梦数据库学习之数据守护集群搭建
专栏/培训园地/ 文章详情 /

达梦数据库学习之数据守护集群搭建

旺旺 2024/10/31 475 0 0
摘要

一、前期安排
1.1 环境准备
• 二台虚拟机,分别作为主库、实时备库。
• 一台虚拟机,作为监视器。
• 检查设备参数、操作系统版本、内存空间等情况。
• 创建系统用户(dmdba)及其用户组(dinstall)。
• 修改 dmdba 用户资源限制和环境变量。
• 关闭防火墙和SELinux等。
• 安装数据库 DM8 并初始化实例。
• 创建所需目录。
1.2 前期规划
本地目录规划
目录路径及其可用空间可以根据业务需求修改,本文仅作学习使用,故而未单独挂载那么多磁盘,可用空间也无需太大。
用途 目录路径 备注
数据库软件安装目录 /dm8 可用空间>50 GB(视情况而定)
实例安装目录 /dm8/data 单独挂载性能最好的磁盘
归档日志存放目录 /dm8/arch 单独挂载磁盘
备份文件存放目录 /dm8/backup 单独挂载磁盘
IP及实例规划
服务器 public ip private ip 实例名
监视器 MONITOR 100.94.18.154 / DM_MONITOR
主库 MAINFRAME 100.94.18.210 100.93.60.119 DM_MF
实时备库 SYNC 100.94.18.208 100.93.60.118 DM_SYNC

端口规划
不同主机最好是相同用途的端口配置成相同的端口号,实际中也可以按需要修改端口号。端口规划如下:
端口 用途
5246 数据库实例监听端口
45101 MAL 系统监听 TCP 连接的端口
55101 实例本地的守护进程监听 TCP 连接的端口
65101 实例监听守护进程 TCP 连接的端口
二、备份与还原
在主库进行脱机备份,然后把备份文件传输到实时备库和异步备库,然后分别在备库通过drmman工具进行还原和恢复。
2.1 主库脱机备份
主库进行脱机备份,将备份文件分别传输到实时备库和异步备库。
1.初始化的实例必须先启动一次,才能脱机备份。
cd /dm8/bin
./dmserver path=/dm8/data/GRP1_RT_01/dm.ini

当出现 “SYSTEM IS READY.” 说明已经启动成功,可以 exit 退出实例,进行下一步备份还原。
2.查看主库DMAP服务是否已启动。
ps -ef|grep dmap

[dmdba@testdb data]$ ps -ef|grep dmap
dmdba 12851 11025 0 10:11 pts/1 00:00:00 grep --color=auto dmap
dmdba 58976 1 0 Oct26 ? 00:00:25 /dm8/bin/dmap

如图,第一行显示为已启动,进程号为58976。
未启动则先启动DMAP服务
dmdba 到安装目录的 bin 下执行以下命令:
cd /dm8/bin
./GRP1_RT_01 start

3.脱机备份主库
关闭数据库后,使用 dmrman 工具脱机备份主库,dmdba 用户到安装目录的 bin 下执行以下命令:
./dmrman

执行 backup 备份全库

./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/GRP1_RT_01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'"

5.拷贝主库备份到备库
scp /dm8/backup/BACKUP_FILE_01 100.94.18.208:/dm8/backup

2.2 备库还原
实时备库进行还原恢复操作。
使用 dmrman 工具还原备库
关闭数据库后,dmdba 用户到安装目录的 bin 下通过 dmrman 工具恢复。

./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/GRP1_RT_03/dm.ini' FROM BACKUPSET '/dm8/backup'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/GRP1_RT_03/dm.ini' FROM BACKUPSET '/dm8/backup'"

./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/GRP1_RT_03/dm.ini' UPDATE DB_MAGIC"
三、添加配置文件
本章节涉及配置文件均放在 /dm8/data/GRP1_RT_0x/ 目录下。
3.1 主库实例配置文件 dm.ini
使用 dmdba 用户,执行以下命令,分别修改相应参数值。
vi /dm8/data/GRP1_RT_0x/dm.ini

--------主库primary配置------------
dm.ini

INSTANCE_NAME = GRP1_RT_01
PORT_NUM = 5246
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

3.2 主库归档配置文件 dmarch.ini
在实例目录下新建文件 dmarch.ini,使用 dmdba 用户,执行命令,添加内容。
vi /dm8/data/GRP1_RT_0x/dmarch.ini

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_03
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
3.3主库MAL系统配置文件 dmmal.ini
在实例目录下新建文件 dmmal.ini,使用 dmdba 用户,执行以下命令:
vi /dm8/data/GRP1_RT_0x/dmmal.ini

dmmal.ini

MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 100.94.18.210
MAL_PORT = 55101
MAL_INST_HOST = 100.94.18.210
MAL_INST_PORT = 5246
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_03
MAL_HOST = 100.94.18.208
MAL_PORT = 55121
MAL_INST_HOST = 100.94.18.208
MAL_INST_PORT = 5246
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
3.4 主库守护进程配置文件 dmwatcher.ini
在实例目录下新建文件 dmwatcher.ini,使用 dmdba 用户,执行以下命令:
vi /dm8/data/GRP1_RT_0x/dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/GRP1_RT_01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

3.5 备库实例配置文件 dm.ini
使用 dmdba 用户,执行以下命令,分别修改相应参数值。
vi /dm8/data/GRP1_RT_0x/dm.ini

-------------------------备库standby配置----------------------
standby

dm.ini

INSTANCE_NAME = GRP1_RT_03
PORT_NUM = 5246
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64 MON = 64

3.6 备库归档配置文件 dmarch.ini
在实例目录下新建文件 dmarch.ini,使用 dmdba 用户,执行命令,添加内容。
vi /dm8/data/GRP1_RT_0x/dmarch.ini


dmarch.ini (注:arch_dest备机写主机实例,主机写备机实例)

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
3.7备库MAL系统配置文件 dmmal.ini
在实例目录下新建文件 dmmal.ini,使用 dmdba 用户,执行以下命令:
vi /dm8/data/GRP1_RT_0x/dmmal.ini


dmmal.ini

MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 100.94.18.210
MAL_PORT = 55101
MAL_INST_HOST = 100.94.18.210
MAL_INST_PORT = 5246
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_03
MAL_HOST = 100.94.18.208
MAL_PORT = 55121
MAL_INST_HOST = 100.94.18.208
MAL_INST_PORT = 5246
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
3.8 备库守护进程配置文件 dmwatcher.ini
在实例目录下新建文件 dmwatcher.ini,使用 dmdba 用户,执行以下命令:
vi /dm8/data/GRP1_RT_0x/dmwatcher.ini


dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/GRP1_RT_03/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_APPLY_THRESHOLD = 0

3.9 配置监视器文件 dmmonitor.ini
--配置
dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 100.94.18.210:65101
MON_DW_IP = 100.94.18.208:65121

四、启动集群
4.1 启动数据库实例
使用 dmdba 用户,到数据库安装目录的 bin 下执行以下命令。
主库、实时备库:
启动主库
./dmserver /dm8/data/GRP1_RT_01/dm.ini mount
或者
cd /dm8/bin
./DmServiceGRP1_RT_01 mount

修改主库的模式和设置oguid。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

以 Mount 方式启动备库
./dmserver /dm8/data/GRP1_RT_03/dm.ini mount
或者
cd /dm8/bin
./DmServiceGRP1_RT_03 mount

设置备库模式和oguid值
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
4.2 启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行。
主库、实时备库:

启主库守护进程
[dmdba@/dm8/bin]#./dmwatcher /dm8/data/GRP1_RT_01/dmwatcher.ini

启备库守护进程
[dmdba@/dm8/bin]#./dmwatcher /dm8/data/GRP1_RT_03/dmwatcher.ini
4.3 启动监视器
dmdba 用户下,到数据库安装目录的 bin 下执行。

注册主库的守护进程
[root@~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/GRP1_RT_01/dmwatcher.ini

注册备库的守护进程
[root@~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/GRP1_RT_03/dmwatcher.ini
五、验证数据同步
5.1 主库和实时备库数据同步
1.主库:使用 disql 客户端登录,创建测试表,插入数据。
./disql SYSDBA/SYSDBA@100.94.18.210:5246

SQL> create table test(id int, name varchar2(20));
SQL> insert into test values (1, 'one');
SQL> select * from test;
SQL> commit;

2.实时备库:使用 disql 客户端登录,查询测试表验证。
./disql SYSDBA/SYSDBA@100.94.18.208:5246

SQL> select * from test;

如果主库插入/更改数据后未提交(commit),在备库查询时,仍然会是未插入/更改之前的数据。直到主库提交后,才会使主备库数据同步,此时再次查询备库的表数据,两边数据一致。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服