DM读写分离集群部署

一、集群搭建

1.1 部署规划

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

IP规划:

主机名

服务ip

心跳ip

数据库名

实例名

DMSERVER01

192.168.254.134

10.0.0.***

dmdb

rw1

DMSERVER02

192.168.254.135

10.0.0.***

dmdb

rw2

目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)

数据库软件安装目录

/dm/dmdbms/bin

实例安装目录

/dm/dmdata

归档日志存放目录

/dm/dmarch

备份文件存放目录

/dm/dmbak

1.2 数据库软件安装

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

1.3 初始化实例

2个节点完成实例初始化

cd /dm/dmdbms/bin

./dminit path=/dm/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DMSERVER instance_name=rw1 PORT_NUM=3300 CASE_SENSITIVE=N CHARSET=1 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA" SYSAUDITOR_PWD="SYSDBA" ELOG_PATH=/dm/dmdbms/log/slog

./dminit path=/dm/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DMSERVER instance_name=rw2 PORT_NUM=3300 CASE_SENSITIVE=N CHARSET=1 LENGTH_IN_CHAR=1 BLANK_PAD_MODE=0 SYSDBA_PWD="SYSDBA" SYSAUDITOR_PWD="SYSDBA" ELOG_PATH=/dm/dmdbms/log/slog

以主机DMSERVER01为读写分离主库,启动实例

到 /dm/dmdbms/bin

./dmserver /dm/dmdata/DMSERVER/dm.ini

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

1.4 脱机备份数据库

在主机DMSERVER01上执行以下命令,确认主库 dmap 服务已启动:

ps -ef|grep dmap

若未启动,则先启动 DMAP 服务,dmdba 到安装目录的 bin 下执行以下命令:

./DmAPService start

dmdba用户 启动dmrman工具

dmrman use_ap=2

执行 backup 全库:

backup database '/dm/dmdata/DMSERVER/dm.ini' backupset '/dm/dmbak/bakfull';

将数据库目录和备份文件从节点01分别拷贝到每个节点上

scp -P 22 -r /dm/dmdata/dmdb 192.168.254.135:/dm/dmdata

scp -P 22 -r /dm/dmbak/bakfull 192.168.254.135:/dm/dmbak

1.5 备份还原备库

将备份的文件/dm/dmdba/bakfull拷贝到另外一台服务器上。

在主机DMSERVER02上

使用 dmrman 工具还原备库,dmdba 用户执行:

dmrman use_ap=2

进入dmrman工具交互界面

执行 restore:

restore database '/dm/dmdata/DMSERVER/dm.ini' from backupset '/dm/dmbak/bakfull';

完成后执行 recover:

recover database '/dm/dmdata/DMSERVER/dm.ini' from backupset '/dm/dmbak/bakfull';

最后执行 recover update db_magic。

recover database '/dm/dmdata/DMSERVER/dm.ini' update db_magic;

1.6 修改dm.ini参数

所有节点都要修改

执行以下命令:

vi /dm/dmdata/DMSERVER/dm.ini

主库DMSERVER01上修改以下参数值:

INSTANCE_NAME = rw1

MAL_INI = 1

ARCH_INI = 1

ALTER_MODE_STATUS = 0

ENABLE_OFFLINE_TS = 2

备库DMSERVER02上修改以下参数值:

INSTANCE_NAME = rw2

MAL_INI = 1

ARCH_INI = 1

ALTER_MODE_STATUS = 0

ENABLE_OFFLINE_TS = 2

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

在实例目录下新建文件 dmarch.ini,执行以下命令:

vi /dm/dmdata/DMSERVER/dmarch.ini

REALTIME自动切换模式下

需要指定ARCH_WAIT_APPLY=1保证主备事务一致:

在实例目录下新建文件 dmarch.ini,执行以下命令:

vi /dm/dmdata/DMSERVER/dmarch.ini

主库DMSERVER01上添加以下内容:

ARCH_WAIT_APPLY=1

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME

ARCH_DEST = rw2

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dm/dmarch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 76800

备库DMSERVER02上添加以下内容:

ARCH_WAIT_APPLY=1

[ARCHIVE_REALTIME1]

ARCH_TYPE = REALTIME

ARCH_DEST = rw1

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dm/dmarch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 76800

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

在实例目录下新建文件 dmmal.ini,执行以下命令。

vi /dm/dmdata/DMSERVER/dmmal.ini

主备库2个节点文件内容要相同。

MAL_CHECK_INTERVAL = 5

MAL_CONN_FAIL_INTERVAL = 15

[MAL_INST1]

MAL_INST_NAME = rw1

MAL_HOST = 192.168.254.134

MAL_PORT = 3301

MAL_INST_HOST = 192.168.254.134

MAL_INST_PORT = 3300

MAL_DW_PORT = 3302

MAL_INST_DW_PORT = 3303

[MAL_INST2]

MAL_INST_NAME = rw2

MAL_HOST = 192.168.254.135

MAL_PORT = 3301

MAL_INST_HOST = 192.168.254.135

MAL_INST_PORT = 3300

MAL_DW_PORT = 3302

MAL_INST_DW_PORT = 3303

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

在实例目录下新建文件 dmwatcher.ini,执行以下命令:

vi /dm/dmdata/DMSERVER/dmwatcher.ini

主备库3节点文件内容要相同。

