达梦读写分离集群搭建
文章目录
端口规划
A | B | C | |
---|---|---|---|
心跳ip | 192.168.56.111 | 192.168.56.112 | 192.168.56.114 |
业务ip | 172.16.1.1 | 172.16.1.2 | 172.16.1.4 |
服务器作用 | 主库 | 备库 | 监视器 |
一.初始化实例
A/B:
./dminit path=/home/dmdba/dmdbms/data
开启服务
/home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini
在末尾输入exit退出
二.配置读写分离集群
(一)数据准备
1.使用dmdba用户进行脱机备份
检查dmap是否启动
ps -ef|grep dmap
脱机备份
/home/dmdba/dmdbms/bin/dmrman ctlstmt="backup database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' full to backup20220805 backupset '/home/dmdba/dmdbms/data/DAMENG/bak/backup20220805'"
备份成功后将文件夹发送至备库B
scp -r /home/dmdba/dmdbms/data/DAMENG/bak/backup20220805/ 192.168.56.112:/home/dmdba/dmdbms/data/DAMENG/bak
2.在备库上进行备份还原与更新
#在备库上使用dmrman工具,备份文件backup20220805还原、恢复与更新
首先要将接收到的备份文件的权限修改为dmdba
chown -R dmdba.dinstall /home/dmdba/dmdbms/data/DAMENG/bak/backup20220805
还原
/home/dmdba/dmdbms/bin/dmrman ctlstmt="restore database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/DAMENG/bak/backup20220805'"
恢复
/home/dmdba/dmdbms/bin/dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dmdba/dmdbms/data/DAMENG/bak/backup20220805'"
更新db_magic
/home/dmdba/dmdbms/bin/dmrman ctlstmt="recover database '/home/dmdba/dmdbms/data/DAMENG/dm.ini' update db_magic"
(二)配置主库A
1.配置dm.ini
vi /home/dmdba/dmdbms/data/DAMENG/dm.ini
INSTANCE_NAME=DM1
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
2.创建dmmal.ini
vi /home/dmdba/dmdbms/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST =172.16.1.1
MAL_PORT = 61141
MAL_INST_HOST = 192.168.56.111
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 172.16.1.2
MAL_PORT = 61142
MAL_INST_HOST = 192.168.56.112
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
3.配置dmarch.ini
vi /home/dmdba/dmdbms/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 10240
使用dmdba用户在/home/dmdba/dmdbms/data/DAMENG文件夹下创建arch文件夹
cd /home/dmdba/dmdbms/data/DAMENG
mkdir -p arch
4.配置dmwatcher
vi /home/dmdba/dmdbms/data/DAMENG/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 = /home/dmdba/dmdbms/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
使用dmdba用户将配置文件发送至备库
scp dmmal.ini dmarch.ini dmwatcher.ini @192.168.56.112:/home/dmdba/dmdbms/data/DAMENG
并在备库检查这个三个文件的权限是否属于dmdba:dinstall
ll
如果不属于,使用以下语句修改权限:
chown -R dmdba:dinstall dmmal.ini
chown -R dmdba:dinstall dmwatcher.ini
chown -R dmdba:dinstall dmarch.ini
配置OGUID
用dmdba用户以mount模式开启主库
/home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
显示后重新打开终端(别关)
登录disql
修改oguid
sp_set_oguid(453331);
修改数据库模式
alter database primary;
修改成功以后,在/home/dmdba/dmdbms/data/DAMENG/dm.ini mount窗口后输入exit退出
(三)配置备库B
1.修改dm.ini文件
vi /home/dmdba/dmdbms/data/DAMENG/dm.ini
INSTANCE_NAME=DM2
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
2.修改dmarch.ini文件
vi /home/dmdba/dmdbms/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 10240
创建arch文件夹
使用dmdba用户在/dmdata/data/DAMENG文件夹下创建arch文件夹。
cd /home/dmdba/dmdbms/data/DAMENG
mkdir -p arch
3.配置备库的OGUID
#使用dmdba用户以mount模式开启备库
进入bin目录下
cd /home/dmdba/dmdbms/bin
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
连接disql
修改oguid,将数据库模式修改为备库
sp_set_oguid(453331);
alter database standby;
修改成功以后,./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount窗口后输入exit退出。
注意:dmmal文件以及在配置主库的过程中拷贝进了备库,它不需要进行修改
(四)注册服务
在主和备数据库服务器上分别注册实例服务和守护进程服务。
在监视器所在服务器上注册监视器服务。
主库
注册主库实例服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini -m mount -p DM1
注册主库守护进程服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p DM1
备库
注册备库服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/DAMENG/dm.ini -m mount -p DM2
注册备库守护进程服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini -p DM2
监视器
在第三台服务器上配置监视器并注册监控器服务
配置确认监视器
vi /home/dmdba/dmdbms/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
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 172.16.1.1:52141
MON_DW_IP = 172.16.1.2:52142
注册监视器服务
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -monitor_ini /home/dmdba/dmdbms/dmmonitor.ini -p DM
三.启停集群
启动集群的顺序
主库实例(DmServiceDM1)
/home/dmdba/dmdbms/bin/DmServiceDM1 start
备库实例(DmServiceDM2)
/home/dmdba/dmdbms/bin/DmServiceDM2 start
主库守护进程(DmWatcherServiceDM1)
/home/dmdba/dmdbms/bin/DmWatcherServiceDM1 start
备库守护进程(DmWatcherServiceDM2)
/home/dmdba/dmdbms/bin/DmWatcherServiceDM2 start
监视器服务(DmMonitorServiceDM)
/home/dmdba/dmdbms/bin/DmMonitorServiceDM start
关闭集群的顺序
监视器服务(DmMonitorServiceDM)
/home/dmdba/dmdbms/bin/DmMonitorServiceDM stop
备库守护进程(DmWatcherServiceDM2)
/home/dmdba/dmdbms/bin/DmWatcherServiceDM2 stop
主库守护进程(DmWatcherServiceDM1)
/home/dmdba/dmdbms/bin/DmWatcherServiceDM1 stop
主库实例(DmServiceDM1)
/home/dmdba/dmdbms/bin/DmServiceDM1 stop
备库实例(DmServiceDM2)
/home/dmdba/dmdbms/bin/DmServiceDM2 stop
四.验证集群同步状态
启动监视器
/home/dmdba/dmdbms/bin/dmmonitor /home/dmdba/dmdbms/dmmonitor.ini
输入show查看集群
使用disql 客户端验证。
使用 disql 客户端登录主库,创建rwtest测试表,插入数据,执行以下命令:
home/dmdba/dmdbms/bin/disql SYSDBA/SYSDBA@172.16.1.1
SQL 提示符下执行以下命令:
create table rwtest(id int);
insert into rwtest values (1);
commit;
使用 disql 客户端登录备库,查询测试表验证,执行以下命令:
home/dmdba/dmdbms/bin/disql SYSDBA/SYSDBA@172.16.1.2
SQL 提示符下执行以下命令:
select * from rwtest;
更多达梦相关知识:https://eco.dameng.com