阅读1030 返回首页    go 网易 go 网易蜂巢


迁移外部数据库

目录

简介

蜂巢的外部数据库迁移功能支持多线程数据库备份和恢复,也支持基于业务负载的自适应迁移和迁移失败的重试。此外,蜂巢提供了较为全面的迁移参数检查,提高了迁移数据的成功率。目前,蜂巢提供外部 MySQL 实例的迁移功能。本文将以有公网 IP 的外部 MySQL 数据库实例迁移至蜂巢 RDS 为例。

注意事项

  1. 本功能不会迁移源实例mysql.user表中的账号信息,请确保在将业务IP切换到新实例前重新创建账号;
  2. 用户在迁移过程中或迁移结束后可以通过「数据库与账号」功能重新创建账号。

前提条件

开始迁移前,务必检查以下内容:

  • 若使用 增量迁移,请确认外部数据库实例已开启 binlog 并设置 server_id(目前 server_id 不能设置为 0 或 1);

迁移限制:

  • 在迁移 MySQL 5.5 以下版本时可能失败,若遇到,请提蜂巢 工单 解决。
  • 不支持迁移名称中包含「;」符号的数据库;
  • 在迁移时,如果外部实例是 MySQL 5.5 及以下版本,会选择 RDS 5.5.30 版本作为迁移的目标版本。对于MySQL 5.6 或 5.7 版本则选择 RDS 5.7 版本作为迁移的目标版本;
  • 不支持迁移 MySQL 系统库,如 information_schema、performance_schema、#bak_database 或 data_dictionary、mysql 和 sys 等。
  • 在开始迁移前,会进行迁移预检查,包括迁移账号的权限检查,如果迁移账号有 mysql.user 表访问权限,则通过该表进行权限检查,若无,则通过 information_schema 系统库的 USER_PRIVILEGES 和 SCHEMA_PRIVILEGES 两张表来检查账号的权限;
  • 迁移所需的权限包括 SELECT 、LOCK TABLES 权限(导出一致性数据),导出 SCHEMA 所需的相关权限, REPLICATION SLAVE 、REPLICATION CLIENT 权限(仅在增量迁移时);
  • 请将迁移账号的Host字段设置为“%”;

其他说明:

  • 如果迁移账号有SUPER权限,则在导出外部实例数据阶段,会临时修改外部实例 MySQL InnoDB 参数 innodb_old_blocks_time,完成数据导出或导出失败时,RDS 会自动将其设置回原值;
  • 如果迁移账号有 RELOAD 权限,则使用 FTWRL(flush tables with read lock)来获取一致性数据点,若无,则通过 lock tables xx read 语法来获取一致性数据点;
  • 在将数据导入 RDS 实例阶段,RDS 实例的 sync-binlog、innodb_flush_log_at_trx_commit、log_slow_queries 参数均会进行临时优化,完成数据导入或导入失败时,会自动将其设置回原值。

创建迁移账号

我们建议新建一个拥有相应权限的账号进行数据迁移。 登录 MySQL 客户端,使用如下命令创建账号并赋予权限:

GRANT all privileges ON [数据库名].[表名] TO '[期望创建的用户名]'@'[用户地址]' IDENTIFIED BY '[期望设置的密码]' with grant option;

220160719.png

  • 方便起见,本例中直接赋予数据库所有表的全部权限:「GRANT all privileges ON *.*」;
  • [用户地址] 可以是 IP 地址、计算机名、域名,如果想从任意地址连接,使用「%」即可;
  • 重要:该帐号拥有所有权限,出于安全考虑,数据迁移完成后,请删除该账号或直接删除本地数据库。

      其他公有云RDS实例迁移

      需要迁移第三方RDS实例时,由于数据库账号权限管理的限制,无法自由地对迁移账号赋权,此时请确保所创建的账号有前述所规定的权限即可;

获取数据库列表

登录蜂巢控制台,选择「数据库」,点击「迁移外部数据库」按钮:

迁移外部数据库 迁移外部数据库.png

