读写分离集群部署
主机规划
主机名 | 服务ip | 心跳ip | 数据库名 | 实例名 |
dm-16 | 192.168.3.16 | 无需实例,仅做监视管理用 | 无需实例,仅做监视管理用 | |
dm-17 | 192.168.2.17 | 192.168.3.17 | dmrw | dmrw1 |
dm-18 | 192.168.3.18 | 192.168.3.18 | dmrw | dmrw2 |
dm-19 | 192.168.3.19 | 192.168.3.19 | dmrw | dmrw3 |
端口规划
实例名 | 实例端口 | MAL 系统监听 TCP 连接的端口 | 实例本地的守护进程监听 TCP 连接的端口 | 实例监听守护进程 TCP 连接的端口 |
dm-16 | 5236 | 7336 | 7436 | 7536 |
dmrw1 | 5236 | 7336 | 7436 | 7536 |
dmrw2 | 5236 | 7336 | 7436 | 7536 |
dmrw3 | 5236 | 7336 | 7436 | 7536 |
本地存储LVM磁盘
磁盘 | LVM磁盘名/用途 |
/dev/sda(25G) | /dev/mapper/centos-root数据库安装磁盘) |
/dev/sda(25G) | /dev/mapper/centos-root数据磁盘) |
目录规划
数据库软件安装目录 | /home/dmdba/dmdbms |
实例安装目录 | /home/dmdba/dmdata/ |
归档日志存放目录 | /home/dmdba/dmdata/arch |
备份文件存放目录 | /home/dmdba/dmdata/dmbak/ |
搭建步骤
修改主机名
vi /etc/hostname
修改规划上面的主机名
软件安装
dm数据库单节点安装步骤,此处略
初始化实例
三个节点都要操作(dm-17\dm-18\dm-19)
dminit path=/home/dmdba/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmrw instance_name=dmrw
以主机dm-17为读写分离主库,启动实例
dmserver /home/dmdba/dmdata/dmrw/dm.ini
出现system is ready后输入exit停止数据库
脱机备份数据库
在主机dm-17上执行以下命令,确认主库 dmap 服务已启动:
ps -ef|grep dmap
dmdba用户 启动dmrman工具
dmrman use_ap=2
执行 backup 全库:
backup database '/home/dmdba/dmdata/dmrw/dm.ini' backupset '/home/dmdba/dmdata/dmbak/bakfull';
备份还原备库
备份的文件/home/dmdba/dmdba/dmbak/bakfull 拷贝到另外两台服务器上。
scp -r /home/dmdba/dmdata/dmbak/bakfull 192.168.2.18:/home/dmdba/dmdata/dmbak/.
scp -r /home/dmdba/dmdata/dmbak/bakfull 192.168.2.19:/home/dmdba/dmdata/dmbak/.
在主机dm-18和dm-19上
使用 dmrman 工具还原备库,dmdba 用户执行:
dmrman use_ap=2
进入dmrman工具交互界面
执行 restore:
restore database '/home/dmdba/dmdata/dmrw/dm.ini' from backupset '/home/dmdba/dmdata/dmbak/bakfull'
完成后执行 recover:
recover database '/home/dmdba/dmdata/dmrw/dm.ini' from backupset '/home/dmdba/dmdata/dmbak/bakfull '
最后执行 recover update db_magic。
recover database '/home/dmdba/dmdata/dmrw/dm.ini' update db_magic;
修改dm.ini参数
所有节点都要修改
执行以下命令:
vi /home/dmdba/dmdata/dmrw/dm.ini
主库dm-17上修改以下参数值:
INSTANCE_NAME = dmrw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库dm-18上修改以下参数值:
INSTANCE_NAME = dmrw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库dm-19上修改以下参数值:
INSTANCE_NAME = dmrw3
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
配置归档配置文件
在实例目录下新建文件 dmarch.ini,执行以下命令:
vi /dmdata/dmdb/dmarch.ini
REALTIME自动切换模式下
需要指定ARCH_WAIT_APPLY=1保证主备事务一致:
在实例目录下新建文件 dmarch.ini,执行以下命令:
vi /dmdata/dmdb/dmarch.ini
主库dm-17上添加以下内容:
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dmrw2
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = dmrw3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
备库dm-18上添加以下内容:
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dmrw1
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = dmrw3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
备库dm-19上添加以下内容:
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dmrw1
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = dmrw2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
配置dmmal.ini(心跳网络)
三个节点都要配置,且配置必须相同
[dmdba@dm-17 dmrw]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15
[MAL_INST1]
MAL_INST_NAME = dmrw1
MAL_HOST = 192.168.3.17
MAL_PORT = 7336
MAL_INST_HOST = 192.168.2.17
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST2]
MAL_INST_NAME = dmrw2
MAL_HOST = 192.168.3.18
MAL_PORT = 7336
MAL_INST_HOST = 192.168.2.18
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST3]
MAL_INST_NAME = dmrw3
MAL_HOST = 192.168.3.19
MAL_PORT = 7336
MAL_INST_HOST = 192.168.2.19
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
配置守护进程
三个节点都要配置,且配置必须相同
[dmdba@dm-17 dmrw]$ cat dmwatcher.ini
[GRP_RW]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 30
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 20
INST_OGUID = 453331
INST_INI = /home/dmdba/dmdata/dmrw/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
方式启动数据库实例
使用 dmdba 用户,在主库上执行以下命令(主备库都执行):
dmserver /home/dmdba/dmdata/dmrw/dm.ini mount
在新的终端使用 disql 工具连接数据库:
./disql SYSDBA/SYSDBA
主备库都修改 oguid,执行以下命令:
sp_set_oguid(453331);
主库dm-17上修改数据库模式为 primary,执行以下命令:
alter database primary;
备库dm-18和dm-19上类似操作,但注意修改数据库模式为 standby,执行以下命令:
alter database standby;
dmdba 用户下,到数据库安装目录的 bin 下执行以下命令(主备库都执行):
dmwatcher /home/dmdba/dmdata/dmrw/dmwatcher.ini
查看状态
使用DM管理工具,连上三个实例上面查看
配置监视器(服务器192.168.3.16)
192.168.3.16首先也要安装数据库软件再操作下面步骤
vi /home/dmdba/dmdbms/bin/dmmonitor.ini
添加以下内容:
说明:具体配置时,请把#和#之后的中文内容删除。
MON_DW_CONFIRM = 1
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 200
MON_LOG_SPACE_LIMIT = 1024
[GRP_RW]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.3.17:7436
MON_DW_IP = 192.168.3.18:7436
MON_DW_IP = 192.168.3.19:7436
启动监视器
在服务器dm-16上操作:
dmmonitor /dmdata/dmdb/dmmonitor.ini
可以看见集群状态ok
以上证明集群搭建成功
关库
按照关闭dmmonitor---dmwatcher关闭后(dmwatcher关闭顺序先主后备)---dmserver(dmserver关闭顺序先主后备)的顺序依次关闭数据库
添加服务作为系统启动服务
下面的操作在主备节点都要执行,执行顺序:先主库执行----备库执行:
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmwatcher -p dmrw -watcher_ini /home/dmdba/dmdata/dmrw/dmwatcher.ini
./dm_service_installer.sh -t dmserver -p dmrw -dm_ini /home/dmdba/dmdata/dmrw/dm.ini
监视器执行(192.168.3.16)执行
使用 root 用户,到数据库安装目录的script/root下。
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmmonitor -p monitor-confirm -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini
启动命令
systemctl start DmMonitorServicemonitor-confirm
主机dm-16再添加一个普通监视器
cd /home/dmdba/dmdbms/bin
cp dmmonitor.ini dmmonitor-normal.ini
修改dmmonitor-normal.ini
[dmdba@dm-16 bin]$ cat dmmonitor-normal.ini
MON_DW_CONFIRM = 0
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 200
MON_LOG_SPACE_LIMIT = 1024
[GRP_RW]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.3.17:7436
MON_DW_IP = 192.168.3.18:7436
MON_DW_IP = 192.168.3.19:7436
启动集群:
启动备库实例
192.168.2.18启动实例
systemctl start DmServicedmrw
192.168.2.19 启动实例
systemctl start DmServicedmrw
启动主库实例
192.168.2.17
systemctl start DmServicedmrw
启动主库守护进程
192.168.2.17
systemctl start DmWatcherServicedmrw
启动备库守护进程
192.168.2.18
systemctl start DmWatcherServicedmrw
192.168.2.19
systemctl start DmWatcherServicedmrw
启动监视服务
192.168.3.16
查看集群状态
法一:查看日志:
cat /home/dmdba/dmdbms/log/DmMonitorservicemonitor-confirm.log
法二:前端查看
dmmonitor path= /home/dmdba/dmdbms/bin/dmmonitor-normal.ini
补充
在守护进程启动过程中,主库处于mount状态,这时主数据库是不能写东西,但备库会是正常open状态,可以查询