主备数据守护集群搭建

  • Post author:
  • Post category:其他


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 没有关闭防火墙开机自启

在上一个错误中将端口开通后,仍然报错无法连接,经检查,已经关闭的防火墙重新开启。

因为没有关闭防火墙开机自启。

解决办法:

关闭开机自启,重新启动数据库。



版权声明:本文为weixin_38840521原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。