使用 mydumper/myloader 将大型数据库迁移到 Azure Database for MySQL
适用于:Azure Database for MySQL - 单一服务器 Azure Database for MySQL - 灵活服务器
Azure Database for MySQL 是一种托管服务,可用于在云中运行、管理和缩放具有高可用性的 MySQL 数据库。 若要将大于 1 TB 的 MySQL 数据库迁移到 Azure Database for MySQL,请考虑使用 mydumper/myloader 之类的社区工具,这些工具可提供以下优势:
- 提供并行度来帮助缩短迁移时间。
- 通过避免高开销的字符集转换例程来提高性能。
- 输出格式支持为表、元数据等内容提供单独的文件,以便于查看/分析数据。 通过维护所有线程的快照来保持一致性。
- 准确的主日志和副本日志位置。
- 易于管理,因为它们支持 Perl 兼容的正则表达式 (PCRE),允许指定数据库和表包含项与排除项。
- 架构与数据共置在一起。 不需要像在其他逻辑迁移工具中一样单独对其进行处理。
本快速入门将介绍如何使用 mydumper/myloader 来安装、备份和还原 MySQL 数据库。
先决条件
在开始迁移 MySQL 数据库之前,需要:
使用 Azure 门户创建一个 Azure Database for MySQL 服务器。
使用 Azure 门户创建一个运行 Linux 的 Azure VM(最好是 Ubuntu)。
注意
在安装这些工具之前,请注意以下几点:
- 如果源位于本地并且与 Azure 建立了高带宽连接(使用 ExpressRoute),请考虑在 Azure VM 上安装该工具。
- 如果源与目标之间的带宽是个问题,请考虑将 mydumper 安装在靠近源的位置,将 myloader 安装在靠近目标服务器的位置。 可以使用 Azcopy 工具将数据从本地或其他云解决方案移到 Azure。
- 如果源位于本地并且与 Azure 建立了高带宽连接(使用 ExpressRoute),请考虑在 Azure VM 上安装该工具。
执行以下步骤安装 mysql 客户端:
- 运行以下命令,更新运行 Linux 的 Azure VM 上的包索引:
sudo apt update
- 运行以下命令来安装 mysql 客户端包:
sudo apt install mysql-client
安装 mydumper/myloader
若要安装 mydumper/myloader,请执行以下步骤。
根据你的 OS 发行版,运行以下命令下载 mydumper/myloader 的相应包:
wget https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
注意
$(lsb_release -cs) 可帮助识别你的发行版。
若要安装 mydumper 的 .deb 包,请运行以下命令:
sudo dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
提示
用于安装该包的命令根据所用的 Linux 发行版而异,因为安装程序因发行版的不同而不同。 mydumper/myloader 适用于以下发行版:Fedora、RedHat、Ubuntu、Debian、openSUSE 和 MacOSX。 有关详细信息,请参阅如何安装 mydumper
使用 mydumper 创建备份
若要使用 mydumper 创建备份,请运行以下命令:
mydumper --host=<servername> --user=<username> --password=<Password> --outputdir=./backup --rows=100000 --compress --build-empty-files --threads=16 --compress-protocol --trx-consistency-only --ssl --regex '^(<Db_name>\.)' -L mydumper-logs.txt
此示例使用以下变量:
--host:要连接到的主机
--user:拥有必要特权的用户名
--password:用户密码
--rows:尝试将表拆分为包含这么多行的区块
--outputdir:将输出文件转储到的目录
--regex:用于进行数据库匹配的正则表达式。
--trx-consistency-only:仅保持事务一致性
--threads:要使用的线程数,默认值为 4。 建议使用等于计算机 vCore 数 2 倍的值。
注意
有关可在 mydumper 中使用的其他选项的详细信息,请运行以下命令:mydumper --help。 有关详细信息,请参阅 mydumper\myloader 文档
若要同时转储多个数据库,可按以下示例中所示修改正则表达式变量:regex '^(DbName1.|DbName2.)
使用 myloader 还原数据库
若要还原使用 mydumper 备份的数据库,请运行以下命令:
myloader --host=<servername> --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=500 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt
此示例使用以下变量:
- --host:要连接到的主机
- --user:拥有必要特权的用户名
- --password:用户密码
- --directory:存储备份到的位置。
- --queries-per-transaction:建议设置为不大于 500 的值
- --threads:要使用的线程数,默认值为 4。 建议使用等于计算机 vCore 数 2 倍的值
提示
有关可在 myloader 中使用的其他选项的详细信息,请运行以下命令:myloader --help
还原数据库后,始终建议验证源数据库与目标数据库之间的数据一致性。
注意
可在此处提交有关 mydumper/myloader 工具的任何问题或反馈。