Skip to content

Latest commit

 

History

History
101 lines (68 loc) · 4.67 KB

dm-worker-intro.md

File metadata and controls

101 lines (68 loc) · 4.67 KB
title aliases summary
DM-worker 简介
/docs-cn/tidb-data-migration/dev/dm-worker-intro/
DM-worker 是 DM (Data Migration) 的一个组件,负责执行数据迁移任务。主要功能包括注册为 MySQL 或 MariaDB 服务器的 slave,读取 binlog event 并持久化保存在本地,支持迁移一个 MySQL 或 MariaDB 实例的数据到多个 TiDB 实例,以及支持迁移多个 MySQL 或 MariaDB 实例的数据到一个 TiDB 实例。处理单元包括 Relay log、dump、load 和 Binlog replication/sync。上游数据库用户需具有 SELECT、RELOAD、REPLICATION SLAVE 和 REPLICATION CLIENT 权限,下游数据库用户需具有 SELECT、INSERT、UPDATE、DELETE、CREATE、DROP 和 INDEX 权限。处理单元所需的最小权限根据具体情况可能会改变。

DM-worker 简介

DM-worker 是 DM (Data Migration) 的一个组件,负责执行具体的数据迁移任务。

其主要功能如下:

  • 注册为一台 MySQL 或 MariaDB 服务器的 slave。
  • 读取 MySQL 或 MariaDB 的 binlog event,并将这些 event 持久化保存在本地 (relay log)。
  • 单个 DM-worker 支持迁移一个 MySQL 或 MariaDB 实例的数据到下游的多个 TiDB 实例。
  • 多个 DM-Worker 支持迁移多个 MySQL 或 MariaDB 实例的数据到下游的一个 TiDB 实例。

DM-worker 处理单元

DM-worker 任务包含如下多个逻辑处理单元。

Relay log

Relay log 持久化保存从上游 MySQL 或 MariaDB 读取的 binlog,并对 binlog replication 处理单元提供读取 binlog event 的功能。

其原理和功能与 MySQL relay log 类似,详见 MySQL Relay Log

dump 处理单元

dump 处理单元从上游 MySQL 或 MariaDB 导出全量数据到本地磁盘。

load 处理单元

load 处理单元读取 dump 处理单元导出的数据文件,然后加载到下游 TiDB。

Binlog replication/sync 处理单元

Binlog replication/sync 处理单元读取上游 MySQL/MariaDB 的 binlog event 或 relay log 处理单元的 binlog event,将这些 event 转化为 SQL 语句,再将这些 SQL 语句应用到下游 TiDB。

DM-worker 所需权限

本小节主要介绍使用 DM-worker 时所需的上下游数据库用户权限以及各处理单元所需的用户权限。

上游数据库用户权限

上游数据库 (MySQL/MariaDB) 用户必须拥有以下权限:

权限 作用域
SELECT Tables
RELOAD Global
REPLICATION SLAVE Global
REPLICATION CLIENT Global

如果要迁移 db1 的数据到 TiDB,可执行如下的 GRANT 语句:

{{< copyable "sql" >}}

GRANT RELOAD,REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'your_user'@'your_wildcard_of_host';
GRANT SELECT ON db1.* TO 'your_user'@'your_wildcard_of_host';

如果还要迁移其他数据库的数据到 TiDB,请确保已赋予这些库跟 db1 一样的权限。

下游数据库用户权限

下游数据库 (TiDB) 用户必须拥有以下权限:

权限 作用域
SELECT Tables
INSERT Tables
UPDATE Tables
DELETE Tables
CREATE Databases,tables
DROP Databases,tables
ALTER Tables
INDEX Tables

对要执行迁移操作的数据库或表执行下面的 GRANT 语句:

{{< copyable "sql" >}}

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX  ON db.table TO 'your_user'@'your_wildcard_of_host';
GRANT ALL ON dm_meta.* TO 'your_user'@'your_wildcard_of_host';

处理单元所需的最小权限

处理单元 最小上游 (MySQL/MariaDB) 权限 最小下游 (TiDB) 权限 最小系统权限
Relay log REPLICATION SLAVE (读取 binlog)
REPLICATION CLIENT (show master status, show slave status)
本地读/写磁盘
Dump SELECT
RELOAD(获取读锁将表数据刷到磁盘,进行一些操作后,再释放读锁对表进行解锁)
本地写磁盘
Load SELECT(查询 checkpoint 历史)
CREATE(创建数据库或表)
DELETE(删除 checkpoint)
INSERT(插入 dump 数据)
读/写本地文件
Binlog replication REPLICATION SLAVE(读 binlog)
REPLICATION CLIENT (show master status, show slave status)
SELECT(显示索引和列)
INSERT (DML)
UPDATE (DML)
DELETE (DML)
CREATE(创建数据库或表)
DROP(删除数据库或表)
ALTER(修改表)
INDEX(创建或删除索引)
本地读/写磁盘

注意:

这些权限并非一成不变。随着需求改变,这些权限也可能会改变。