进入「获取数据库列表」步骤,需要输入待迁移的外部数据库 IP 地址、端口、数据库账号以及密码等信息,如下图所示,输入完毕后,点击「下一步」:

迁移外部数据库 获取数据库列表.png

如果连接失败,请检查以下内容:
  • 迁移账号权限;
  • 账号、密码、IP 地址、端口;
  • MySQL 数据库版本须高于 5.1.41;

选择待迁移的数据库

连接外部数据库成功后,开始「选择待迁移的数据库」,这里显示了该数据库实例内的所有数据库,如下图所示。蜂巢支持一次性迁移同一实例下多个数据库,选择所需迁移的数据库名称,点击「下一步」:

迁移外部数据库 选择待迁移的数据库.png

  • 不支持迁移名称中包含「;」符号的数据库;
  • 不支持迁移 MySQL 系统库,如 mysql 、information_schema、performance_schema、sys 或 data_dictionary 等。

参数设置

选择完数据库之后,进入「参数设置」步骤,如下图所示。具体的参数详情,请参见 参数说明,在确认参数无误后,点击「下一步」发起迁移操作。

迁移外部数据库 参数设置.png

注意:点击「下一步」后,默认会进行参数预检查,包括实例连通性、各个参数设置是否正确等,如果发现错误,蜂巢会显示出错信息,你可以进行相应修改后重新点击「下一步」。

参数说明

迁移类型

  • 增量迁移
    增量迁移包括全量迁移和增量复制两个阶段。完成全量迁移后,会将迁移过程发生的数据变更同步到目标实例,如果迁移期间进行了 DDL 操作,那么这些结构变更不会迁移到目标实例。
  • 全量迁移
    将源实例迁移对象的结果定义及数据全部迁移到目标实例。迁移过程中,为了保证数据一致性,非事务表会被锁定,锁定期间这些表无法写入,锁定时长依赖于这些表的数据量大小,在这些非事务表迁移完成后,锁才会释放。
  • 结构迁移
    将源实例迁移对象(数据库、表)的结构定义(schema)迁移到目标实例。支持结构迁移的对象包括:表、视图、触发器、存储过程、存储函数等。


导出并发度

表示启用多少个线程来同时导出表中的数据。请合理选择数据导出线程数,系统默认为 2 个,建议刚开始使用暂先不超过 3 个。

导入并发度

表示启用多少个线程来同时导入表中的数据。RDS 的数据导入线程需要根据 RDS 本身的存储介质性能进行合理规划。系统默认为 2 个,蜂巢的经验表明:2至4个线程一般来说已能够达到最大数据写入性能。

持锁超时时间

表示进行数据导出时,允许对源实例加读锁(通过执行 flush tables with read lock 获取读锁)的时长,单位为 s。注意,该值的设置会极大影响迁移,设小会导致迁移出错,设大的话需要关注是否对外部实例业务产生影响。

负载监控阈值

表示从源实例导出数据时,允许导出线程 select 数据的最大负载,通过 threads_running 数值来衡量,如果该参数超过阈值则数据导出暂停,降到阈值以下时再继续。系统默认的监控项为 300,如果外部实例压力较大,连接数较多,请合理选择监控项,并适当增加监控项。

创建新实例

系统预检查无误后,显示如下「创建新实例」页面,即可进行数据迁移,此时只需填写新实例名称,选择合适的内存及存储空间后,点击「开始迁移」即可,数据库列表会自动生成迁移的数据库实例。

注意:需要确保迁移中创建的 RDS 实例有足够的空间用于迁移外部实例数据,可以通过设置存存储空间来进行调整。

迁移外部数据库 创建新实例.png

如果迁移失败,可以通过数据库实例列表中的「查看进度」查看原因。并根据系统出错提示,参照 参数说明 适当调整参数,最后点击「重试」即可。

如果不确定如何调整参数,建议提工单联系技术人员协助处理。

支持文档

> 如何创建数据库实例

> 如何管理数据库实例

> 如何管理安全组

最后更新:2017-01-03 10:48:56

  上一篇:go 辽宁地区管局规则
  下一篇:go 图片缩略