DM8数据守护(Data Watch) 实时主备环境搭建与管理

DM8数据守护(Data Watch) 实时主备环境搭建与管理

1:测试环境主机准备

1.1:三台主机

角色主机名ip地址实例名称数据库名称
主库host1192.168.0.144mema1memadb
备库host2192.168.0.113mema2memadb
监视器monitor192.168.0.61

1.2:端口规划

实例名端口号MAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORT
meam152365237192.168.0.14452385239
mema252365237192.168.0.11352385239

2:初次同步

2.1:设置主库为归档模式

alter database mount;
alter database add archivelog 'DEST=/opt/dm8/data/memadb/arch,TYPE=local,FILE_SIZE=128,space_limit=0';
alter database archivelog;
alter database open;
select arch_mode from v$database;

请添加图片描述

2.2:备份主库

2.2.1:使用rman脱机备份
dmrman
 backup database '/opt/dm8/data/memadb/dm.ini' full backupset '/opt/dm8/data/memadb/bak/memadb_bak01';

请添加图片描述

2.3:初始化备库

dminit PATH=/opt/dm8/data DB_NAME=memadb INSTANCE_NAME=mema2 PORT_NUM=5236  PAGE_SIZE=32 EXTENT_SIZE=32 CHARSET=1 CASE_SENSITIVE=0 LENGTH_IN_CHAR=0 BLANK_PAD_MODE=1 

2.4:将主库的备份复制到备库

cd /opt/dm8/data/memadb/bak
scp -r memadb_bak01 192.168.3.202:/opt/dm8/data/memadb/bak/

2.5:用主库恢复备库

dmrman
RESTORE DATABASE '/opt/dm8/data/memadb/dm.ini' FROM BACKUPSET '/opt/dm8/data/memadb/bak/memadb_bak01'
RECOVER DATABASE '/opt/dm8/data/memadb/dm.ini' FROM BACKUPSET '/opt/dm8/data/memadb/bak/memadb_bak01'
RECOVER DATABASE '/opt/dm8/data/memadb/dm.ini' UPDATE DB_MAGIC

请添加图片描述

3:配置主库参数

vi /opt/dm8/data/memadb/dm.ini
INSTANCE_NAME = mema1 
#INSTANCE_NAME = mema2
PORT_NUM = 5236  #数据库实例监听端口
ALTER_MODE_STATUS = 0  #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2  #不允许备库 OFFLINE 表空间
MAL_INI = 1  #打开 MAL 系统
ARCH_INI = 1  #打开归档配置

4:配置备库参数

vi /opt/dm8/data/memadb/dm.ini
#INSTANCE_NAME = mema1 
INSTANCE_NAME = mema2
PORT_NUM = 5236  #数据库实例监听端口
ALTER_MODE_STATUS = 0  #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2  #不允许备库 OFFLINE 表空间
MAL_INI = 1  #打开 MAL 系统
ARCH_INI = 1  #打开归档配置

4.2:配置dmmal.ini

MAL_CHECK_INTERVAL = 5          #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5      #判定 MAL 链路断开的时间

[MAL_INST1]
MAL_INST_NAME = mema1           #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.0.144       #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238                 #MAL 系统监听 TCP 连接的端口
MAL_DW_PORT = 5239              #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_HOST = 192.168.0.144   #实例的对外服务 IP 地址
MAL_INST_PORT = 5236            #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_INST_DW_PORT = 5237         #实例监听守护进程TCP连接的端口


[MAL_INST2]
MAL_INST_NAME = mema2
MAL_HOST = 192.168.0.113
MAL_PORT = 5238
MAL_DW_PORT = 5239
MAL_INST_HOST = 192.168.0.113
MAL_INST_PORT = 5236
MAL_INST_DW_PORT = 5237

4.3:配置dmarch.ini

