如何在两台服务器之间安全迁移MySQL数据库

【】迁移MySQL数据库通常只需要几个简单的步骤,但是由于您要转移的数据量可能比较庞大,因此一般耗时也会比较长。

下面的步骤将指导您如何从旧的服务器上导出MySQL数据库,对它进行安全加固;然后将其复制并导入到新的服务器上,以保证数据的完整。

将MySQL数据库导出至转储文件(dump file)

Oracle提供了一个名为mysqldump的工具,允许您轻松地将数据库结构和其数据导出到一个SQL的转储文件。您可以使用如下的命令:

  1. mysqldump -u root -p --opt [database name] > [database name].sql 

不过,请注意如下几点:

  • 我们可以使用–single-transaction的标志,以避免数据库在导出数据的过程中被锁死。这样能够在将数据导出到转储文件的同时,您仍可继续在旧的数据库上更新数据。不过请注意,那些在导出进程已经开始之后被更新的数据,是不会被导入转储文件之中的。
  • 在运行该命令之前,请务必将[database name]替换成您的实际数据库名称。
  • 请输入您自己的用户名和相对应的密码,并确保该用户具有备份数据库所需的权限。

安全加固备份文件

在大多数情况下,数据是一家企业的最重要的资产。因此,我们不希望数据库的各种备份被暴露在不受保护的服务器上,因为这样有可能会造成错误地泄露,甚至会出现被黑客窃取等更为糟糕的状况。

因此,通常您可以尝试的做法是:压缩、加密文件,然后删除原文件。在Linux操作系统上,请使用以下的命令对已压缩文件进行加密:

  1. zip --encrypt dump.zip db.sql 

在压缩开始之前,系统将提示您输入密码。

传输备份文件

至此,我们已经获得了一个加密的转储文件。下面让我们通过网络使用SCP命令,将其传输到新的服务器上:

  1. scp /path/to/source-file user@host:/path/to/destination-folder/ 

将MySQL转储导入新服务器

通过上面一步,我们已将备份文件传到了新的服务器上,下面让我们来进行解密和提取:

  1. unzip -P your-password dump.zip 

为了存储空间和安全方面的原因,一旦文件导入成功,请记得删除其对应的转储文件。

您可以使用以下的命令来导入文件:

  1. mysql -u root -p newdatabase < /path/to/newdatabase.sql 

在新服务器上验证导入的数据

现在我们在新服务器上已经导入了数据库,那么我们就需要一种方法来验证数据的真实存在,并确保没有任何遗漏。

我建议您同时在旧的和新的数据库上运行如下查询,并将获得的结果进行对比。

该查询会在所有的表里计算行数,以显示出新、旧数据库中的数据量。

  1. SELECT   
  2.     TABLE_NAME,   
  3.     TABLE_ROWS  
  4.  
  5. FROM   
  6.     `information_schema`.`tables`  
  7.  
  8. WHERE   
  9.     `table_schema` = 'YOUR_DB_NAME'

此外,我建议您检查各个表中数字列的MIN和MAX记录,以确保数据本身是有效的,而不仅仅是看数据的总量(虽然这是查询所唯一能够读出的值)。另一种可供测试的选择是将数据库从新的服务器导出为SQL转储文件,并将其与旧服务器的SQL转储文件做比较。

此外,在应用程序被迁移之前,我建议您先将一个应用程序的实例重定向到新的数据库上,以确认一切运行正常。

另一种导出和导入的选项

我们之所以把该选项放在***,是因为我们的确不建议您去使用它。

该方法实现起来非常的容易,因为它仅使用一个命令,便能一次性将转储文件导出、传输、并将其数据导入到新的数据库之中。

而它的不足之处在于,一旦其网络链接断掉,您就需要重新启动它了。

因此,我们认为它并不值得被推荐,尤其是在大型数据库中,可能会非常不适用。

当然,如果您非要尝试一下的话,可以使用如下的命令:

  1. mysqldump -u root -pPassword --all-databases | ssh user@new_host.host.com 'cat - | mysql -u root -pPassword' 

重要提示

  • 请确保在新旧两处,安装有相同官方发行版本的MySQL服务器。否则,你需要按照MySQL网站上的升级说明来进行统一(请参见(https://dev.mysql.com/doc/refman/5.7/en/upgrading.html)。
  • 请确保您在旧的服务器上拥有足够的空间来保存转储文件和压缩文件(应该有db_size×2的空间)。
  • 请确保您在新的服务器上拥有足够的空间来保存加密的和解密的转储文件、并能导入数据库(应该有db_size×3的空间)。
  • 如果您曾经考虑过只是将datadir从一个数据库转移到另一个的话,我建议您***不要这样做。否则,您会搞乱数据库的内部结构,而且会给将来可能的问题埋下隐患。
  • 在新的服务器配置中,请不要忘了配置诸如innodb_log_file_size这样的重要标志。因为如果忘记了根据新服务器的规格而更新配置的话,很可能会导致严重的性能问题。
  • 在许多情况下,一般升级到新的数据库服务器的初衷是为了提高查询性能。而如果此类升级没有达到预期的改善,那么您就应该考虑去优化SQL查询,而不仅仅是升级硬件那么简单了(请参见https://www.eversql.com/)。

祝您数据库迁移顺利!

【原标题】 How to Transfer a MySQL Database Between Two Servers,作者: Tomer Shimshilashvili

【译稿,合作站点转载请注明原文译者和出处为.com】

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/300783.html<

(0)
管理的头像管理
上一篇2025-05-24 00:59
下一篇 2025-05-24 01:00

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注