文章目录
前言
实时主备
达梦数据库实时主备的原理是主库修改数据产生的REDO日志, 通过实时归档机制, 在写入本地REDO之前发送给备库,备库接收到REDO后重新应用REDO日志来保持与主库数据同步,当主库故障时, 备库再将所有REOD日志应用完成后,就切换为主库对外提供服务。
本文主要介绍在Linux系统中规范化部署达梦数据库两节点主备集群的过程,以供学习参考。
一、环境准备
1.1创建虚拟机
搭建DM两节点主备集群需要准备2台服务器,一台主库服务器,一台备库服务器,备库服务器也作为监视器服务器使用,2台服务器都需要安装有DM数据库软件。
1.1.1 IP地址规划
主库 IP: 192.168.10.112 实例名 its1 数据库名称 its
备库 IP: 192.168.10.113 实例名 its2 数据库名称 its
1.1.2 端口规划
MAL_INST_PORT 5236 数据库实例监听端口
MAL_PORT 61141 MAL 系统监听 TCP 连接的端口
MAL_DW_PORT 33141 实例监听守护进程 TCP 连接的端口
MAL_INST_DW_PORT 52141 实例本地的守护进程监听 TCP 连接的端口
1.1.3 目录规划
数据库软件安装目录 /home/dmdba/dmdbms
实例安装目录 /home/dmdba/dmdata
归档日志存放目录 /home/dmdba/dmarch
备份文件存放目录 /home/dmdba/dmbak
1.1.4 前期准备
用户与组
DM 数据库不应该使用 root 用户安装和维护。需要在安装之前为 DM 数据库创建一个专用的系统用户 (dmdba) 和用户组(dinstall),并设置系统用户dmdba的密码。
关闭防火墙
查看防火墙状态,如果显示为active,需要关闭防火墙,禁用则开机不启动防火墙。
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
关闭SELinux
查看是否开启了SELinux,如果显示为Enforcing,需要改为Disabled,再重启系统使配置生效。
getenforce
vi /etc/selinux/config
#进入文件后修改 SELINUX = disabled
#保存退出文件
reboot
二、数据库软件安装(两个节点相同操作)
1.命令行形式安装
进入达梦软件挂载目录,执行./DMInstall.bin -i 命令
按照要求使用root用户执行脚本
2.初始化数据库实例
1、主库
[dmdba@k8s112 bin]$ ./dminit PATH=/home/dmdba/dmdata db_name=its instance_name=its1
2、备库
[dmdba@k8s113 bin]$ ./dminit PATH=/home/dmdba/dmdata db_name=its instance_name=its2
3.前台启动各个实例,启动后关闭
1、主库
[dmdba@k8s112 bin]$ ./dmserver /home/dmdba/dmdata/its/dm.ini
2、备库
[dmdba@k8s113 bin]$ ./dmserver /home/dmdba/dmdata/its/dm.ini
4.主库进行脱机备份
脱机备份前要关闭数据库实例,否则备份会出错
[dmdba@k8s112 bin]$ ./dmrman
dmrman V8
RMAN> BACKUP DATABASE ‘/home/dmdba/dmdata/its/dm.ini’ FULL BACKUPSET ‘/home/dmdba/dmbak/full_database’;
5.备库进行数据恢复
1、主库复制备份文件到备库
[dmdba@k8s112 bin]$ scp -r /home/dmdba/dmbak/full_database
192.168.10.113:/home/dmdba/dmbak/
2、备库进行恢复
[dmdba@k8s113 bin]$ ./dmrman
dmrman V8
RMAN> RESTORE DATABASE ‘/home/dmdba/dmdata/its/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmbak/full_database’;
RMAN> RECOVER DATABASE ‘/home/dmdba/dmdata/its/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmbak/full_database’;
RMAN> RECOVER DATABASE ‘/home/dmdba/dmdata/its/dm.ini’ UPDATE DB_MAGIC;
三、配置文件设置
1.主库配置所需配置文件
1、dm.ini
[dmdba@k8s112 ~]$ vi /home/dmdba/dmdata/its/dm.ini
INSTANCE_NAME = its1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
2、dmarch.ini
[dmdba@k8s112 ~]$ vi /home/dmdba/dmdata/its/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = its2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/home/dmdba/dmarch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 10240
3、dmmal.ini
[dmdba@k8s112 ~]$ vi /home/dmdba/dmdata/its/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = its1
MAL_HOST = 192.168.10.112
MAL_PORT = 61141
MAL_INST_HOST = 192.168.10.112
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = its2
MAL_HOST = 192.168.10.113
MAL_PORT = 61141
MAL_INST_HOST = 192.168.10.113
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
4、dmwatcher.ini
[dmdba@k8s112 ~]$ vi /home/dmdba/dmdata/its/dmwatcher.ini
[GRP_RW]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdba/dmdata/its/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
2.备库配置所需配置文件
1、dm.ini
[dmdba@k8s113 ~]$ vi /home/dmdba/dmdata/its/dm.ini
INSTANCE_NAME = its2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
2、dmarch.ini
[dmdba@k8s113 ~]$ vi /home/dmdba/dmdata/its/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = its1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/home/dmdba/dmarch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 10240
3、dmmal.ini
[dmdba@k8s113 ~]$ vi /home/dmdba/dmdata/its/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = its1
MAL_HOST = 192.168.10.112
MAL_PORT = 61141
MAL_INST_HOST = 192.168.10.112
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = its2
MAL_HOST = 192.168.10.113
MAL_PORT = 61141
MAL_INST_HOST = 192.168.10.113
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
4、dmwatcher.ini
[dmdba@k8s113 ~]$ vi /home/dmdba/dmdata/its/dmwatcher.ini
[GRP_RW]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdba/dmdata/its/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
四、启动主备集群
1.启动数据库实例
使用 dmdba 用户,到数据库安装目录的 bin 下执行以下命令。
(主备库都执行)
./dmserver /home/dmdba/dmdata/its/dm.ini mount
另外开一个新的终端,使用 disql 工具连接数据库,修改 oguid。
(主备库都执行)
./disql SYSDBA/SYSDBA
#连接成功后修改 oguid sp_set_oguid(453331);
主库修改数据库模式为 primary,执行以下命令:
alter database primary;
备库修改数据库模式为 standby,执行以下命令:
alter database standby;
2.启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行。
(主备库都执行) 守护进程启动后,会将 Mount 的实例 Open。
./dmwatcher /home/dmdba/dmdata/its/dmwatcher.ini
五、在备库上配置监视器
1、监视器配置文件
[dmdba@k8s113 ~]$ vi /home/dmdba/dmdata/its/dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP_RW]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.10.112:52141
MON_DW_IP = 192.168.10.113:52141
2、启动监视器
[dmdba@k8s113 bin]$ ./dmmonitor /home/dmdba/dmdata/its/dmmonitor.ini
测试切换备库为主库:switchover its2
六、disql客户端验证主备集群
1.使用 disql 客户端登录主库,创建测试表,插入数据。
./disql SYSDBA/SYSDBA@192.168.10.112:5236
2.使用 disql 客户端登录备库,查询测试表验证。
./disql SYSDBA/SYSDBA@192.168.10.113:5236
总结
本文主要介绍在CentOS7(Linux 系统)规范化部署 DM 两节点主备集群的过程。如果文中有误,欢迎指出。