*Cube-Host – 完整的雲端服務!

MySQL 数据库迁移:分步且安全的操作方法

MySQL database migration a step-by-step and secure method

简介

MySQL 数据库迁移是一项关键操作,会影响数据完整性、应用程序稳定性和恢复功能。我们将解释如何使用 mysqldump、迁移用户、保持数据完整性以及考虑不同 MySQL 版本的细微差别。

何时需要进行迁移?

  • 迁移至新的托管服务提供商或新服务器。
  • 升级 MySQL 版本。
  • 配置复制或负载均衡。
  • 数据库合并。

风险及如何最小化风险

  • 版本不兼容:sql_mode、default_authentication_plugin、编码(utf8mb4_unicode_ci 与 utf8mb4_0900_ai_ci)差异。
  • 权限丢失:用户需单独注册并手动转移。
  • 应用程序停机时间:在无复制迁移过程中。
  • 不一致的导出:–single-transaction 仅适用于 InnoDB;对于 MyISAM,需要使用 FLUSH TABLES WITH READ LOCK。

迁移的分步计划

步骤 1. 创建导出

主要关键词 (1):MySQL 数据库迁移

创建保留逻辑的导出:

				
					mysqldump -u root -p --single-transaction --routines --triggers --events olddb > dump.sql
				
			
  • –single-transaction 减少锁定(仅适用于 InnoDB)。
  • –routines, –triggers, –events 保留存储过程、触发器和事件调度程序。

步骤 2. 传输导出文件

通过 SCP 或 rsync 通过安全通道传输。验证文件完整性:

				
					sha256sum dump.sql
				
			

步骤 3. 创建数据库

在新服务器上:

				
					mysql -u root -p -e "CREATE DATABASE newdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
				
			

注意:utf8mb4_unicode_ci 在 MySQL 8.0 中可能与 utf8mb4_0900_ai_ci 不同。

步骤 4. 导入数据导出文件。

				
					mysql -u root -p newdb < dump.sql
				
			

步骤 5. 转移用户和权限

  • 执行 SHOW GRANTS FOR «user»@“host” 并转移 CREATE USER/GRANT。
  • 在 MySQL 8.0 中,您可以使用 mysqlpump –users。
  • 请注意 default_authentication_plugin(在 8.0 中为 caching_sha2_password)。

步骤 6. 完整性检查

  • 比较表中的行数。
  • 检查校验和(pt-table-checksum)。
  • 测试重要 SQL 查询。

步骤 7. 最大限度地减少停机时间

对于关键系统,请使用 复制

  1. 将新服务器配置为从属服务器。
  2. 等待同步完成。
  3. 无停机时间地从主服务器切换到从属服务器。

迁移前检查清单

单元

需要检查什么?

版本

与MySQL/MariaDB的兼容性

编码

请确保utf8mb4和分类设置正确。

SQL 模式

比较 sql_mode

权利

验证权限授予

附件

default_authentication_plugin

复制品

检查延迟

回滚

  • 创建旧服务器的备份。
  • 要执行回滚,您可以将旧服务器作为从属服务器启动,然后再恢复原状。

结论

如果考虑版本兼容性、使用备份并验证数据完整性,MySQL 数据库迁移是安全的。复制可避免停机时间,备份则支持快速恢复。MySQL 数据库迁移需要在权限、分类和参数设置方面采取细致入微的策略。