DolphinDB集群间数据库同步教程

本页是一篇关于 DolphinDB 集群间数据库同步的教程,并包含作者与发布日期信息。

Source: https://dolphindb.cn/blogs/69

What this page covers

技能认证特训营第二期报名推广

页面顶部包含限时报名相关的推广信息与报名链接。

DolphinDB集群间数据库同步教程(标题与作者日期)

本节给出教程主题(集群间数据库同步)以及作者与发布日期信息。

同步方式概述:离线与在线

本节说明 DolphinDB 支持离线与在线两种方式在不同集群间同步 DFS 分布式数据库,并界定同步对象范围。

离线方式:backup/restore与文件同步流程

本节介绍离线同步通过备份到磁盘、跨机器同步备份文件、再恢复到目标数据库的流程,并配图说明。

离线方式:数据备份(SQL指定范围/列)

本节展示使用 backup 函数按分区备份数据,并用 SQL 指定全量、近7天或指定列的备份示例及相关参考链接。

离线方式:节点间数据文件同步(rsync/scp与ssh免密)

本节说明当两库不在同一物理机时需同步二进制文件,给出使用 shell 调用 rsync 的脚本示例并提示需配置 ssh 免密。

离线方式:数据恢复(restore到目标表/按分区恢复提示)

本节给出使用 restore 函数将备份数据恢复到目标数据库表的示例,并提供可按条件恢复分区的参考链接。

离线方式:定时同步实例(scheduleJob)

本节提供跨集群每日定时同步的脚本实例,包含连接源节点、执行 backup、rsync 同步与 restore 恢复,并用 scheduleJob 设定每天22:30执行。

在线方式:通过socket连接读取并写入远端DFS数据库

本节说明在线同步要求两集群同时在线,通过网络连接与远程写入将数据从源库直接写入目标库,并配图说明。

在线方式示例:内存充足与内存不足两种场景

本节给出在线同步在内存足够时一次性取数写入、以及内存不足时通过 repartitionDS 切分数据并用 mr 顺序写远端的脚本与调度方式。

两种方式对比:性能、内存要求、磁盘占用与可用性

本节对比在线与离线同步在性能、内存要求、磁盘空间占用以及对集群在线状态要求等方面差异。

Facts Index

Entity Attribute Value Confidence
DolphinDB集群间数据库同步教程发布日期2021-08-05high
DolphinDB集群间数据库同步教程作者署名Junxihigh
DolphinDB支持的集群间数据库同步方式提供离线方式和在线方式实现不同集群间数据库的同步high
同步对象范围数据库类型限定数据库指的是DFS分布式的数据库,而非内存表或流数据表等high
离线方式实现手段通过数据库备份(backup)和恢复(restore)功能实现数据同步high
在线方式实现手段通过建立在线连接把数据从一个库读取再写入到另一个库中high
离线方式备份输出形式backup函数以二进制形式将数据导入到磁盘(并以分区为单位备份)high
离线方式流程步骤先backup到磁盘→同步备份文件到目标物理机器→再restore从磁盘恢复到数据库high
backup函数可用SQL指定需要同步的数据范围可通过SQL语句指定备份数据(示例含全量、近7天、指定列)high
示例2(近7天备份)分区字段假设假设时间分区字段为TradingDay(DATE)high
参考链接backup函数文档链接https://www.dolphindb.cn/cn/help/backup.htmlhigh
参考链接restore函数文档链接https://www.dolphindb.cn/cn/help/restore.htmlhigh
参考链接DolphinDB元编程教程链接https://github.com/dolphindb/Tutorials_CN/blob/master/meta_programming.mdhigh
节点间数据文件同步(离线方式)触发条件若需同步的两个数据库不在同一台物理机器上,则需要同步二进制文件high
DolphinDB shell命令支持用途可利用操作系统提供的文件同步手段同步目录(例如rsync或scp)high
rsync特性描述linux常用命令,只同步发生变化的文件,非常高效medium
rsync脚本示例同步内容与目标将backupDir目录下所有发生变化的文件同步到另一台机器的restoreDir目录(通过userName@restoreIP)high
rsync/scp通过ssh执行前置要求需要配置ssh免密登录(也可用其他服务器同步工具)high
restore函数用途从restoreDir中恢复所需要的数据high
restore示例1(离线恢复)数据流向将备份数据库db1表mt的所有数据恢复到数据库db2的表mt中(示例调用restore并传入loadTable("dfs://db2","mt"))high
参考链接数据备份与恢复教程链接https://github.com/dolphindb/Tutorials_CN/blob/master/restore-backup.mdhigh
离线方式具体实例部署条件两个DolphinDB集群部署在不同机器上high
离线方式具体实例同步计划每天22:30将A集群数据库db1(包括表mt)所有数据同步到B集群high
离线方式具体实例:db1分区分区类型与字段分区类型VALUE,按天分区,分区字段Timestamp(TIMESTAMP)high
离线方式具体实例脚本执行位置运行位置说明脚本应在B集群(需要恢复数据的集群)上执行high
离线方式具体实例脚本主要步骤通过xdb连接备份节点并login→执行backup导出当日数据→用rsync同步目录→执行restore恢复到数据库→可用scheduleJob定时high
scheduleJob用途用于启动定时任务(示例为每天22:30执行)high
在线方式在线条件要求两个集群同时在线,通过建立socket连接直接从一个集群读数据并写入另一个集群high
在线方式示意(图注说明)数据写入方式通过远程过程调用(rpc write)将数据从一个DFS数据库读取并写入到另一个DFS数据库中(无需磁盘备份与同步步骤)medium
在线方式示例场景划分考虑两种场景:内存足够容纳一天数据;内存不足以容纳一天数据high
在线方式场景1实现方式在备份节点执行:select取当天数据到t→xdb连接恢复节点并login→远程调用writeData将t append到目标表high
在线方式场景2内存不足时的数据切分与写入用repartitionDS将当天数据按sym字段再分区为10份;用mr逐一写到远端;mr的parallel参数设为false以尽量少占用内存high
在线方式场景2并行写入的效果描述如果内存充足,并行的效率更高medium
两种方式对比:性能结论离线方式性能低于在线方式(在线不存盘直接网络传输并写入;离线需备份到磁盘、传到远端磁盘、再读盘写入)high
两种方式对比:内存要求(离线)内存需求离线方式以分区为单位备份,要求内存必须容纳一个分区的完整数据high
离线方式内存风险场景可能问题在列特别多(几千列)且常用字段较少的特殊场景下,内存可能不能容纳一个分区所有列的数据high
两种方式对比:内存要求(在线)内存需求在线方式对内存容量要求低很多;若分区数据量超过内存,可对一个分区再进行更细粒度划分high
两种方式对比:磁盘占用差异离线方式在本机以及远端都需要存盘,占用更多磁盘空间;在线方式不需要额外占用磁盘空间high
两种方式对比:集群在线状态差异离线方式不需要两个集群同时在线(可在不同时间段同步);在线方式需要两个集群都同时在线并正常提供服务high
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high