当前位置: 首页 > news >正文

使用 DM binary 部署 DM 集群

本文将介绍如何使用 DM binary 快速部署 DM 集群。

注意

对于生产环境,推荐使用 TiUP 部署 DM 集群及相关监控组件。

下载 DM 安装包

DM 安装包位于 TiDB 离线工具包中。下载方式,请参考 TiDB 工具下载。

使用样例

假设在五台服务器上部署两个 DM-worker 实例和三个 DM-master 实例。各个节点的信息如下:

实例服务器地址端口
DM-master1192.168.0.48261
DM-master2192.168.0.58261
DM-master3192.168.0.68261
DM-worker1192.168.0.78262
DM-worker2192.168.0.88262

下面以此为例,说明如何部署 DM。

注意

  • 在单机部署多个 DM-master 或 DM-worker 时,需要确保每个实例的端口以及运行命令的当前目录各不相同。

  • 如果不需要确保 DM 集群高可用,则可只部署 1 个 DM-master 节点,且部署的 DM-worker 节点数量不少于上游待迁移的 MySQL/MariaDB 实例数。

  • 如果需要确保 DM 集群高可用,则推荐部署 3 个 DM-master 节点,且部署的 DM-worker 节点数量大于上游待迁移的 MySQL/MariaDB 实例数(如 DM-worker 节点数量比上游实例数多 2 个)。

  • 需要确保以下组件间端口可正常连通:

    • 各 DM-master 节点间的 8291 端口可互相连通。

    • 各 DM-master 节点可连通所有 DM-worker 节点的 8262 端口。

    • 各 DM-worker 节点可连通所有 DM-master 节点的 8261 端口。

部署 DM-master

DM-master 提供命令行参数和配置文件两种配置方式。

使用命令行参数部署 DM-master

DM-master 的命令行参数说明:

 

./dm-master --help

 

Usage of dm-master: -L string log level: debug, info, warn, error, fatal (default "info") -V prints version and exit -advertise-addr string advertise address for client traffic (default "${master-addr}") -advertise-peer-urls string advertise URLs for peer traffic (default "${peer-urls}") -config string path to config file -data-dir string path to the data directory (default "default.${name}") -initial-cluster string initial cluster configuration for bootstrapping, e.g. dm-master=http://127.0.0.1:8291 -join string join to an existing cluster (usage: cluster's "${master-addr}" list, e.g. "127.0.0.1:8261,127.0.0.1:18261" -log-file string log file path -master-addr string master API server and status addr -name string human-readable name for this DM-master member -peer-urls string URLs for peer traffic (default "http://127.0.0.1:8291") -print-sample-config print sample config file of dm-worker

注意

某些情况下,无法使用命令行参数来配置 DM-master,因为有的配置并未暴露给命令行。

使用配置文件部署 DM-master

推荐使用配置文件,把以下配置文件内容写入到 conf/dm-master1.toml 中。

DM-master 的配置文件:

 

# Master Configuration. name = "master1" # 日志配置 log-level = "info" log-file = "dm-master.log" # DM-master 监听地址 master-addr = "192.168.0.4:8261" # DM-master 节点的对等 URL peer-urls = "192.168.0.4:8291" # 初始集群中所有 DM-master 的 advertise-peer-urls 的值 initial-cluster = "master1=http://192.168.0.4:8291,master2=http://192.168.0.5:8291,master3=http://192.168.0.6:8291"

在终端中使用下面的命令运行 DM-master:

注意

执行该命令后控制台不会输出日志,可以通过 tail -f dm-master.log 查看运行日志。

 

./dm-master -config conf/dm-master1.toml

对于 DM-master2 和 DM-master3,修改配置文件中的 name 为 master2 和 master3,并将 peer-urls 的值改为 192.168.0.5:8291 和 192.168.0.6:8291 即可。

部署 DM-worker

DM-worker 提供命令行参数和配置文件两种配置方式。

使用命令行参数部署 DM-worker

查看 DM-worker 的命令行参数说明:

 

./dm-worker --help

 

Usage of worker: -L string log level: debug, info, warn, error, fatal (default "info") -V prints version and exit -advertise-addr string advertise address for client traffic (default "${worker-addr}") -config string path to config file -join string join to an existing cluster (usage: dm-master cluster's "${master-addr}") -keepalive-ttl int dm-worker's TTL for keepalive with etcd (in seconds) (default 10) -log-file string log file path -name string human-readable name for DM-worker member -print-sample-config print sample config file of dm-worker -worker-addr string listen address for client traffic

注意

某些情况下,无法使用命令行参数的方法来配置 DM-worker,因为有的配置并未暴露给命令行。

使用配置文件部署 DM-worker

推荐使用配置文件来配置 DM-worker,把以下配置文件内容写入到 conf/dm-worker1.toml 中。

DM-worker 的配置文件:

 

# Worker Configuration. name = "worker1" # 日志配置 log-level = "info" log-file = "dm-worker.log" # DM-worker 的地址 worker-addr = ":8262" # 对应集群中 DM-master 配置中的 master-addr join = "192.168.0.4:8261,192.168.0.5:8261,192.168.0.6:8261"

在终端中使用下面的命令运行 DM-worker:

 

./dm-worker -config conf/dm-worker1.toml

对于 DM-worker2,修改配置文件中的 name 为 worker2 即可。

这样,DM 集群就部署成功了。

相关文章:

  • iOS小技能:RSA签名、验签、加密、解密的原理
  • 使用 Argon2 的 Java 密码散列
  • 基于多次傅里叶变换算法的快速相位解包裹算法研究
  • Mybatis-Plus用纯注解搞定一对多查询
  • 6.CF431E Chemistry Experiment 权值线段树+二分
  • 基于RFID技术的智能书架系统
  • 1014 Circles of Friends
  • Linux 下进程间通讯之内存映射详解
  • ROS官方教程知识点总结[低阶阶段]
  • Linux常见命令汇总-基于CentOS7
  • 让软件集成为您的业务创造更多价值
  • 猿创征文 | 云服务器部署——将项目部署到云服务器上
  • PET-MRI医学图像融合与混合神经胶质瘤分类模型
  • RACV2022观点集锦 | 视觉基础模型
  • 【GNN报告】复旦大学许嘉蓉:基于图数据的鲁棒机器学习
  • @jsonView过滤属性
  • Apache的80端口被占用以及访问时报错403
  • github指令
  • Javascript设计模式学习之Observer(观察者)模式
  • Java反射-动态类加载和重新加载
  • mongodb--安装和初步使用教程
  • 安卓应用性能调试和优化经验分享
  • 从零开始学习部署
  • 给初学者:JavaScript 中数组操作注意点
  • 给第三方使用接口的 URL 签名实现
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 排序算法学习笔记
  • 十年未变!安全,谁之责?(下)
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 应用生命周期终极 DevOps 工具包
  • 2017年360最后一道编程题
  • 大数据全解:定义、价值及挑战
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​如何在iOS手机上查看应用日志
  • #git 撤消对文件的更改
  • #Java第九次作业--输入输出流和文件操作
  • #NOIP 2014# day.2 T2 寻找道路
  • (02)vite环境变量配置
  • (1)SpringCloud 整合Python
  • (3)nginx 配置(nginx.conf)
  • (C语言)字符分类函数
  • (Python第六天)文件处理
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (南京观海微电子)——COF介绍
  • (五)c52学习之旅-静态数码管
  • (循环依赖问题)学习spring的第九天
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .Family_物联网
  • .net 4.0发布后不能正常显示图片问题
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 验证控件和javaScript的冲突问题
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @SuppressWarnings注解