-
Notifications
You must be signed in to change notification settings - Fork 710
dm: add LOCK TABLES privilege note for managed MySQL sources #22605
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
4762c82
d3325d7
10eaa6f
05633a1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -69,7 +69,11 @@ For the full data migration mode (`task-mode: full`), in addition to the [common | |||||
|
|
||||||
| - SELECT permission on INFORMATION_SCHEMA and dump tables | ||||||
| - RELOAD permission if `consistency=flush` | ||||||
| - LOCK TABLES permission on the dump tables if `consistency=flush/lock` | ||||||
| - LOCK TABLES permission on the dump tables if `consistency=lock` | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| > **Note:** | ||||||
| > | ||||||
| > When `consistency=auto` (the default), DM first tries `FLUSH TABLES WITH READ LOCK` (FTWRL). If FTWRL is unavailable, DM falls back to `LOCK TABLES`. This fallback commonly occurs on managed MySQL services (such as Amazon RDS, Aurora, ApsaraDB RDS for MySQL, Azure Database for MySQL, and Google Cloud SQL), where FTWRL is not permitted. In this case, the `LOCK TABLES` privilege is required at runtime, but the precheck does not currently verify this privilege. For the full list of privileges, see [DM-worker privileges](/dm/dm-worker-intro.md#upstream-database-user-privileges). | ||||||
|
|
||||||
| * (Mandatory) Consistency of upstream MySQL multi-instance sharding tables | ||||||
|
|
||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -52,13 +52,23 @@ The upstream database (MySQL/MariaDB) user must have the following privileges: | |||||
| | `REPLICATION SLAVE` | Global | | ||||||
| | `REPLICATION CLIENT` | Global | | ||||||
|
|
||||||
| > **Note:** | ||||||
| > | ||||||
| > If you migrate from a managed MySQL service (such as Amazon RDS, Aurora, ApsaraDB RDS for MySQL, Azure Database for MySQL, or Google Cloud SQL) where `FLUSH TABLES WITH READ LOCK` (FTWRL) is not permitted, also grant the `LOCK TABLES` privilege. With the default `consistency=auto` setting, DM falls back to `LOCK TABLES` when FTWRL is unavailable. | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| If you need to migrate the data from `db1` to TiDB, execute the following `GRANT` statement: | ||||||
|
|
||||||
| ```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'; | ||||||
| ``` | ||||||
|
|
||||||
| For managed MySQL services where FTWRL is not permitted, also grant the `LOCK TABLES` privilege: | ||||||
|
|
||||||
| ```sql | ||||||
| GRANT LOCK TABLES ON db1.* TO 'your_user'@'your_wildcard_of_host'; | ||||||
| ``` | ||||||
|
|
||||||
| If you also need to migrate the data from other databases into TiDB, make sure the same privileges are granted to the user of the respective databases. | ||||||
|
|
||||||
| ### Downstream database user privileges | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -91,6 +91,10 @@ You can use Docker to quickly deploy a test MySQL 8.0 instance. | |||||
| GRANT PROCESS, BACKUP_ADMIN, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'tidb-dm'@'%'; | ||||||
| ``` | ||||||
|
|
||||||
| > **Note:** | ||||||
| > | ||||||
| > If your MySQL source is a managed MySQL service (such as Amazon RDS, Aurora, ApsaraDB RDS for MySQL, Azure Database for MySQL, or Google Cloud SQL), also grant the `LOCK TABLES` privilege. For more information, see [DM-worker privileges](/dm/dm-worker-intro.md#upstream-database-user-privileges). | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| 4. Create sample data: | ||||||
|
|
||||||
| ```sql | ||||||
|
|
@@ -148,6 +152,10 @@ On macOS, you can quickly install and start MySQL 8.0 locally using [Homebrew](h | |||||
| GRANT PROCESS, BACKUP_ADMIN, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'tidb-dm'@'%'; | ||||||
| ``` | ||||||
|
|
||||||
| > **Note:** | ||||||
| > | ||||||
| > If your MySQL source is a managed MySQL service (such as Amazon RDS, Aurora, ApsaraDB RDS for MySQL, Azure Database for MySQL, or Google Cloud SQL), also grant the `LOCK TABLES` privilege. For more information, see [DM-worker privileges](/dm/dm-worker-intro.md#upstream-database-user-privileges). | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| 6. Create sample data: | ||||||
|
|
||||||
| ```sql | ||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.