Loading

读写分离集群搭建

1部署规划

读写分离集群适合读多写少的应用环境。
Ip规划

主机名 服务ip 数据库名 实例名
DM_1 192.168.44.172 DMSERVER rw_1
DM_2 192.168.44.167 DMSERVER rw_2

目录规划:

数据库软件安装目录 /dm8/dmdbms/bin
实例安装目录 /dm8/dmdata
归档日志存放目录 /dm8/dmarch
备份文件存放目录 /dm8/dmbak

2 数据库软件安装

同 DM8 单机简易部署,执行到执行 DMInstall.bin 安装即可

3 初始化实例

2 个节点完成实例初始化
./dminit path=/dm8/dmdata db_name=DMSERVER instance_name=rw_1 port_num=5236
./dminit path=/dm8/dmdata db_name=DMSERVER instance_name=rw_2 port_num=5246


以主机 DM_1 为读写分离主库,启动实例
到 /dm8/dmdbms/bin
./dmserver /dm8/dmdata/DMSERVER/dm.ini

出现 system is ready 后输入 exit 停止数据库。

4 脱机备份数据库

在主机DM_1 上执行以下命令,确认主库 dmap 服务已启动:
ps -ef|grep dmap

发现dmap 服务未启动,dmdba 到安装目录的 bin 下执行以下命令:
./DmAPService start

dmdba用户启动dmrman工具
./dmrman
执行 backup 全库:
backup database '/dm8/dmdata/DMSERVER/dm.ini' backupset '/dm/dmbak/bakfull';

将数据库目录和备份文件从节点 01 分别拷贝到每个节点上
scp -r /dm8/dmdata/DMSERVER 192.168.44.167:/dm8/dmdata
scp -r /dm8/dmbak/bakfull 192.168. 44.167:/dm8/dmbak

5 备份还原备库

在DM_2上使用 dmrman 工具还原备库:
restore database '/dm8/dmdata/DMSERVER/dm.ini' from backupset '/dm8/dmbak';
recover database '/dm8/dmdata/DMSERVER/dm.ini' from backupset '/dm8/dmbak';
recover database '/dm8/dmdata/DMSERVER/dm.ini' update db_magic;

6 修改dm.ini参数

所有节点都要修改
执行以下命令:
vim /dm8/dmdata/DMSERVER/dm.ini
主库 DM_1 上修改以下参数值:
INSTANCE_NAME = rw_1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库 DM_2 上修改以下参数值:
INSTANCE_NAME = rw_2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

7 配置归档配置文件 dmarch.ini

在实例目录下新建文件 dmarch.ini,执行以下命令:
vim /dm8/dmdata/DMSERVER/dmarch.ini
主库 DM_1 上添加以下内容:
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = RW_2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 76800

备库 DMSERVER02 上添加以下内容:
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = RW_1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCALARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 76800

8 配置 MAL 系统配置文件 dmmal.ini

在实例目录下新建文件 dmmal.ini,执行以下命令。
vim /dm8/dmdata/DMSERVER/dmmal.ini
主备库 2 个节点文件内容要相同。
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15

[MAL_INST1]
MAL_INST_NAME = RW_1
MAL_HOST = 192.168.44.171
MAL_PORT = 5235
MAL_INST_HOST =192.168.44.171
MAL_INST_PORT =5236
MAL_DW_PORT =5237
MAL_INST_DW_PORT = 5238

[MAL_INST2]
MAL_INST_NAME = RW_2
MAL_HOST = 192.168.44.167
MAL_PORT = 5245
MAL_INST_HOST = 192.168.44.167
MAL_INST_PORT = 5246
MAL_DW_PORT = 5247
MAL_INST_DW_PORT = 5248

9 配置守护进程配置文件 dmwatcher.ini

在实例目录下新建文件 dmwatcher.ini,执行以下命令:
vim /dm8/dmdata/DMSERVER/dmwatcher.ini
主备库节点文件内容要相同。
[GRP_RW]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 30
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 20
INST_OGUID = 202269
INST_INI = /dm8/dmdata/DMSERVER/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver

以 mount 方式启动数据库实例
使用 dmdba 用户,执行以下命令(主备库都执行):
./dmserver /dm8/dmdata/DMSERVER/dm.ini mount (无需关闭)

在新的终端使用 disql 工具连接数据库:
./disql SYSDBA/SYSDBA:5236
主备库都修改 oguid,执行以下命令:
sp_set_oguid(202269);
主库 DM_1 上修改数据库模式为 primary,执行以下命令:
alter database primary;

备库 DM_2 上修改数据库模式为 standby,执行以下命令:
alter database standby;

启动守护进程 dmdba 用户下,到数据库安装目录的 bin 下执行以下命令(主备库都执
行):
./dmwatcher /dm8/dmdata/DMSERVER/dmwatcher.ini

守护进程启动后,会将 Mount 的实例 Open。启动监视器守护进程配置为自动切换时,必 须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备 心跳网络端口开放)。
新建确认监视器配置文件 dmmonitor.ini,执行以下命令:
vim /dm8/dmdbms/bin/dmmonitor.ini
添加以下内容:
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 200
MON_LOG_SPACE_LIMIT = 1024
[GRP_RW]
MON_INST_OGUID = 202269
MON_DW_IP = 192.168.44.171:5237
MON_DW_IP = 192.168.44.167:5247

执行以下命令,启动监视器。
./dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini
启动后输入 show 命令查看集群状态。

10注册服务

在主和备数据库服务器上分别注册实例服务和守护进程服务。
在监视器所在服务器上注册监视器服务。

注册服务的脚本在安装目录下dmdbms的script/root下面。
使用root用户在主数据库服务器上执行以下命令:

注册主库实例服务:
./dm_service_installer.sh -t dmserver -dm_ini /dm8/dmdata/DMSERVER/dm.ini -m mount -p RW_1
注册主库守护进程服务:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/dmdata/DMSERVER/dmwatcher.ini -p RW_1

注册成功以后会在/opt/dmdbms/bin目录下生成对应的服务脚本。
使用root用户在备数据库服务器上执行以下命令

注册备库服务:
./dm_service_installer.sh -t dmserver -dm_ini /dm8/dmdata/DMSERVER/dm.ini -m mount -p RW_2
注册备库守护进程服务:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/dmdata/DMSERVER/dmwatcher.ini -p RW_2

在监视器服务器上使用root用户在备数据库服务器上执行以下命令。
注册监视器服务
./dm_service_installer.sh -t dmmonitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini -p DM_RW

posted @ 2022-08-29 00:14  tazimi  阅读(66)  评论(0编辑  收藏  举报