使用转储和还原将 MariaDB 数据库迁移到 Azure Database for MariaDB
重要
Azure Database for MariaDB 已列入停用计划。 强烈建议迁移到 Azure Database for MySQL。 若要详细了解如何迁移到 Azure Database for MySQL,请参阅 Azure Database for MariaDB 发生了什么情况?。
本文介绍了在 Azure Database for MariaDB 中备份和还原数据库的两种常见方式:
- 使用命令行工具进行转储和还原(使用 mysqldump)。
- 使用 phpMyAdmin 进行转储和还原。
先决条件
开始迁移数据库之前,请执行以下操作:
- 创建 Azure Database for MariaDB 服务器 - Azure 门户。
- 安装 mysqldump 命令行实用工具。
- 下载并安装用于运行转储和还原命令的 MySQL Workbench 或其他第三方 MySQL 工具。
使用常用工具
使用常见的实用程序和工具(例如 MySQL Workbench 或 mysqldump)进行远程连接,并将数据还原到 Azure Database for MariaDB 中。 在具有 Internet 连接的客户端计算机上使用此类工具连接到 Azure Database for MariaDB。 使用 SSL 加密连接作为最佳安全做法。 有关详细信息,请参阅配置 Azure Database for MariaDB 中的 SSL 连接。 将数据迁移到 Azure Database for MariaDB 时,无需将转储文件移到任何特殊的云位置。
转储和还原的常见用途
在几个常见方案中,可使用 mysqldump、mysqlpump 等 MySQL 实用程序以将数据库转储和加载到 Azure Database for MariaDB 服务器。
迁移整个数据库时请使用数据库转储。 此建议适用于移动大量数据,或者要最小化实时站点或应用程序的服务中断的情况。
将数据加载到 Azure Database for MariaDB 时,请确保数据库中的所有表都使用 InnoDB 存储引擎。 Azure Database for MariaDB 仅支持 InnoDB 存储引擎,而不支持其他存储引擎。 如果表配置了其他存储引擎,请确保先将它们转换为 InnoDB 引擎格式,再迁移到 Azure Database for MariaDB。
例如,如果有使用 MyISAM 表的 WordPress 应用或 Web 应用,在将这些表还原到 Azure Database for MariaDB 之前,应先将这些表转换为 InnoDB 格式。 使用子句
ENGINE=InnoDB
设置创建新表时所用的引擎,然后在还原之前将数据传输到兼容表中。INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
在转储数据库时,若要避免任何兼容性问题,请确保源和目标系统上所使用的 MariaDB 版本相同。 例如,如果现有 MariaDB 服务器版本是 10.2,那么应迁移到配置为运行版本 10.2 的 Azure Database for MariaDB 中。 在 Azure Database for MariaDB 服务器中,
mysql_upgrade
命令不起作用,也不受支持。 如果需要跨 MariaDB 版本进行升级,应先将低版本数据库转储或导出到自己环境中更高版本的 MariaDB 中。 然后运行mysql_upgrade
,再尝试迁移到 Azure Database for MariaDB 中。
性能注意事项
若要在转储大型数据库时优化性能,请留意这些注意事项:
- 请使用 mysqldump 中的
exclude-triggers
选项。 从转储文件中排除触发器,避免在还原数据期间触发触发器命令。 - 使用
single-transaction
选项,将事务隔离模式设置为 REPEATABLE READ 并在转储数据之前将 START TRANSACTION SQL 语句发送到服务器。 在单个事务中转储多个表会在还原过程中占用一些额外的存储空间。single-transaction
和lock-tables
选项互斥。 因为 LOCK TABLES 导致所有挂起的事务均为隐式提交。 若要转储大型表,请结合使用选项single-transaction
和quick
。 - 使用其中包含多个 VALUE 列表的
extended-insert
多行语法。 此方法可使转储文件较小并在重新加载文件时加快插入。 - 转储数据库时,使用 mysqldump 中的
order-by-primary
选项,以便按主键顺序编写数据脚本。 - 转储数据时,使用 mysqldump 中的
disable-keys
选项,以便在加载前,禁用外键约束。 禁用外键检查有助于提高性能。 启用约束并在加载后验证数据,确保引用完整性。 - 适当时使用已分区表。
- 并行加载数据。 避免太多将导致达到资源限制的并行度,并通过使用 Azure 门户中提供的指标监视资源。
- 转储数据库时,使用 mysqlpump 中的
defer-table-indexes
选项,以便在加载表数据后创建索引。 - 将备份文件复制到 Azure Blob 存储,并在其中执行还原。 此方法应该比通过 Internet 执行还原要快得多。
创建备份文件
若要备份本地服务器或虚拟机中的现有 MariaDB 数据库,请使用 mysqldump 运行以下命令:
mysqldump --opt -u <uname> -p<pass> <dbname> > <backupfile.sql>
需要提供的参数包括:
- <uname>:数据库用户名
- <pass>:数据库密码(请注意,-p 和密码之间没有空格)
- <dbname>:数据库名称
- <backupfile.sql>:数据库备份的文件名
- <--opt>:mysqldump 选项
例如,若要将 MariaDB 服务器上名为“testdb”的数据库(用户名为“testuser”且无密码)备份到文件 testdb_backup.sql,请使用以下命令 。 该命令将 testdb
数据库备份到名为 testdb_backup.sql
的文件中,该文件包含重新创建数据库所需的所有 SQL 语句。
mysqldump -u root -p testdb > testdb_backup.sql
若要在数据库中选择特定的表进行备份,列出表名,用空格隔开。 例如,若仅从“testdb”备份 table1 和 table2 两个表,请遵循此示例:
mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql
若要一次性备份多个数据库,请使用 --database 切换并列出数据库名(用空格隔开)。
mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql
在目标服务器上创建数据库
在要迁移数据的 Azure Database for MariaDB 目标服务器上创建一个空数据库。 使用 MySQL Workbench 等工具创建数据库。 数据库名称可与包含转储数据的数据库名称相同,或可以创建一个不同名称的数据库。
若要获取连接,请在 Azure Database for MariaDB 的“概述”窗格中找到连接信息。
在 MySQL Workbench 中,添加此连接信息。
还原 MariaDB 数据库
创建目标数据库后,可以使用 mysql 命令或 MySQL Workbench 将数据从转储文件还原到新创建的数据库。
mysql -h <hostname> -u <uname> -p<pass> <db_to_restore> < <backupfile.sql>
在此示例中,将数据还原到在 Azure Database for MariaDB 目标服务器上新创建的数据库中。
mysql -h mydemoserver.mariadb.database.chinacloudapi.cn -u myadmin@mydemoserver -p testdb < testdb_backup.sql
使用 phpMyAdmin 导出 MariaDB 数据库
若要导出,可以使用可能已安装在本地环境中的常用工具 phpMyAdmin。 若要导出 MariaDB 数据库,请执行以下操作:
- 打开 phpMyAdmin。
- 在左侧窗格中,选择数据库,然后选择“导出”链接。 这将显示一个新页面,可查看数据库转储情况。
- 在“导出”区域中,选择“全选”链接,选择数据库中的表 。
- 在“SQL 选项”区域中,选择适当的选项。
- 选择“另存为文件”选项及相应的压缩选项,然后选择“执行” 。 在提示符下,在本地保存文件。
使用 phpMyAdmin 导出数据库
导入过程与导出过程类似。 请执行以下操作:
- 打开 phpMyAdmin。
- 在 phpMyAdmin 设置页中,选择“添加”可添加 Azure Database for MariaDB 服务器。
- 输入连接详细信息和登录信息。
- 创建适当命名的数据库,然后在左侧窗格选中该数据库。 若要重写现有数据库,请选择数据库名称,选中所有表名称旁边的复选框,再选择“删除”以删除现有表。
- 选择“SQL”链接,显示可在其中输入 SQL 命令或上传 SQL 文件的页面。
- 选择“浏览”按钮查找数据库文件。
- 选择“执行”按钮,导出备份、执行 SQL 命令并重新创建数据库。