?达梦主备集群部署
读写分离集群可以看成是主备集群的升级版本,相较于实时主备,读写分离可以部署主库和最多8个即时备库。
一、数据库安装
数据库安装和之前的一样,省事的话可以用一个服务器安装好数据库,然后克隆使用。
用命令行安装单机库,创建组dinstall和用户dmdba,3个文件夹(要授权给dmdba用户)
groupadd dinstall
useradd -g dinstall -d /home/dmdba dmddba
mkdir -p /home/dmdata /home/dmarch /home/dmbak
chown -R dmdba:dinstall /home/dmdata /home/dmarch /home/dmbak
修改open file参数,ulimit -a后检查open files参数是否为65536
图中为1024,要修改为65536
切换至root用户,输入
vi /etc/security/limits.conf
将下面两行内容增加到末尾(在end前),:wq保存退出。
* soft? nofile? 65536
* hard? nofile? 65536
reboot重启操作系统,输入ulimit -a查看是否修改成功,此时已修改成功。
将安装包放在opt目录下,授权然后挂载挂载安装包
chmod 755 dm8.iso
mount dm8.iso /mnt/
授权
chmod 755 DMInstall.bin
切换用户dmdba,执行安装,使用命令行方式安装
在两台服务器上进行初始化实例,在/dmdbms/bin目录下输入命令:
./dminit path=/home/dmdata page_size=16
启动测试一次,
./dmserver /home/dmdata/DAMENG/dm.ini
然后exit关停。
二、集群搭建步骤
1.对主库DM1进行脱机备份
在bin目录中,使用脱机备份工具dmrman,指定备份文件名backuptest(名字自取),输入命令:
./dmrman ctlstmt="backup database '/home/dmdata/DAMENG/dm.ini' full to backuptest backupset '/home/dmdata/DAMENG/backuptest'"
2.读对备库DM2进行备份还原与更新
在主库中,将备份文件发给备库,如果备库dmdba用户没有设置密码,就用root用户来操作,在ip地址前加root@:
scp -r /home/dmdata/DAMENG/backup20210721/ 192.168.209.136:/home/dmdata/DAMENG/
切换至备库,使用root用户给备份文件授权,
chown -R dmdba:dinstall backuptest
备库切换用户至dmdba,到dmdbms/bin目录中使用dmrman工具进行备份还原与更新。
还原指令:./dmrman ctlstmt="restore database '/home/dmdata/DAMENG/dm.ini' from backupset '/home/dmdata/DAMENG/backuptest'"
恢复指令:./dmrman ctlstmt="recover database '/home/dmdata/DAMENG/dm.ini' from backupset '/home/dmdata/DAMENG/backuptest'"
更新db_magic: ./dmrman ctlstmt="recover database '/home/dmdata/DAMENG/dm.ini'"
备份还原操作是为了确保主备库完全同步,这个操作是整个主备集群搭建的基础。
3.配置主库DM1和备库DM2
先找到主备库的/DAMENG/dm.ini文件,进行修改。
vi dm.ini
修改以下配置:
INSTANCE_NAME=DM1(备库为DM2)
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
修改完成后保存退出
在主库的DAMENG目录里配置dmmal.ini文件,要注意下主备库的ip地址和各端口号。
vi dmmal.ini
复制以下内容:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST =192.168.209.128
MAL_PORT = 61141
MAL_INST_HOST = 192.168.209.128
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.209.129
MAL_PORT = 61142
MAL_INST_HOST = 192.168.209.129
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
在该目录下配置dmarch.ini文件,配置本地归档和即时归档(与实时主备的不同之处)。
vi dmarch.ini
复制以下内容:
ARCH_WAIT_APPLY=LOCAL
[ARCHIVE_REALTIME1]
ARCH_TYPE = TIMELY #即时归档类型
ARCH_DEST = DM2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmarch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 0
在该目录下配置dmwatcher.ini文件:
vi dmwatcher.ini
复制以下内容:
[GRP01]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
将以上配置文件发送到备库DM2里:
scp dmmal.ini dmarch.ini dmwatcher.ini root@192.168.209.129:/home/dmdata/DAMENG
在备库里修改dmarch.ini文件
dmarch.ini:
ARCH_DEST = DM1
处理好配置文件后,要配置主备库的OGUID。
先进入bin目录,然后以mount开启主库,
./dmserver /home/dmdata/DAMENG/dm.ini mount
直到出现
新开一个窗口,切换dmdba用户,进入bin目录,用达梦系统管理员SYSDBA打开disql工具。
./disql SYSDBA/SYSDBA
输入语句,修改OGUID。
sp_set_oguid(453331);
?修改主备库模式。
主库:alter database primary;
备库:alter database standby;
如果输入错误输入语句进行修改:
启动修改权限:SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
输入语句:SQL>SP_SET_OGUID(453331);
关闭修改权限:SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
?4.注册启动服务和守护服务
主备库切换root用户,进入dmdbms/script/root中注册实例服务。
注册主库实例服务:
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdata/DAMENG/dm.ini -m mount -p DM1
注册主库守护进程服务:
./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdata/DAMENG/dmwatcher.ini -p DM1
注册备库实例服务:
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdata/DAMENG/dm.ini -m mount -p DM2
注册备库守护进程:
./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdata/DAMENG/dmwatcher.ini -p DM2
5.配置确认监视器
由于是自行练习搭建主备集群,所以监视器可以直接配置在备库上,也可以单独开一个服务器用于监视。但在实际项目中,监视器必须放在第三台机器上。
以下操作是在备库上进行。
使用dmdba用户,在dmdbms中创建dmmonitor.ini文件,配置如下:
MON_DW_Confirm = 1
MON_LOG_PATH = /opt/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP01]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.209.135:52141
MON_DW_IP = 192.168.209.136:52142
启动各个主备库各个进程:
?最后进入bin目录打开监视器。
./dmmonitor /home/dmdba/dmdbms/dmmonitor.ini
?
?最后DM1,DM2守护都是open状态,此时即为读写分离集群搭建成功。
如果进程还处于mount状态,可以重启守护进程,也可能是防火墙的问题,要记住关闭防火墙。
注意:关闭进程一定要先关闭守护进程,然后再关闭实例进程,因为守护进程会自动拉起关闭的实例进程。
总结
读写分离集群和实时主备集群的搭建流程基本一致,但是一定注意dmarch.ini,因为读写分离是支持即时归档的,这也是读写分离的集群的不同之处。
|