您可以使用所需的任何选项,直接针对您的 MySQL 数据库运行 mysqldump 实用程序。但是,如果您要导出数据以将其导入 Cloud SQL 数据库,请将 mysqldump 实用程序与以下标志搭配使用:
- --databases明确指定要导出的数据库列表。此列表不得包含系统数据库 (- sys、- mysql、- performance_schema和- information_schema)。
- --hex-blob如果您的数据库包含任何二进制字段,则必须使用此标志来确保二进制字段正确导入。
- --single-transaction在运行前启动事务。这样,mysqldump 就可以读取当前状态的数据库,进而实现一致的数据转储,而不是锁定整个数据库。
- --routines如需添加存储过程和函数,
- 使用 - mysqldump8 或更高版本导出低于 8 的 MySQL 数据库版本时:- --column-statistics=0- 此标志会从数据库导出内容中移除 COLUMN_STATISTICS 表,以避免出现 - Unknown table 'COLUMN_STATISTICS' in information_schema (1109)错误。如需了解详情,请参阅诊断问题。
此外,我们还建议您使用以下标志:
- --no-autocommit
- --default-character-set=utf8mb4
- --master-data
在与 MySQL 服务器建立了网络连接的机器上,运行以下命令:
    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --master-data=1  \
        --single-transaction \
        --routines \
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz
如果迁移来源是适用于 MySQL 的关系型数据库服务 (RDS),请执行以下操作:
- 不支持 master-data属性。
- 如果源数据库服务器支持 GTID,请使用 --set-gtid-purged=on属性;否则,请勿使用此属性。
- 如果您使用手动转储来迁移数据,请在启用 GTID 的情况下执行迁移。
此命令可能如以下示例所示:
    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob  \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --set-gtid-purged=on \
        --single-transaction \
        --routines \ 
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz
此外,您还应配置 RDS 实例以将二进制日志保留更长时间。此命令可能如以下示例所示:
    # Sets the retention period to one week.
    call mysql.rds_set_configuration('binlog retention hours', 168);
将 [PROPERTIES_IN_BRACKETS] 替换为以下值:
| 属性 | 值 | 
| [SOURCE_ADDR] | 源数据库服务器的 IPv4 地址或主机名。 | 
| [SOURCE_PORT] | 源数据库服务器的端口。 | 
| [USERNAME] | MySQL 用户账号。 | 
| [DBS] | 要包含在转储中的数据库服务器上的数据库的以空格分隔的列表。使用 SHOW DATABASESMySQL 命令列出数据库。 | 
| [BUCKET_NAME] | 用户在 Cloud Storage 中创建的用于存储转储文件的存储桶(例如 replica-bucket)。 | 
| [DUMP_FILENAME] | 转储的文件名,以 .gz文件扩展名(例如source-database.sql.gz)结尾。 |