一.简介
DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案,主要由主库、备库、REDO 日志、REDO 日志传输、REDO 日志重演、守护进程 (dmwatcher)、监视器 (dmmonitor) 组成。接管备库通过监视器的Takeover 命令实现,主备库切换通过监视器的Switchover 命令实现。
实时主备:ARCH_TYPE = REALTIME #实时归档类型
读写分离:ARCH_TYPE = TIMELY #即时归档类型
实时主备:
由一个主库+一个多个备库,备库配置实时(Realtime) 归档。主库读写,备库只读,备库通过重做日志REDO实现与主库保持数据同步。
在备库查询的实时性要求不高的条件下,实时主备也可以配置接口的读写分离属性访问,实现读写分离功能特性。
DMDSC主备:
DMDSC集群和单节点之间互为主备。一般DMDSC集群部署为主库,将单节点部署为备库。同样通过重做日志REDO保持数据同步。
Data Watch:与oracle的dataguard和mysql的主备相似。
归档类型:
本地归档、远程归档、异步归档,redo写入日志文件后,有归档线程写入归档日志。
实时归档readtime是实现实时主备的基础,写入redo_buf内存之前发。
即时归档timely是实现读写分离的基础,写入redo_buf内存之后发。
二.部署规划
0.安装数据库前准备,参考上一篇或官方文档,包括用户目录系统参数优化等。
1.集群规划
名称 | master | slave | monitor |
资源分配 | 2C8G 100G+500G | 2C8G 100G+500G | 2C8G 100G+500G |
业务IP | 192.168.77.168 | 192.168.77.169 | / |
心跳IP | 192.168.77.168 | 192.168.77.169 | / |
监视器IP | / | / | 192.168.77.170 |
实例端口 | 5236 | 5236 | / |
MAL端口 | 5336 | 5336 | / |
MAL守护进程端口 | 5436 | 5436 | / |
OGUID | 45331 | 45331 | / |
守护组 | GRP1 | GRP1 | / |
安装目录 | /dmdata/dbms/dm8 | /dmdata/dbms/dm8 | /dmdata/dbms/dm8 |
实例目录 | /dmdata/data | /dmdata/data | / |
归档目录 | /dmdata/arch | /dmdata/arch | / |
备份目录 | /dmdata/dmbak | /dmdata/dmbak | / |
实例名 | ALI01 | ALI02 | / |
三.守护集群搭建
0.DM8数据库安装(master/slave/monitor)
#root用户挂载
su - root
#卸载掉镜像盘
umount /mnt
#上传安装包和授权文件到/home/dmdba
cd /home/dmdba
rz dm8_20240712_x86_rh7_64.iso
#挂载DM8安装包iso镜像,先把DM8安装包iso传到服务器上
mount -o loop /home/dmdba/dm8_20240712_x86_rh7_64.iso /mnt
#切换到dmdba用户安装
su - dmdba
#安装
cd /mnt/
./DMInstall.bin -i
#安装完成提示:请以root系统用户执行命令:
su - root
/dmdata/dbms/dm8/script/root/root_installer.sh
1.master配置
初始化实例
#dmdba用户执行
su - dmdba
#初始化实例
/dmdata/dbms/dm8/bin/dminit PATH=/dmdata/data/ db_name=ALIDB INSTANCE_NAME=ALI01 SYSDBA_PWD=Alibaby007 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048
启动服务
#启动服务(前台启动,临时启动)
/dmdata/dbms/dm8/bin/dmserver /dmdata/data/ALIDB/dm.ini
参数优化(使用官方脚本AutoParaAdj3.8_dm8.sql,自动生成优化sql语句)
#另外打开一个终端,因为上一步启动的服务是前台启动的
su - dmdba
#连接数据库
/dmdata/dbms/dm8/bin/disql SYSDBA/Alibaby007@192.168.77.168:5236
#参数自动优化
SP_SET_PARA_VALUE(2,'WORKER_THREADS',8);
SP_SET_PARA_VALUE(2,'IO_THR_GROUPS',8);
SP_SET_PARA_VALUE(2,'GEN_SQL_MEM_RECLAIM',0);
SP_SET_PARA_VALUE(2,'MAX_OS_MEMORY', 100);
SP_SET_PARA_VALUE(2,'MEMORY_POOL', 1500);
SP_SET_PARA_VALUE(2,'MEMORY_N_POOLS', 3);
SP_SET_PARA_VALUE(2,'MEMORY_TARGET', 2000);
SP_SET_PARA_VALUE(2,'BUFFER', 6000);
SP_SET_PARA_VALUE(2,'MAX_BUFFER', 6000);
SP_SET_PARA_VALUE(2,'BUFFER_POOLS', 23);
SP_SET_PARA_VALUE(2,'RECYCLE', 1000);
SP_SET_PARA_VALUE(2,'RECYCLE_POOLS', 7);
SP_SET_PARA_VALUE(2,'FAST_POOL_PAGES', 9999);
SP_SET_PARA_VALUE(2,'FAST_ROLL_PAGES', 1000);
SP_SET_PARA_VALUE(2,'ENABLE_FREQROOTS',1);
SP_SET_PARA_VALUE(2,'MULTI_PAGE_GET_NUM',1);
SP_SET_PARA_VALUE(2,'PRELOAD_SCAN_NUM',0);
SP_SET_PARA_VALUE(2,'PRELOAD_EXTENT_NUM',0);
SP_SET_PARA_VALUE(2,'TASK_THREADS',4);
SP_SET_PARA_VALUE(2,'MEMORY_MAGIC_CHECK', 1);
SP_SET_PARA_VALUE(1,'HJ_BUF_GLOBAL_SIZE', 1000);
SP_SET_PARA_VALUE(1,'HJ_BUF_SIZE', 250);
SP_SET_PARA_VALUE(1,'HAGR_BUF_GLOBAL_SIZE',1000);
SP_SET_PARA_VALUE(1,'HAGR_BUF_SIZE', 250);
SP_SET_PARA_VALUE(2,'SORT_FLAG',0);
SP_SET_PARA_VALUE(2,'SORT_BLK_SIZE',1);
SP_SET_PARA_VALUE(2,'SORT_BUF_SIZE', 10);
SP_SET_PARA_VALUE(2,'SORT_BUF_GLOBAL_SIZE', 1000);
SP_SET_PARA_VALUE(2,'RLOG_POOL_SIZE', 1024);
SP_SET_PARA_VALUE(2,'CACHE_POOL_SIZE', 512);
SP_SET_PARA_VALUE(2,'DICT_BUF_SIZE', 50);
SP_SET_PARA_VALUE(2,'VM_POOL_TARGET', 16384);
SP_SET_PARA_VALUE(2,'SESS_POOL_TARGET', 16384);
SP_SET_PARA_VALUE(2,'USE_PLN_POOL', 1);
SP_SET_PARA_VALUE(2,'ENABLE_MONITOR', 1);
SP_SET_PARA_VALUE(2,'SVR_LOG', 0);
SP_SET_PARA_VALUE(2,'TEMP_SIZE', 1024);
SP_SET_PARA_VALUE(2,'TEMP_SPACE_LIMIT', 102400);
SP_SET_PARA_VALUE(2,'MAX_SESSIONS', 1500);
SP_SET_PARA_VALUE(2,'MAX_SESSION_STATEMENT', 20000);
SP_SET_PARA_VALUE(2,'PK_WITH_CLUSTER', 1);
SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',0);
SP_SET_PARA_VALUE(2,'OLAP_FLAG',2);
SP_SET_PARA_VALUE(2,'VIEW_PULLUP_FLAG',1);
SP_SET_PARA_VALUE(2,'OPTIMIZER_MODE',1);
SP_SET_PARA_VALUE(2,'ADAPTIVE_NPLN_FLAG',0);
SP_SET_PARA_VALUE(2,'PARALLEL_PURGE_FLAG',1);
SP_SET_PARA_VALUE(2,'PARALLEL_POLICY',2);
SP_SET_PARA_DOUBLE_VALUE(2,'UNDO_RETENTION',900);
SP_SET_PARA_VALUE(2,'UNDO_EXTENT_NUM',16);
SP_SET_PARA_VALUE(2,'ENABLE_INJECT_HINT',1);
SP_SET_PARA_VALUE(2,'BTR_SPLIT_MODE',1);
SP_SET_PARA_VALUE(2,'FAST_LOGIN',1);
SP_SET_PARA_VALUE(2,'ENABLE_MONITOR_BP',0);
SP_SET_PARA_VALUE(1,'SLCT_OPT_FLAG',0);
开启归档
#连接数据库
/dmdata/dbms/dm8/bin/disql SYSDBA/Alibaby007@192.168.77.168:5236
#开启归档
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/arch/ALI01, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
COMMIT;
#暂不退出,等下一条备份SQL执行后关闭
备份数据
#备份数据库
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/BACKUP_FILE';
exit
拷贝备份文件
#将备份文件拷贝到slave
su - dmdba
scp -r /dmdata/dmbak/BACKUP_FILE 192.168.77.169:/dmdata/dmbak/
修改 dm.ini
连接数据库
/dmdata/dbms/dm8/bin/disql SYSDBA/Alibaby007@192.168.77.168:5236
#参数修改
SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
exit
关闭前台实例服务
#ctrl+c强制结束前台实例服务
修改 dmarch.ini 归档
#dmdba用户
su - dmdba
cat >>/dmdata/data/ALIDB/dmarch.ini<<'EOF'
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = ALI02 #实时归档目标实例名
EOF
创建 dmmal.ini 实例间通信
#dmdba用户
su - dmdba
cat >>/dmdata/data/ALIDB/dmmal.ini<<'EOF'
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /dmdata/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 = ALI01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.77.168 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.77.168 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = ALI02
MAL_HOST = 192.168.77.169
MAL_PORT = 5336
MAL_INST_HOST = 192.168.77.169
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
EOF
创建 dmwatcher.ini 守护进程
#dmdba用户
su - dmdba
cat >>/dmdata/data/ALIDB/dmwatcher.ini<<'EOF'
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/data/ALIDB/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dmdata/dbms/dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
EOF
注册服务 数据库服务 守护进程服务
#root用户
su - root
/dmdata/dbms/dm8/script/root/dm_service_installer.sh -t dmserver -p ALI01 -dm_ini /dmdata/data/ALIDB/dm.ini -m mount
/dmdata/dbms/dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/ALIDB/dmwatcher.ini
2.slave配置
初始化实例
#dmdba用户执行
su - dmdba
#初始化实例
/dmdata/dbms/dm8/bin/dminit PATH=/dmdata/data/ db_name=ALIDB INSTANCE_NAME=ALI02 SYSDBA_PWD=Alibaby007 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048
恢复数据
#dmdba用户执行
su - dmdba
/dmdata/dbms/dm8/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/ALIDB/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'"
/dmdata/dbms/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/ALIDB/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'"
/dmdata/dbms/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/ALIDB/dm.ini' UPDATE DB_MAGIC"
替换 dmarch.ini
#dmdba用户
su - dmdba
cat >>/dmdata/data/ALIDB/dmarch.ini<<'EOF'
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch/ALI02 #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = ALI01 #实时归档目标实例名
EOF
配置dm.ini
#dmdba用户
su - dmdba
#将dm.ini里面的参数修改为与下面的一致,手动修改,RLOG_SEND_APPLY_MON没有的添加
vim /dmdata/data/ALIDB/dm.ini
INSTANCE_NAME = ALI02
PORT_NUM = 5236 #数据库实例监听端口
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和dmwatcher.ini
slave与master这两个文件参数相同,创建一样的就可以
注册服务 数据库服务 守护进程服务
#root用户
su - root
/dmdata/dbms/dm8/script/root/dm_service_installer.sh -t dmserver -p ALI02 -dm_ini /dmdata/data/ALIDB/dm.ini -m mount
/dmdata/dbms/dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/ALIDB/dmwatcher.ini
3.monitor配置
创建dmmonitor.ini
#dmdba用户
su - dmdba
cat >>/dmdata/dbms/dm8/bin/dmmonitor.ini<<'EOF'
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.77.168:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.77.169:5436
EOF
#配置非确认监视器,在主备发生切换时,可以通过前台的方式启动非确认监视器进行手动切换
cat >>/dmdata/dbms/dm8/bin/dmmonitor_manual.ini<<'EOF'
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.77.168:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.77.169:5436
EOF
注册服务 监视器服务
#root用户
su - root
/dmdata/dbms/dm8/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdata/dbms/dm8/bin/dmmonitor.ini
4.手动配置集群主备
master配置
#dmdba用户
su - dmdba
#启动服务
/dmdata/dbms/dm8/bin/DmServiceALI01 start
#连接数据库
/dmdata/dbms/dm8/bin/disql SYSDBA/Alibaby007@192.168.77.168:5236
#修改为主库
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(45331);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit
#启动守护进程服务
/dmdata/dbms/dm8/bin/DmWatcherServiceWatcher start
slave配置
#dmdba用户
su - dmdba
#启动服务
/dmdata/dbms/dm8/bin/DmServiceALI02 start
#连接数据库
/dmdata/dbms/dm8/bin/disql SYSDBA/Alibaby007@192.168.77.169:5236
#修改为备库
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(45331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
#slave参数优化与master一样
#########复制master的#########
exit
#启动守护进程服务
/dmdata/dbms/dm8/bin/DmWatcherServiceWatcher start
monitor配置
#dmdba用户
su - dmdba
#启动监视器服务 后台
/dmdata/dbms/dm8/bin/DmMonitorServiceMonitor start
#停止监视器服务
/dmdata/dbms/dm8/bin/DmMonitorServiceMonitor stop
#启动监视器服务 前台(常用观察)
cd /dmdata/dbms/dm8/bin
./dmmonitor dmmonitor_manual.ini
集群启停
#启动集群
#dmdba用户
su - dmdba
#master/slave启动守护进程
/dmdata/dbms/dm8/bin/DmWatcherServiceWatcher start
#启动监视器
#启动监视器服务 后台
/dmdata/dbms/dm8/bin/DmMonitorServiceMonitor start
或者
#启动监视器服务 前台
cd /dmdata/dbms/dm8/bin
./dmmonitor dmmonitor_manual.ini
#停止集群
#dmdba用户
su - dmdba
#停止监视器 master/slave停止守护进程
/dmdata/dbms/dm8/bin/DmWatcherServiceWatcher stop
#master停止数据库服务
/dmdata/dbms/dm8/bin/DmServiceALI01 stop
#slave停止数据库服务
/dmdata/dbms/dm8/bin/DmServiceALI02 stop
5.监视器使用
通过前台方式启动非确认监视器。
#dmdba用户
su - dmdba
#前台启动监视器服务
cd /dmdata/dbms/dm8/bin
./dmmonitor dmmonitor_manual.ini
#集群状态查看
输入tip"或"show"来检查集群状态是否正常(集群状态WSTATUS/实例状态ISTATUS)
#登录非确认监视器
非确认监视器中输入"login"再输入用户名和密码登录监视器
#登录后操作
#查看满足切换条件的实例
输入命令"choose switchover 组名"查看可切换为主机的实例列表
#主备切换
执行命令"switchover GRP1.ALI02"进行切换
#退出非确认监视器
exit
一键切换主备
6.主备测试
master创建测试数据
#连接数据库
su - dmdba
/dmdata/dbms/dm8/bin/disql SYSDBA/Alibaby007@192.168.77.168:5236
#创建表空间
create tablespace ALI datafile '/dmdata/data/ALIDB/ALI01.dbf' size 128 autoextend on next 100 maxsize unlimited;
create tablespace ALI_idx datafile '/dmdata/data/ALIDB/ALI_idx01.dbf' size 128 autoextend on next 100 maxsize unlimited;
#创建用户
create user "ALI" identified by "Alibaby007" default tablespace ALI default index tablespace ALI_idx;
grant dba to ALI;
conn ALI/Alibaby007;
#创建数据库对象
CREATE TABLE city(city_id CHAR(3) NOT NULL,city_name VARCHAR(40) NULL,region_id INT NULL);
INSERT INTO city(city_id,city_name,region_id) VALUES('BJ','北京',1);
INSERT INTO city(city_id,city_name,region_id) VALUES('SJZ','石家庄',1);
INSERT INTO city(city_id,city_name,region_id) VALUES('SH','上海',2);
INSERT INTO city(city_id,city_name,region_id) VALUES('NJ','南京',2);
commit;
#查看是否创建成功
select PATH from v$datafile;
select * from city;
有可能报错:[-510]:系统处于MOUNT状态,其他现象(集群状态WSTATUS/实例状态ISTATUS)均是MOUNT,原因是,slave注册数据库服务用的ALI01,应该是ALI02,不知道怎么删除的,就重新部署了。
slave验证
#连接数据库
su - dmdba
disql SYSDBA/Alibaby007@192.168.77.169:5236
#查看数据库文件
select path from v$datafile;
#查看表中的数据
conn ALI/Alibaby007@192.168.77.169:5236
select * from ALI.city;
行号 CITY_ID CITY_NAME REGION_ID
---------- ------- --------- -----------
1 BJ 北京 1
2 SJZ 石家庄 1
3 SH 上海 2
4 NJ 南京 2
8.dm_svc.conf 配置
#root用户修改
su - root
cat >/etc/dm_svc.conf<<'EOF'
##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.77.168:5236,192.168.77.169:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)
EOF
#jdbc连接串
jdbc:dm://DMHA
#dmdba用户
#disql连接
su - dmdba
disql sysdba/Alibaby007@DMHA
本地hosts解析
客户端连接
四.读写分离集群搭建
读写分离集群与数据守护集群架构基本类似,但在搭建过程中,归档类型和 dm_svc.conf 配置文件等存在一定区别。最基本的区别:dmarch.ini里面的归档类型不一样。
实时主备:ARCH_TYPE = REALTIME #实时归档类型
读写分离:ARCH_TYPE = TIMELY #即时归档类型