达梦读写分离集群搭建
达梦读写分离集群部署
数据库安装
一、包检查
第一步就是要获取对应的数据库包,检查数据库的包和环境是否匹配。
主要检查三个方面:
1)架构,x86平台装x86的数据库包,arm平台装arm的包
2)cpu:lscpu查看cpu信息
3)操作系统
这三个都对应了,那数据库的版本就获取对了。然后拿安装包安装数据库。
dm8_setup_rh6_64_ent_8.1.1.76_20200422.iso
比如这就是一个x86的红帽6版本的dm8数据库安装包。
二、创建组和用户
创建dmdba用户来操作数据库,并使用dmdba用户来安装数据库。
如果不使用dmdba用户安装,有可能会打开图形化工具失败。
#创建安装用户组dinstall
groupadd -g 12349 dinstall
#创建安装用户dmdba,将新建用户放在用户组dinstall中
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
#初始化dmdba用户密码
passwd dmdba
三、修改openfile参数
输入命令检查openfile参数是否为65536或者无限制
#输入命令检查open file参数:
ulimit -a
若open file参数不是65536或者无限制则用以下方式进行修改:
#输入命令进入limits.conf文件编辑界面:
su - root
vi /etc/security/limits.conf
进入到limits.conf文件后,键盘按“i”开始插入数据,在文件内容末尾增加内容:
* soft nofile 65536
* hard nofile 65536
添加完毕之后先按键盘“esc”键,再输入:wq,回车后退出文件编辑界面。
#输入命令重启服务器
reboot;
#输入命令查看参数修改是否成功
ulimit -a
四、挂载镜像文件并授权
将镜像文件直接上传在根目录,在根目录下将数据库安装包挂载在/mnt目录
mount -o loop dm8_setup_rh6_64_ent_8.1.1.76_20200422.iso /mnt
授权
chmod 755 ./DMInstall.bin
五、切换安装用户执行安装文件
#切换dmdba用户进行安装。
su - dmdba
#执行安装文件
./DMInstall.bin -i # -i表示使用命令行方式安装
多种环境详细安装步骤见:
达梦数据库安装步骤
集群搭建
此处以一读一写集群为例,需要明确,一读一写集群需要三台服务器。一台主,一台备,一台监视器。
这三台服务器上都要安装达梦数据库软件。
服务器IP | 服务器作用 |
---|---|
192.168.96.128 | 主数据库 服务器 |
192.168.96.129 | 备数据库 服务器 |
192.168.96.130 | 监视器 服务器 |
一、初始化实例
#在两台服务器上分别用dminit初始化实例(实例初始化时需要明确初始化参数)
初始化的命名行工具的详细使用方法见以下链接:
https://blog.csdn.net/yuDazzle/article/details/107192708?spm=1001.2014.3001.5501
达梦也可以使用图形化工具进行初始化,在安装目录下的tool文件下的dbca工具(数据库配置助手)。
此时初始化数据库实例,指定路径为/dmdata/data(实际使用应该指定在数据大盘),其他参数均为默认(此处仅为实例,需要根据自己的业务系统需求设置初始化参数)。
./dminit path=/dmdata/data
#在两台服务器上分别启停库一次
./dmserver /dmdata/data/DAMENG/dm.ini
出现SYSTEM IS READY表示已经启动完成
然后在末尾输入exit退出。
二、配置读写分离集群
1.在主库DM1上使用dmdba用户脱机备份
如果备份过程中出现错误,通过ps -ef | grep dmap查看dmap服务是否在运行中
如果不在运行中
cd /opt/dmdbms/bin
./DmAPService start
#使用达梦的脱机备份工具dmrman备份主库DM1
su - dmdba
cd /opt/dmdbms/bin
此处指定备份文件名为backup20210118
./dmrman ctlstmt="backup database '/dmdata/data/DAMENG/dm.ini' full to backup20210118 backupset '/dmdata/data/DAMENG/backup20210118'"
/dmdata/data/DAMENG/dm.ini 对照的是 数据库初始化的路径下的dm.ini文件
full to backup20210118 中的backup20210118指的是备份的名字
/dmdata/data/DAMENG/backup20210118 指的是备份生成的文件夹路径
备份成功以后,在/dmdata/data/DAMENG路径下会生成一个backup20210118备份文件夹。
#将整个备份文件夹发送到备库DM2
su - dmdba
scp -r /dmdata/data/DAMENG/backup20210118/ 192.168.96.129:/dmdata/data/DAMENG
2.在备库DM2上进行备份还原与更新
#在备库上使用dmrman工具,备份文件backup20210118还原、恢复与更新
首先要将接收到的备份文件的权限修改为dmdba;
chown -R dmdba.dinstall /dmdata/data/DAMENG/backup20210118
su - dmdba
cd /opt/dmdbms/bin
还原:
./dmrman ctlstmt="restore database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/data/DAMENG/backup20210118'"
恢复:
./dmrman ctlstmt="recover database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/data/DAMENG/backup20210118'"
更新db_magic:
./dmrman ctlstmt="recover database '/dmdata/data/DAMENG/dm.ini' update db_magic"
3.配置主库DM1
1)修改主库dm.ini文件
vi /dmdata/data/DAMENG/dm.ini
修改以下参数值
INSTANCE_NAME=DM1
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
2)配置主库dmmal.ini
在/dmdata/data/DAMENG文件夹下,创建dmmal.ini文件
vi dmmal.ini
将以下内容复制进去
注意IP地址相对应
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST =192.168.96.128
MAL_PORT = 61141
MAL_INST_HOST = 192.168.96.128
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.96.129
MAL_PORT = 61142
MAL_INST_HOST = 192.168.96.129
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
3)配置主库dmarch.ini
在/dmdata/data/DAMENG文件夹下,创建dmarch.ini文件
vi dmarch.ini
文件内容如下:
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/data/DAMENG/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 10240
(根据实际情况设置ARCH_SPACE_LIMIT值,此处设置归档上限为10G)
使用dmdba用户在/dmdata/data/DAMENG文件夹下创建arch文件夹
su - dmdba
cd /dmdata/data/DAMENG
mkdir -p arch
4)配置主库dmwatcher.ini
在/dmdata/data/DAMENG文件夹下,创建dmwatcher.ini文件
vi 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 = /dmdata/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
5)使用dmdba用户将配置文件发送到备库
#将dmmal.ini dmarch.ini dmwatcher.ini发到备库DM2
scp dmmal.ini dmarch.ini dmwatcher.ini @192.168.96.129:/dmdata/data/DAMENG
并在备库检查这个三个文件的权限是否属于dmdba:dinstall。
如果不属于,使用以下语句修改权限:
chown -R dmdba:dinstall dmmal.ini
chown -R dmdba:dinstall dmwatcher.ini
chown -R dmdba:dinstall dmarch.ini
6)配置主库OGUID
#到数据库安装目录下的bin目录
su - dmdba
cd /opt/dmdbms/bin
用dmdba用户以mount模式开启主库
./dmserver /dmdata/dmdata/data/DAMENG/dm.ini mount
一直到显示SYSTEM IS READY启动完成。此时不要关闭这个窗口,重新在主服务器上开启一个窗口。
切换到dmdba用户,进入数据库安装bin目录
su - dmdba
cd /opt/dmdbms/bin
使用达梦的系统管理员用户SYSDBA登录达梦的disql工具,默认密码为SYSDBA。
./disql SYSDBA/SYSDBA
#登录成功后,修改OGUID
OGUID号与dmwatcher.ini中的INST_OGUID 保持一致
sp_set_oguid(453331);
#修改数据库模式
alter database primary;
修改成功以后,在./dmserver /dmdata/data/DAMENG/dm.ini mount窗口后输入exit退出。
4.配置备库DM2
1)修改配置文件dm.ini的内容
分别将INSTANCE_NAME设置为DM2
INSTANCE_NAME=DM2
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
2)修改dmarch.ini
将ARCH_DEST参数修改为除自己外的库
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/data/DAMENG/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 10240
使用dmdba用户在/dmdata/data/DAMENG文件夹下创建arch文件夹。
su - dmdba
cd /dmdata/data/DAMENG
mkdir -p arch
3)配置备库的OGUID
#使用dmdba用户以mount模式开启备库
./dmserver /dmdata/data/DAMENG/dm.ini mount
一直到显示SYSTEM IS READY启动完成。此时不要关闭这个窗口,重新在主服务器上开启一个窗口。
切换到dmdba用户,进入数据库安装bin目录
su - dmdba
cd /opt/dmdbms/bin
使用达梦的系统管理员用户SYSDBA登录达梦的disql工具,默认密码为SYSDBA。
./disql SYSDBA/SYSDBA
#登录disql,修改OGUID
sp_set_oguid(453331);
#修改数据库模式为备库
alter database standby;
修改成功以后,在./dmserver /dmdata/data/DAMENG/dm.ini mount窗口后输入exit退出。
5.注册服务
在主和备数据库服务器上分别注册实例服务和守护进程服务。
在监视器所在服务器上注册监视器服务。
注册服务的脚本在安装目录下dmdbms的script/root下面。
使用root用户在主数据库服务器上执行以下命令
--注册主库实例服务
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/data/DAMENG/dm.ini -m mount -p DM1
--注册主库守护进程服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/data/DAMENG/dmwatcher.ini -p DM1
注册成功以后会在/opt/dmdbms/bin目录下生成对应的服务脚本。
使用root用户在备数据库服务器上执行以下命令
--注册备库服务
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/data/DAMENG/dm.ini -m mount -p DM2
--注册备库守护进程服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/data/DAMENG/dmwatcher.ini -p DM2
在监视器服务器上使用root用户在备数据库服务器上执行以下命令。
--注册监视器服务
./dm_service_installer.sh -t dmmonitor -monitor_ini /home/dmdba/data/DAMENG/dmmonitor.ini -p DM
6配置确认监视器
在192.168.96.130服务器上安装数据库,然后配置确认监视器。
此处数据库安装路径为/opt/dmdbms/bin
监视器配置文件路径:
/opt/dmdbms/dmmonitor.ini
监视器日志路径:
/opt/dmdbms/log
配置dmmonitor.ini
在监视器服务器上使用dmdba用户创建dmmonitor.ini文件
su - dmdba
vi dmmonitor.ini
dmmonitor.ini文件内容如下:
MON_INST_OGUID与dmwatcher.ini中的INST_OGUID 保持一致
MON_DW_Confirm = 1
MON_LOG_PATH = /opt/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.96.128:52141
MON_DW_IP = 192.168.96.129:52142
到此处集群已经初步搭建好;可以把集群启动起来;
启动集群的顺序为:
主库实例(DmServiceDM1)——备库实例(DmServiceDM2)——主库守护进程(DmWatcherServiceDM1)——备库守护进程(DmWatcherServiceDM2)——监视器服务(DmMonitorServiceDM)
关闭集群的顺序为
监视器服务(DmMonitorServiceDM)——备库守护进程(DmWatcherServiceDM2)——主库守护进程(DmWatcherServiceDM1)——主库实例(DmServiceDM1)——备库实例(DmServiceDM2)
到目前为止,只是进行集群的搭建,为保障安全和性能,还需进行优化和设置备份;
比如MAX_SESSIONS,BUFFER等参数的修改;
配置服务名
**服务名的作用是可以在url串中替代IP地址连接整个集群**
达梦安装时会生成一个配置文件dm_svc.conf,Linux服务器上该文件存在目录/etc下面;
该文件中包含 DM 各接口及客户端需要配置的一些参数
因此在应用服务器上修改dm_svc.conf文件。
如果/etc下没有dm_svc.conf就手动创建一个。
cd /etc
vi dm_svc.conf
dm_svc.conf配置内容如下:
TIME_ZONE=(480)
LANGUAGE=(cn)
DM=(192.168.96.128:5236,192.168.96.129:5236)
[DM]
login_mode=(1)
RW_SEPARATE=1
其中,
TIME_ZONE和LANGUAGE分别对应操作系统时区和语言;
DM=(192.168.96.128:5236,192.168.96.129:5236)表示,把主机和备机都集成一个名字DM;
login_mode的值为1,表示只连接主库;这个一定要局部配置,否则可能会影响disql的使用;
RW_SEPARATE=1,表示开启读写分离;
此处的服务名为DM(可以根据需要,设置成别的名字),即可以在url串中使用DM来替代IP地址。
jdbc连接达梦数据库
驱动类名:dm.jdbc.driver.DmDriver
驱动包在安装目录下的driver/jdbc下
URL串格式:
单机: jdbc:dm://IP:端口
集群:jdbc:dm://服务名
例如此处:
jdbc:dm://DM?rwSeparate=1&rwPercent=25
设置备份作业
达梦数据库使用:
如何使用客户端工具连接服务器端
达梦数据库之模式对象管理,语法汇总