1、环境说明
本地IP X.X.X.X 公网: X.X.X.X
主 :XX.X.X.X 内网:XX.XX.X.X
备 :XXX.X.X.X 内网:XXX.XX.X.X
监视器:主库上
确认监视器文件: /data/dmdata/DAMENG/dmmonitor.ini
非确认监视器文件:/opt/dmdbms/bin/dmmonitor /data/dmdata/DAMENG/dmmonitor0.ini
2 部署过程
2.1创建用户和组:
主机:
ssh root@XX.X.X.X
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
********
备机:
ssh root@XXX.X.X.X
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
********
2.2 准备安装包:
mkdir /opt/dmsetup
chown dmdba.dinstall /opt/dmsetup
mkdir /opt/dmsetup
chown dmdba.dinstall /opt/dmsetup
scp -r dm8_20210818_x86_rh7_64_ent_8.1.2.18_pack13.iso/ dmdba@XX.X.X.X:/opt/dmsetup
scp -r dm8_20210818_x86_rh7_64_ent_8.1.2.18_pack13.iso/ dmdba@XXX.X.X.X:/opt/dmsetup
2.3 部署详细信息
创建目录:(授权时务必检查【-R】参数的使用是否正确!!!)
mkdir -p /opt/dmdbms
chown dmdba.dinstall /opt/dmdbms
chmod 755 /opt/dmdbms
mkdir -p /data/dmdata
chown dmdba.dinstall /data/dmdata
chmod 755 /data/dmdata
mkdir -p /data/dmbak
chown dmdba.dinstall /data/dmbak
chmod 755 /data/dmbak
mkdir -p /data/dmarch
chown dmdba.dinstall /data/dmarch
chmod 755 /data/dmarch
三 修改系统配置:
3.1 关闭防火墙
systemctl stop firewalld.service
systemctl status firewalld.service
—-systemctl disable firewalld.service 关闭开机自启
cat /etc/selinux/config
3.2 关闭SElinux
vi /etc/sysconfig/selinux
SELINUX=disabled
3.3 修改内核参数
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
生效:
sysctl -p
sysctl -p /etc/sysctl.conf
sysctl -q vm.swappiness
3.4 关闭numa和透明大页:
vi /etc/default/grub
在GRUB_CMDLINE_LINUX后添加
numa=off transparent_hugepage=never
重新生成配置文件:
grub2-mkconfig -o /etc/grub2.cfg
重启生效(慎重)–如系统中已有业务正在运行,请申请重启窗口,谨慎操作。
验证numa:
验证1:
dmesg | grep -i numa
验证2:
cat /proc/cmdline—-
验证transparent_hugepage=never:
cat /sys/kernel/mm/transparent_hugepage/enabled
3.5 检查是否图形化服务打开检查和关闭GNOME
ps -ef|grep gnome
ps -ef|grep ntpd
关闭GNOME
systemctl get-default
systemctl set-default multi-user.target
说明:
graphical.target:图形化模式
multi-user.target:命令行模式
3.6 检查是否时间同步服务打开检查
ps -ef|grep ntpd
配置ntp时间同步(UOS-NTP失败)
yum install ntp –所有节点执行安装命令
systemctl start ntpd –所有节点执行启动服务
systemctl enable ntpd –所有节点执行启用ntpd
3.7 是否重启了: 重启
四 安装数据库软件:
chown -R dmdba.dinstall /opt/dmsetup/dm8_20210818_x86_rh7_64_ent_8.1.2.18_pack13.iso
chmod -R 775 /opt/dmsetup/dm8_20210818_x86_rh7_64_ent_8.1.2.18_pack13.iso
cd /opt/dmsetup/
mount -o loop dm8_20210818_x86_rh7_64_ent_8.1.2.18_pack13.iso /mnt
su – dmdba
cd /mnt
./DMInstall.bin -i
安装前小结
安装位置: /opt/dmdbms
未输入key路径
使用root用户执行
/opt/dmdbms/script/root/root_installer.sh
五 初始化实例:
su – dmdba
cd /opt/dmdbms/bin
./dminit PATH=/data/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CHARSET=1 LENGTH_IN_CHAR=Y
六 环境变量:
vi ~/.bash_profile
export PATH=/opt/dmdbms/bin:$PATH
source ~/.bash_profile
七 注册服务:(mount)
su – root
cd /opt/dmdbms/script/root/
主库:
./dm_service_installer.sh -t dmserver -p DM01 -m mount -dm_ini /data/dmdata/DAMENG/dm.ini
备库:
./dm_service_installer.sh -t dmserver -p DM02 -m mount -dm_ini /data/dmdata/DAMENG/dm.ini
–主库操作
启动主库:
su – dmdba
cd /opt/dmdbms/bin
-先前台启动一次
./dmserver /data/dmdata/DAMENG/dm.ini
exit
八 备份还原
8.1 dmdba用户使用dmrman做冷备
./dmrman
BACKUP DATABASE ‘/data/dmdata/DAMENG/dm.ini’ BACKUPSET ‘/data/dmbak/db_full_bak_20220330’;
使用dmdba
scp -r /data/dmbak/db_full_bak_20220330 dmdba@XXX.XX.X.X:/data/dmbak ———-(XXX.XX.X.X为内网)
8.2 在备库还原:
su – dmdba
cd /opt/dmdbms/bin
./dmrman
check backupset ‘/data/dmbak/db_full_bak_20220330’
RESTORE DATABASE ‘/data/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/data/dmbak/db_full_bak_20220330’
RECOVER DATABASE ‘/data/dmdata/DAMENG/dm.ini’ FROM BACKUPSET ‘/data/dmbak/db_full_bak_20220330’
RECOVER DATABASE ‘/data/dmdata/DAMENG/dm.ini’ UPDATE DB_MAGIC
九 配置文件
cd /data/dmdata/DAMENG/
9.1 dm.ini
vi dm.ini
BAK_PATH = /data/dmbak
INSTANCE_NAME = GRP1_RT_01
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 # 打 开 归 档 配 置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
COMPATIBLE_MODE = 2
备库
vi dm.ini
BAK_PATH = /data/dmbak
INSTANCE_NAME = GRP1_RT_02
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 # 打 开 归 档 配 置
SVR_LOG = 1
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
COMPATIBLE_MODE = 2
9.2 dmarch.ini
主库:
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 10240
备库:
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /data/dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 10240
9.3 dmmal.ini
主库-备库1-备库2:完全一致
vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = XX.XX.X.X
MAL_PORT = 61141
MAL_INST_HOST = XX.XX.X.X
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = XXX.XX.X.X
MAL_PORT = 61142
MAL_INST_HOST = XXX.XX.X.X
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
9.4 dmwatcher.ini
主库-备库:完全一致
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 32400
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 45335
INST_INI = /data/dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
9.5 SQLLOG:
主库-备库:完全一致
vi sqllog.ini
BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)
[SLOG_ALL]
FILE_PATH = /data/dmdata/DAMENG/dmsql_log
PART_STOR = 0
SWITCH_MODE =2
SWITCH_LIMIT = 1024
ASYNC_FLUSH = 1
FILE_NUM = 10
ITEMS = 0
SQL_TRACE_MASK = 1
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
mkdir /data/dmdata/DAMENG/dmsql_log
十 配置监视器
10.1确认监视器后台启动—-/opt/dmdbms/bin/DmMonitorServiceMONITOR start
vi dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /opt/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每 隔 60s 定 时 记 录 系 统 信 息 到 日 志 文 件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 2048 #限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 45335 #组GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = XX.XX.X.X:52141
MON_DW_IP = XXX.XX.X.X:52142
10.2非确认监视器前台启动 —–/opt/dmdbms/bin/ ./dmmonitor /data/dmdata/DAMENG/dmmonitor0.ini
vi dmmonitor0.ini
MON_DW_CONFIRM = 0 #确认监视器模式
MON_LOG_PATH = /opt/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每 隔 60s 定 时 记 录 系 统 信 息 到 日 志 文 件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 2048 #限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 45335 #组GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = XX.XX.X.X:52141
MON_DW_IP = XXX.XX.X.X:52142
十一 注册服务:
su – root
cd /opt/dmdbms/script/root/
11.1 数据守护服务
主库:
./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini -p DM01
创建服务(DmWatcherServiceDM01)完成
备库:
./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdata/DAMENG/dmwatcher.ini -p DM02
创建服务(DmWatcherServiceDM02)完成
-监视器服务(主库做)
./dm_service_instal1
11.2开启归档
[dmdba@~]# /data/dmdbms/bin/disql SYSDBA/SYSDBA@172.16.1.1:5236
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG ‘DEST=/data/dmarch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=51200’;
SQL> ALTER DATABASE OPEN;ler.sh -t dmmonitor -p MONITOR -monitor_ini /data/dmdata/DAMENG/dmmonitor.ini
创建服务(DmMonitorServiceMONITOR)完成
启动监视器密命令:
/opt/dmdbms/bin/DmMonitorServiceMONITOR start
/opt/dmdbms/bin/ ./dmmonitor /data/dmdata/DAMENG/dmmonitor0.ini
十二 配置主备模式
启动主库:
su – dmdba
cd /opt/dmdbms/bin
———./DmServiceDM01 start ?必须mount吗
./dmserver /data/dmdata/DAMENG/dm.ini mount
配置主库:
./disql
SP_SET_PARA_VALUE(1,’ALTER_MODE_STATUS’,1);
SP_SET_OGUID(45335);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1,’ALTER_MODE_STATUS’,0);
启动备库:
su – dmdba
cd /opt/dmdbms/bin
–./DmServiceDM02 start
./dmserver /data/dmdata/DAMENG/dm.ini mount
备库:
./disql
SP_SET_PARA_VALUE(1,’ALTER_MODE_STATUS’,1);
SP_SET_OGUID(45335);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1,’ALTER_MODE_STATUS’,0);
十三 启动集群:
先启主库再备库
—/opt/dmdbms/bin/DmServiceDM01 start
—/opt/dmdbms/bin/DmServiceDM02 start
/opt/dmdbms/bin/DmWatcherServiceDM01 start
/opt/dmdbms/bin/DmWatcherServiceDM02 start
——-./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
在主库前台启动非确认监视器查看状态
—-/opt/dmdbms/bin/dmmonitor /data/dmdata/DAMENG/dmmonitor0.ini
停止集群:关确认监视器,关备守、主守,关主server、关备server
./DmMonitorServiceMONITOR stop (在主库上)
./DmWatcherServiceDM02 stop
./DmWatcherServiceDM01 stop
./DmServiceDM01 stop
./DmServiceDM02 stop
十四 测试主备状况
-数据同步
主库
create table ZZ(id int);
insert into ZZ values(1),(2);
commit;
备库
select * from ZZ;
主库
drop table ZZ;
十五 主备切换
前台启动非确认监视器
cd /opt/dmdbms/bin
./dmmonitor /data/dmdata/DAMENG/dmmonitor0.ini
login
用户名:SYSDBA
密码:SYSDBA
switchover GRP1.GRP1_RT_02 切换
switchover GRP1.GRP1_RT_01
takeover GRP1.GRP1_RT_02 接管(强制切换)
十六 参数优化–主备都执行(自行选择优化参数)
可能遇到的问题:
1 各个配置文件中的相关端口没有开通:
在启动数据库的时候会报错,显示无法连接到备机,ping对应备机可以ping通,但是Telnet不通,说明端口不通。会导致备库无法通过守护进程将备库拉起。
解决办法:
开通对应端口,重启服务器,重新启动数据库。
2 没有关闭防火墙开机自启
在上一个错误中将端口开通后,仍然报错无法连接,经检查,已经关闭的防火墙重新开启。
因为没有关闭防火墙开机自启。
解决办法:
关闭开机自启,重新启动数据库。