Skip to content

Commit c8817d9

Browse files
authored
dm: add LOCK TABLES privilege note for managed MySQL sources (#21467) (#21558)
1 parent f7df036 commit c8817d9

3 files changed

Lines changed: 25 additions & 3 deletions

File tree

dm/dm-precheck.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,13 @@ tiup dmctl check-task ./task.yaml
6565

6666
* (必须)上游数据库的 dump 权限
6767

68-
- 检查是否有 INFORMATION_SCHEMA 和 dump 表的 SELECT 权限。
69-
- 如果 consistency=flush,将检查是否有 RELOAD 权限。
70-
- 如果 consistency=flush/lock,将检查是否有 dump 表的 LOCK TABLES 权限。
68+
- 检查是否有 `INFORMATION_SCHEMA` 和 dump 表的 `SELECT` 权限。
69+
- 如果 `consistency=flush`,将检查是否有 `RELOAD` 权限。
70+
- 如果 `consistency=lock`,将检查是否有 dump 表的 `LOCK TABLES` 权限。
71+
72+
> **注意:**
73+
>
74+
> `consistency=auto`(默认值)时,DM 会首先尝试执行 `FLUSH TABLES WITH READ LOCK` (FTWRL)。如果 FTWRL 不可用,DM 会回退使用 `LOCK TABLES`。这种回退在托管型 MySQL 服务中较为常见(例如 Amazon RDS、Aurora、ApsaraDB RDS for MySQL、Azure Database for MySQL 和 Google Cloud SQL),因为这些服务通常不允许执行 FTWRL。在这种情况下,运行时需要具备 `LOCK TABLES` 权限,但当前的 precheck 并不会验证该权限。完整的权限列表,请参见[上游数据库用户权限](/dm/dm-worker-intro.md#上游数据库用户权限)
7175
7276
* (必须)上游 MySQL 多实例分库分表的一致性
7377

dm/dm-worker-intro.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ Binlog replication/sync 处理单元读取上游 MySQL/MariaDB 的 binlog event
5151
| `REPLICATION SLAVE` | Global |
5252
| `REPLICATION CLIENT` | Global |
5353

54+
> **注意:**
55+
>
56+
> 如果从托管型 MySQL 服务(例如 Amazon RDS、Aurora、ApsaraDB RDS for MySQL、Azure Database for MySQL 或 Google Cloud SQL)迁移数据,且该服务不允许执行 `FLUSH TABLES WITH READ LOCK` (FTWRL),还需要授予 `LOCK TABLES` 权限。使用默认的 `consistency=auto` 设置时,如果 FTWRL 不可用,DM 会回退到 `LOCK TABLES`
57+
5458
如果要迁移 `db1` 的数据到 TiDB,可执行如下的 `GRANT` 语句:
5559

5660
{{< copyable "sql" >}}
@@ -60,6 +64,12 @@ GRANT RELOAD,REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'your_user'@'your_w
6064
GRANT SELECT ON db1.* TO 'your_user'@'your_wildcard_of_host';
6165
```
6266

67+
对于不允许执行 `FLUSH TABLES WITH READ LOCK` (FTWRL) 的托管型 MySQL 服务,还需要授予 `LOCK TABLES` 权限:
68+
69+
```sql
70+
GRANT LOCK TABLES ON db1.* TO 'your_user'@'your_wildcard_of_host';
71+
```
72+
6373
如果还要迁移其他数据库的数据到 TiDB,请确保已赋予这些库跟 `db1` 一样的权限。
6474

6575
### 下游数据库用户权限

dm/quick-start-with-dm.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ summary: 了解如何使用 TiUP Playground 快速部署试用 TiDB Data Migrati
9090
GRANT PROCESS, BACKUP_ADMIN, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'tidb-dm'@'%';
9191
```
9292

93+
> **注意:**
94+
>
95+
> 如果你的 MySQL 数据源为托管型 MySQL 服务(例如 Amazon RDS、Aurora、ApsaraDB RDS for MySQL、Azure Database for MySQL 或 Google Cloud SQL),还需要授予 `LOCK TABLES` 权限。更多信息,请参见[上游数据库用户权限](/dm/dm-worker-intro.md#上游数据库用户权限)。
96+
9397
4. 创建示例数据:
9498

9599
```sql
@@ -147,6 +151,10 @@ summary: 了解如何使用 TiUP Playground 快速部署试用 TiDB Data Migrati
147151
GRANT PROCESS, BACKUP_ADMIN, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'tidb-dm'@'%';
148152
```
149153

154+
> **注意:**
155+
>
156+
> 如果你的 MySQL 数据源为托管型 MySQL 服务(例如 Amazon RDS、Aurora、ApsaraDB RDS for MySQL、Azure Database for MySQL 或 Google Cloud SQL),还需要授予 `LOCK TABLES` 权限。更多信息,请参见[上游数据库用户权限](/dm/dm-worker-intro.md#上游数据库用户权限)。
157+
150158
6. 创建示例数据:
151159

152160
```sql

0 commit comments

Comments
 (0)