总体来说,跟一主一备没啥区别,就是mal跟arch文件多配制一个远程端即可
[root@~]# vi /etc/sysctl.conf
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.overcommit_memory = 1
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
[root@~]# sysctl -p
[root@~]# sysctl -p /etc/sysctl.conf
[root@~]# sysctl -q vm.swappiness
调整limits.conf
[root@~]# ulimit -n65536
[root@~]# vi /etc/security/limits.conf
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
[root@~]# vi /etc/security/limits.d/90-nproc.conf
* soft nproc 65536
[root@~]# vi /etc/profile
ulimit -SHn 65536
[root@~]# vi /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
selinux
[root@~]# vi /etc/sysconfig/selinux
SELINUX = disabled
SELINUX = disabled
[root@dm-02 bin]# systemctl stop firewalld #关闭防火墙
[root@dm-02 bin]# systemctl disable firewalld
[root@dm-02 bin]# setenforce 0 ##关闭selinux
[root@dm-02 bin]# vim /etc/selinux/config
SELINUX=disabled
随机自启动的数据库服务,其能打开的最大文件描述符、proc数量等不受limits.conf控制(root用户)
vim /etc/systemd/system.conf
data seg size=unlimited
file size=unlimited
open files=unlimited
virtual memory=unlimited
切记key文件放在达梦的bin目录下 命名为dm.key 权限为dmdba:dinstall 600
安装数据库:
groupadd -g 12349 dinstall 创建组
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba 创建用户
passwd dmdba 密码
[root@~]# mkdir /dm8/dmdbms
[root@~]# mkdir /dm8/dmsetup
[root@~]# chown dmdba.dinstall /dm8/dmdbms -R;chmod 777 /opt/dmdbms -R
[root@~]# chown dmdba.dinstall /opt/dmsetup -R;chmod 777 /opt/dmsetup -R
mount -o loop /opt/dm8_setup_rh7_64_ent_8.1.1.45_20191121.iso /mnt ##root用户挂载
su - dmdba 开始安装
cd /mnt/
./DMInstall.bin -i
安装完成执行备份脚本。。。
cd /home/dmdba/ ##root用户
vim .bash_profile 环境变量
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
su - dmdba
source .bash_profile 生效
创建实例:【三台服务器的数据库名字可以一样,实例名必须不一致】
./dminit path=/dm8/data/ CHARSET=0 CASE_SENSITIVE=0 PAGE_SIZE=32 EXTENT_SIZE=32 DB_NAME=DM1 INSTANCE_NAME=TEST1 PORT_NUM=5236 log_size=2048
./dminit path=/dm8/data/ CHARSET=0 CASE_SENSITIVE=0 PAGE_SIZE=32 EXTENT_SIZE=32 DB_NAME=DM1 INSTANCE_NAME=TEST2 PORT_NUM=5236
./dminit path=/dm8/data/ CHARSET=0 CASE_SENSITIVE=0 PAGE_SIZE=32 EXTENT_SIZE=32 DB_NAME=DM1 INSTANCE_NAME=TEST3 PORT_NUM=5236
初始化之后进行一次启停:
./dmserver /dm8/data/DM1/dm.ini
主备份(脱机):
./dmrman CTLSTMT="BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL TO BACKUP_FILE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'"
或者进入dmrman : bakcuo database '/dm8/data/xx/dm.ini' full backupset ;/dm8/data/xxx/bak/db_full_bak';
拷贝到俩从:
scp -rp /opt/dmdbms/data/DAMENG/bak/BACKUP_FILE/ dmdba@10.0.0.56:/opt/dmdbms/data/DAMENG/bak
俩从库分别作操作还原:
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DM1/dm.ini' FROM BACKUPSET '/dm8/data/DM1/bak/db_full_bak'"
更新:
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DM1/dm.ini' UPDATE DB_MAGIC"
实时主备:
(主)配置dm.ini
INSTANCE_NAME = DW1
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
(主)配置 dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /dm8/dmdbms/data/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个MAL缓存大小,单位MB
MAL_SYS_BUF_SIZE = 2048 #MAL总大小限制,单位MB
MAL_COMPRESS_LEVEL = 0 #MAL消息压缩等级,0表示不压缩
[MAL_INST1]
MAL_INST_NAME = TEST1
MAL_HOST =192.168.208.176
MAL_PORT = 61141
MAL_INST_HOST = 192.168.208.176
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = TEST2
MAL_HOST = 192.168.208.179
MAL_PORT = 61142
MAL_INST_HOST = 192.168.208.179
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME = TEST3
MAL_HOST = 192.168.208.175
MAL_PORT = 61143
MAL_INST_HOST = 192.168.208.175
MAL_INST_PORT = 5236
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143
(主)配置 dmarch.ini
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = TEST2
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = TEST3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/DM1/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 2048
(主)配置 dmwatcher.ini
[GDW1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #自动切换模式,MANUAL:故障手动切换模式
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dm8/data/DM1/dm.ini #dm.ini文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
(主)以 Mount 方式启动主库
./dmserver /dm8/data/DM1/dm.ini mount
(主)设置 OGUID
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(453331);
SQL> alter database primary;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
(备)配置备
vim dm.ini
scp -r /opt/dmdbms/data/DAMENG/dmmal.ini dmdba@10.0.0.56:/opt/dmdbms/data/DAMENG/ (一致)
scp -r /opt/dmdbms/data/DAMENG/dmarch.ini dmdba@10.0.0.56:/opt/dmdbms/data/DAMENG/ (归档名字)
scp -r /opt/dmdbms/data/DAMENG/dmwatcher.ini dmdba@10.0.0.56:/opt/dmdbms/data/DAMENG/ (一致)
以 Mount 方式启动备库
./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
设置 OGUID,修改数据库模式
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(453331);
SQL> alter database standby;
SQL> alter database primary;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
高可用监视器:
主:dmmonitor.ini
MON_LOG_PATH = /dm8/dmdbms//log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 1
MON_INST_NUM = 3 #实例总个数
MON_HB_INTERVAL = 60 #通信心跳校验间隔
MON_BRO_INTERVAL = 100 #raft 协议中实例通信心跳间隔
MON_VOTE_INTERVAL = 100 #raft 协议中基础投票间隔
MON_ID = 1 #当前监视器在监视器系统中的 ID
MON_MID = 45614 #当前监视器系统的唯一标识
[GDW1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.208.176:52141
MON_DW_IP = 192.168.208.179:52142
MON_DW_IP = 192.168.208.175:52143
[MON1]
MON_HOST = 192.168.208.179 #系统监听 TCP 连接的 IP 地址
MON_PORT = 8339 #系统监听 TCP 连接的端口号
MON_INST_ID = 1 #监视器实例在监视器系统中的 ID
备
MON_LOG_PATH = /dm8/dmdbms//log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 1
MON_INST_NUM = 3 #实例总个数
MON_HB_INTERVAL = 60 #通信心跳校验间隔
MON_BRO_INTERVAL = 100 #raft 协议中实例通信心跳间隔
MON_VOTE_INTERVAL = 100 #raft 协议中基础投票间隔
MON_ID = 2 #当前监视器在监视器系统中的 ID
MON_MID = 45614 #当前监视器系统的唯一标识
[GDW1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.208.176:52141
MON_DW_IP = 192.168.208.179:52142
MON_DW_IP = 192.168.208.175:52143
[MON1]
MON_HOST = 192.168.208.175 #系统监听 TCP 连接的 IP 地址
MON_PORT = 8339 #系统监听 TCP 连接的端口号
MON_INST_ID = 2 #监视器实例在监视器系统中的 ID
启动各个主备库上的守护进程:
./dmwatcher /opt/dmdbms/data/DAMENG/dmwatcher.ini
启动监视器:(主备)
./dmmonitor /opt/dmdbms/data/DAMENG/dmmonitor.ini
注册
(主)
./dm_service_installer.sh -t dmserver -m mount -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -p TEST
./dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini -p DW1
(备)
./dm_service_installer.sh -t dmserver -m mount -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -p DW2
./dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini -p DW2
./dm_service_installer.sh -t dmmonitor -monitor_ini /opt/dmdbms/data/DAMENG/dmmonitor.ini -p DMMONITOR -- ./DmMonitorServiceDMMONITOR start
更多资讯请上达梦技术社区了解:https://eco.dameng.com