4.3.1:主库
vi /opt/dm8/data/memadb/dmarch.ini

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME                       #实时归档类型
ARCH_DEST = mema2                          #实时归档目标实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                          #本地归档类型
ARCH_DEST = /opt/dm8/data/memadb/arch      #本地归档文件存放路径
ARCH_FILE_SIZE = 128                       #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0                       #单位 Mb,0 表示无限制,范围 1024~4294967294M

4.3.2:备库
vi /opt/dm8/data/memadb/dmarch.ini

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME                       #实时归档类型
ARCH_DEST = mema1                          #实时归档目标实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                          #本地归档类型
ARCH_DEST = /opt/dm8/data/memadb/arch      #本地归档文件存放路径
ARCH_FILE_SIZE = 128                       #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0                       #单位 Mb,0 表示无限制,范围 1024~4294967294M

4.3.3:配置dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL                            #全局守护类型
DW_MODE = MANUAL                            #自动切换模式
DW_ERROR_TIME = 10                          #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                      #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                        #本地实例故障认定时间
INST_OGUID = 453331                         #守护系统唯一 OGUID 值
INST_INI = /opt/dm8/data/memadb/dm.ini      #dm.ini 配置文件路径
INST_AUTO_RESTART = 1                       #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dm8/bin/dmserver    #命令行方式启动
RLOG_SEND_THRESHOLD = 0                     #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                    #指定备库重演日志的时间阀值,默认关闭

5:以mount的方式启动主备库

dmserver /opt/dm8/data/memadb/dm.ini mount

6:设置OGUID

disql sysdba
SQL> sp_set_oguid(453331);

7:修改主备库模式

7.1:主库

alter database primary;

7.2:备库

alter database standby;

8:注册并启动守护进程

8.1:主库

/opt/dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dm8/data/memadb/dmwatcher.ini -p mema

systemctl start DmWatcherServicemema

8.2:备库

/opt/dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /opt/dm8/data/memadb/dmwatcher.ini -p mema

systemctl start DmWatcherServicemema

9:配置监视器

9.1:参数文件dmmonitor.ini

MON_DW_CONFIRM = 1                   #确认监视器模式
MON_LOG_PATH = /opt/dm8/log          #监视器日志文件存放路径
MON_LOG_INTERVAL = 60                #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32               #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0              #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 453331              #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.0.144:5239
MON_DW_IP = 192.168.0.113:5239

9.2:启动监视器

dmmonitor /opt/dm8/data/memadb/dmmonitor.ini

请添加图片描述

10:测试和管理

10.1:主备库同步测试

10.1.1:主库
disql sysdba/mema123@host1:5236
SQL> create table t_objects as select * from sysobjects;
SQL> select count(*) from t_objects;

请添加图片描述

10.1.2:备库
disql sysdba/mema123@host2:5236
SQL> select count(*) from t_objects;

请添加图片描述

10.2:主备库切换测试

10.2.1:Switchover切换
choose switchover

switchover mema2

login
sysdba
mema123

switchover mema2

请添加图片描述

请添加图片描述

switchover后自动显示DW实时复制的状态

请添加图片描述

10.2.2 Takeover接管

等复制组内有故障节点时,可以实施自动或手动takeover接管

choose takeover 选择可以接管的节点,如果所有节点正常,则没有候选节点。

请添加图片描述

登录到host2,停止网络服务,模拟节点故障。

请添加图片描述

monitor报mema2节点错误

请添加图片描述

再次输入choose takeover,显示mema1可以做为接管候选节点。

请添加图片描述

输入takeover mema1 指定,让mema1接管复制组。

请添加图片描述

接管后状态汇报。

请添加图片描述

在mema1节点利disql连接到数据库,状态正常

请添加图片描述

10.2.3 恢复DW环境

到mema2控制台,恢复网络服务。

monitor检测到mema2恢复正常。

请添加图片描述

复制组自动恢复。