[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 = /dm/dmdata/dmdb/dm.ini

INST_AUTO_RESTART = 1

INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver

以 mount 方式启动数据库实例

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

dmserver /dm/dmdata/DMSERVER/dm.ini mount (无需关闭)

在新的终端使用 disql 工具连接数据库:

./disql SYSDBA/SYSDBA@192.168.254.134:3300

主备库都修改 oguid,执行以下命令:

sp_set_oguid(202269);

主库DMSERVER01上修改数据库模式为 primary,执行以下命令:

alter database primary;

备库DMSERVER02上修改数据库模式为 standby,执行以下命令:

alter database standby;

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

./dmwatcher /dm/dmdata/DMSERVER/dmwatcher.ini

守护进程启动后,会将 Mount 的实例 Open。启动监视器守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备心跳网络端口开放)。

新建确认监视器配置文件 dmmonitor.ini,执行以下命令:

vi /dm/dmdbms/bin/dmmonitor.ini

添加以下内容:

MON_DW_CONFIRM = 1

MON_LOG_PATH = /dm/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.254.134:3302

MON_DW_IP = 192.168.254.135:3302

执行以下命令,启动监视器。

./dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini

启动后输入 show 命令查看集群状态。

二、 注册服务

以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。

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

cd /dm/dmdbms/script/root

注册守护进程服务(主备库都执行)。

./dm_service_installer.sh -t dmwatcher -p rw -watcher_ini /dm/dmdata/DMSERVER/dmwatcher.ini

注册数据库实例服务(主备库都执行):

./dm_service_installer.sh -t dmserver -p rw -dm_ini /dm/dmdata/DMSERVER/dm.ini

以服务方式启动

执行以下命令,启动数据库实例:(无法启动-可能是前台启动未退出,只能杀掉进程)

systemctl start DmServicerw

执行以下命令,启动守护进程:

systemctl start DmWatcherServicerw

注册监视器服务:

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

./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini

以服务方式启动监视器服务

执行以下命令,启动数据库实例:

systemctl start DmMonitorServiceconfirm

2.1 验证主备集群同步状态

监视器查看读写分离集群状态

集群任意节点,配置普通监视器配置文件 dmmonitor.ini,执行以下命令:

vi /dm/dmdata/DMSERVER/dmmonitor.ini

添加以下内容:

MON_DW_Confirm = 0

MON_LOG_PATH = /dm/dmdbms/log

MON_LOG_INTERVAL = 60

MON_LOG_FILE_SIZE = 32

MON_LOG_SPACE_LIMIT = 0

[GRP_RW]

MON_INST_OGUID = 202269

MON_DW_IP = 192.168.254.134:3302

MON_DW_IP = 192.168.254.135:3302

执行以下命令,启动监视器:

./dmmonitor /dm/dmdata/DMSERVER/dmmonitor.ini

输入 show 命令查看集群状态:

其中守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 REALTIME,归档状态 RSTAT 为VALID。

isql 客户端验证

使用 disql 客户端登录主库,创建测试表,插入数据,执行以下命令:

./disql SYSDBA/SYSDBA@192.168.254.134:3300

SQL 提示符下执行以下命令:

create table test(id int);insert into test values (1);

commit;

使用 disql 客户端登录备库,查询测试表验证,执行以下命令:

./disql SYSDBA/'""'@localhost:3300

SQL 提示符下执行以下命令:

select * from test;

达梦数据库实例状态为 MOUNT 。AnyBackup 备份达梦数据库是以热备份的形式备份的,需要达梦数据库为 OPEN 状态。 

解决方案

为了解决此问题,需要将对应的达梦数据库实例状态调整为 OPEN ,请按照以下步骤执行:

1.以达梦数据库安装用户登录达梦数据库所在服务器的操作系统;

2.执行以下命令并输入 sysdba 用户的密码,登录达梦数据库:

disql sysdba

3.执行以下命令,启动达梦数据库到 OPEN 状态:

ALTER DATABASE OPEN;

4.使用操作员登录 AnyBackup 管理控制台,再次发起备份任务。

2.2 配置sql日志

所有节点修改sqllog.ini

到实例路径下

vi /dm/dmdata/DMSERVER/sqllog.ini

BUF_TOTAL_SIZE = 10240

BUF_SIZE = 1024

BUF_KEEP_CNT = 6

[SLOG_ALL]

FILE_PATH = /dm/dmdbms/log/slog

PART_STOR = 1

SWITCH_MODE = 2

SWITCH_LIMIT = 512

ASYNC_FLUSH = 1

FILE_NUM = 5

ITEMS = 0

SQL_TRACE_MASK = 2:3:25

MIN_EXEC_TIME = 1500

USER_MODE = 0

USERS =

2.3 启动服务

重启集群(参数修改后需要重启集群)

读写分离集群重启:

关闭确认监视器:systemctl stop DmMonitorServiceconfirm

关闭备库守护进程:systemctl stop DmWatcherServicerw

关闭主库守护进程:systemctl stop DmWatcherServicerw

关闭主库实例:systemctl stop DmServicerw

关闭备库实例:systemctl stop DmServicerw

启动备库实例:systemctl start DmServicerw

启动主库实例:systemctl start DmServicerw

启动主库守护进程:systemctl start DmWatcherServicerw

启动备库守护进程:systemctl start DmWatcherServicerw

启动确认监视器:systemctl start DmMonitorServiceconfirm

 达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台达梦数据库产品体验站,DM8在线试玩,达梦数据库全系列产品免费下载,官方权威的快速上手文档和产品手册,最活跃的达梦技术社区,面向全行业ISV厂商免费的云适配服务。https://eco.dameng.com/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值