暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8读写分离集群部署

原创 猫瞳映月 2023-04-14
435

1、环境规划

1.1、主机IP信息

主机名

OS系统版本

服务IP

心跳IP

备注

rw1

CentOS7.7

192.168.100.51

192.168.187.51

rw2

CentOS7.7

192.168.100.52

192.168.187.52

rw3

CentOS7.7

192.168.100.53

192.168.187.53

1.2、集群端口规划

数据库名

实例名

实例端口

MAL_PORT

MAL_DW_PORT

MAL_INST_DW_PORT

dmdb

rw1

5236

7336

7436

7536

dmdb

rw2

5236

7336

7436

7536

dmdb

rw3

5236

7336

7436

7536

1.3、目录规划

数据库软件安装目录

/home/dmdba/dmdbms

实例安装目录

/dmdata/

归档日志存放目录

/dmdata/arch

备份文件存放目录

/dmdata/dmbak

2、安装数据库软件

在初始化数据库实例前,需要先安装完成数据库软件。

3、集群配置

3.1、初始化实例

创建目录并授权
[root@rw1 ~]# mkdir /dmdata
[root@rw1 ~]# chown dmdba:dinstall /dmdata/ps -ef|grep dmap
[root@rw1 ~]# su – dmdba
节点1:
[dmdba@rw1 bin]$ ./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=rw1 SYSDBA_PWD="Dameng123" SYSAUDITOR_PWD="Dameng123"
节点2
[dmdba@rw1 bin]$ ./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=rw2 SYSDBA_PWD="Dameng123" SYSAUDITOR_PWD="Dameng123"
节点3:
[dmdba@rw1 bin]$ ./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=rw3 SYSDBA_PWD="Dameng123" SYSAUDITOR_PWD="Dameng123"

3.2、启动实例

节点1(rw1)为主库,前台方式启动实例

[dmdba@rw1 bin]$ ./dmserver /dmdata/dmdb/dm.ini
出现system is ready后输入exit停止数据库。

3.3、检查DMAP服务

ps -ef|grep dmap
systemctl status DmAPService.service
如未启动DMAP服务,需要启动
./DmAPService start

3.4、备份恢复

[dmdba@rw1 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@rw1 bin]$ ./dmrman use_ap=2
RMAN> backup database '/dmdata/dmdb/dm.ini' backupset '/home/dmdba/bakfull';

将备份文件/home/dmdba/bakfull拷贝到另外两台服务器上。
[dmdba@rw1 ~]$ scp -r bakfull/ 192.168.100.52:/home/dmdba/
[dmdba@rw1 ~]$ scp -r bakfull/ 192.168.100.53:/home/dmdba/

在主机rw2和rw3上分别恢复备份
使用 dmrman 工具还原备库,dmdba 用户执行
[dmdba@rw2 ~]$ dmrman use_ap=2
dmrman V8
RMAN> restore database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';
RMAN> recover database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';
RMAN> recover database '/dmdata/dmdb/dm.ini' update db_magic;

3.5、修改dm.ini参数

各节点参数修改内容如下

节点1
vim /dmdata/dmdb/dm.ini
INSTANCE_NAME = rw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
节点2
vim /dmdata/dmdb/dm.ini
INSTANCE_NAME = rw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
节点3
vim /dmdata/dmdb/dm.ini
INSTANCE_NAME = rw3
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

3.6、配置归档文件dmarch.ini

在实例目录下新建文件 dmarch.ini。

  • ARCH_WAIT_APPLY 参数,设置为 0:高性能模式;设置为 1:事务一致模式。
  • 故障手动切换情境下 ARCH_WAIT_APPLY 只能为 0。故障自动切换情境下 ARCH_WAIT_APPLY 可以为 0,也可以为 1。
  • ARCH_WAIT_APPLY 参数设置的判断依据为业务是否要查询备机最新数据。如果需要,则配置为 1(较大性能衰减);如果不需要,则配置为 0。

主库配置如下
vim /dmdata/dmdb/dmarch.ini
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = rw2
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = rw3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400

备库2节点配置如下
vim /dmdata/dmdb/dmarch.ini
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = rw1
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = rw3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400