使用指令tip了解复制组当前状态。

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Docker 搭建 DM8 实时,可以按照以下步骤进行: 1. 安装 Docker 和 Docker Compose 首先需要安装 Docker 和 Docker Compose,可以参考 Docker 官方文档进行安装。 2. 下载 DM8 镜像文件 可以从 DM 官网下载 DM8 镜像文件,也可以使用以下命令从 Docker Hub 上下载: ``` docker pull pingcap/dm:latest ``` 3. 创建 DM8 配置文件 在本地创建一个名为 `dm-master.yaml` 的文件,用于配置 DM8 的节点。以下是一个示例配置文件: ```yaml master-addr: 172.20.0.2:8261 name: master1 data-dir: /home/data/master1 log-file: /home/logs/master1.log log-level: "info" discovery-mode: "static" static-nodes: - 172.20.0.2:8291 - 172.20.0.3:8291 - 172.20.0.4:8291 web-port: 8281 ``` 其中,`master-addr` 表示当前节点的地址和端口号,`name` 是节点的名称,`data-dir` 是数据存储的目录,`log-file` 是日志文件的路径,`log-level` 是日志级别。 `discovery-mode` 表示节点发现的模式,这里使用静态模式,`static-nodes` 是静态模式下所有节点的地址和端口号。 `web-port` 是 DM8 的 Web 界面端口号。 在本地创建一个名为 `dm-worker.yaml` 的文件,用于配置 DM8 的工作节点。以下是一个示例配置文件: ```yaml name: worker1 data-dir: /home/data/worker1 log-file: /home/logs/worker1.log log-level: "info" server-id: 101 relay-dir: /home/relay_log meta: case-sensitive: true worker-addr: 172.20.0.2:8262 master-addr: 172.20.0.2:8261 relay-binlog-name: mysql-binlog relay-binlog-gtid: "" source-id: "mysql-replica-01" from: host: "172.20.0.5" user: "root" password: "password" routes: route-rule-1: schema-pattern: "test" target-schema: "test" target-instance: "mysql-replica-02" enable-sharding: false ``` 其中,`name` 是节点的名称,`data-dir` 是数据存储的目录,`log-file` 是日志文件的路径,`log-level` 是日志级别。 `server-id` 是工作节点的 ID,`relay-dir` 是中继日志的存储路径。 `worker-addr` 是当前节点的地址和端口号,`master-addr` 是节点的地址和端口号。 `relay-binlog-name` 是指定中继日志的文件名,`relay-binlog-gtid` 是中继日志的 GTID。 `source-id` 是源实例的 ID,`from` 是源实例的连接信息。 `routes` 是数据路由的配置,这里只配置了一个路由规则,将 `test` 库的数据路由到名为 `mysql-replica-02` 的实例中。 4. 创建 Docker Compose 配置文件 在本地创建一个名为 `docker-compose.yaml` 的文件,用于启动 DM8 的节点和工作节点。以下是一个示例配置文件: ```yaml version: "3.7" services: dm-master: image: pingcap/dm:latest container_name: dm-master volumes: - ./dm-master.yaml:/etc/dm-master/dm-master.yaml ports: - "8261:8261" - "8281:8281" dm-worker: image: pingcap/dm:latest container_name: dm-worker volumes: - ./dm-worker.yaml:/etc/dm-worker/dm-worker.yaml depends_on: - dm-master ports: - "8262:8262" ``` 其中,`dm-master` 是 DM8 节点的容器,`dm-worker` 是 DM8 工作节点的容器。`volumes` 挂载了之前创建的两个 YAML 配置文件,`ports` 映射了节点的端口号。 5. 启动 Docker Compose 在命令行中执行以下命令,启动 Docker Compose: ``` docker-compose up -d ``` 6. 验证 DM8 实时 使用浏览器访问 `http://localhost:8281`,可以查看 DM8 的 Web 界面。在界面上可以查看节点的状态,以及数据同步的情况。可以在节点上进行写入操作,验证数据同步是否正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值