备库3节点配置如下
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = rw1
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = rw2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400

3.7、配置MAL系统dmmal.ini

在实例目录下新建文件 dmmal.ini(主备库3个节点文件内容一致)

vim /dmdata/dmdb/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15
[MAL_INST1]
MAL_INST_NAME = rw1
MAL_HOST = 192.168.187.51
MAL_PORT = 7336
MAL_INST_HOST = 192.168.100.51
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST2]
MAL_INST_NAME = rw2
MAL_HOST = 192.168.187.52
MAL_PORT = 7336
MAL_INST_HOST = 192.168.100.52
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST3]
MAL_INST_NAME = rw3
MAL_HOST = 192.168.187.53
MAL_PORT = 7336
MAL_INST_HOST = 192.168.100.53
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536

3.8、配置守护进程dmwatcher.ini

配置守护进程配置文件 dmwatcher.ini(主备库3个节点文件内容要相同)

vim /dmdata/dmdb/dmwatcher.ini
[GRP_RW]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 30
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 20
INST_OGUID = 453331
INST_INI = /dmdata/dmdb/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver

3.9、启动实例到MOUNT

以 mount 方式启动数据库实例

使用 dmdba 用户,执行以下命令(主备库都执行)

dmserver /dmdata/dmdb/dm.ini mount

 

使用disql登录数据库修改oguid,主备库都执行

disql sysdba/Dameng123

sp_set_oguid(453331);

 

主库rw1修改数据库为Primary

alter database primary;

 

其他两个备库修改数据库为Standby

alter database standby;

3.10、启动守护进程

使用dmdba 用户,到数据库安装目录的 bin 下执行以下命令

dmwatcher /dmdata/dmdb/dmwatcher.ini

守护进程启动后,实例会启动到OPEN状态。

3.11、配置监视器dmmonitor.ini

新建确认监视器配置文件dmmonitor.ini

vim /dmdata/dmdb/dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 200
MON_LOG_SPACE_LIMIT = 1024
[GRP_RW]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.187.51:7436
MON_DW_IP = 192.168.187.52:7436
MON_DW_IP = 192.168.187.53:7436

3.12、启动监视器

输入以下命令启动监视器

dmmonitor /dmdata/dmdb/dmmonitor.ini

3.13、数据同步测试

主库创建测试表,插入数据

disql sysdba/Dameng123
create table t1(id int);
insert into t1 values (1);
commit;

备库查询数据

select * from t1;

3.14、注册服务

使用root用户,进入数据库安装目录的script/root下

RW1
[root@rw2 ~]# cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -p RW1 -dm_ini /dmdata/dmdb/dm.ini -m mount
./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/dmdb/dmwatcher.ini
./dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdata/dmdb/dmmonitor.ini

RW2
[root@rw2 ~]# cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -p RW2 -dm_ini /dmdata/dmdb/dm.ini -m mount
./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/dmdb/dmwatcher.ini

RW3
[root@rw2 ~]# cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -p RW3 -dm_ini /dmdata/dmdb/dm.ini -m mount
./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/dmdb/dmwatcher.ini

4、集群启停

读写分离集群重启

说明:请严格按照此顺序。

关闭:

关闭确认监视器:systemctl stop DmMonitorServiceMonitor.service

关闭备库守护进程:systemctl stop DmWatcherServiceWatcher.service

关闭主库守护进程:systemctl stop DmWatcherServiceWatcher.service

关闭主库实例:systemctl stop DmServiceRW1.service

关闭备库实例:systemctl stop DmServiceRW2.service

关闭备库实例:systemctl stop DmServiceRW3.service

启动:

启动备库实例:systemctl start DmServiceRW2.service

启动备库实例:systemctl start DmServiceRW3.service

启动主库实例:systemctl start DmServiceRW1.service

启动主库守护进程:systemctl start DmWatcherServiceWatcher.service

启动备库守护进程:systemctl start DmWatcherServiceWatcher.service

启动确认监视器:systemctl start DmMonitorServiceMonitor.service


更多学习资料请访问:https://eco.dameng.com

最后修改时间:2023-04-14 20:40:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论