【MySQL】如何把Windows上的MySQL数据库迁移到Linux服务器上



1. 前言

  • 最近在学黑马的《瑞吉外卖》,前期的基础版本一致在 Windows 电脑上开发,包括 MySQL 数据库也是安装在 Windows 电脑上。最近才学到优化篇,安装了 Linux 虚拟机作为服务器来模拟生产环境,所以想把项目的所有数据都迁移到 Linux 虚拟机上。
  • 笔者在 Windows 和 Linux 上所用的 MySQL 版本均为 8.0.28 。

2. 物理备份与逻辑备份

  • 物理备份:备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占用空间比较大,MySQL 中可以用 xtrabackup 工具来进行物理备份。
  • 逻辑备份:对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。MySQL 中常用的逻辑备份工具为 mysqldump。逻辑备份就是备份 SQL 语句,在恢复的时候执行备份的 SQL 语句实现数据库数据的重现。本篇博文就是用这种方式进行迁移。

3. mysqldump实现逻辑备份

  • mysqldump 是 MySQL 提供的一个非常有用的数据库备份工具。

  • 比如说,我想把《瑞吉外卖》项目的数据库 reggie 备份,就适合这种情况:

    image-20221110144547230

  • mysqldump 命令执行时,可以将数据库备份成一个文本文件,该文件中实际上包含多个 CREATEINSERT 语句,使用这些语句可以重新创建表和插入数据。其备份过程主要分成两步:

    • 查出需要备份的表的结构,在文本文件中生成一个 CREATE 语句;
    • 将表中的所有记录转换成一条 INSERT 语句。
  • 基本语法

    mysqldump -u 用户名称 -H 主机名称 -p密码 待备份的数据库名称[tbname, [tbname...]]> 备份文件名称.sql
    

【说明】

  • 备份的文件并非一定要求后缀名为 .sql ,例如后缀名为 .txt 的文件也是可以的。

  • 举例:我在 Windows 系统下的 MySQL 使用 root 用户备份 reggie 数据库:

  • 打开 Windows 的 cmd 命令行:

    -- 备份文件存储在当前目录下
    mysqldump -uroot -p你的MySQL密码 reggie>reggie.sql
    
    -- 备份到具体的目录下
    mysqldump -uroot -p你的MySQL密码 reggie > G:\MySQL-backup\reggie.sql
    
  • 备份完成,在对应目录下可以看到 SQL 文件:

    image-20221110152356506


4. 逻辑恢复

  • 使用 mysqldump 命令将数据库中的数据备份成一个文本文件 (xxx.sql) 。需要恢复时,可以使用 MySQL 命令来恢复备份的数据。

  • MySQL 命令可以执行备份文件中的 CREATE 语句和 INSERT 语句。通过CREATE 语句来创建数据库和表。通过 INSERT 语句来插入备份的数据。

  • 基本语法

    mysql -u root -p [dbname] < backup.sql
    
  • 其中,dbname 参数表示数据库名称。该参数是可选参数,可以指定数据库名,也可以不指定。指定数据库名时,表示还原该数据库下的表。此时需要确保 MySQL 服务器中已经创建了该名的数据库。不指定数据库名时,表示还原文件中所有的数据库。此时 SQL 文件中包含有 CREATE DATABASE 语句,不需要 MySQL 服务器中已存在这些数据库。


  • 使用 root 用户,将之前举例中在 Windows 下备份的 reggie.sql 文件中的备份导入到 Linux 服务器上的 MySQL 数据库中。步骤如下:

  • 在 Linux 服务器上的/var/lib/mysql 目录下创建文件夹 backup 存放 MySQL 的备份文件:

    mkdir /var/lib/mysql/backup
    

    image-20221110154658460

  • 然后把 Windows 上的 reggie.sql 文件上传至 Linux 服务器上的 /var/lib/mysql/backup 目录下。

    image-20221110154759247

    image-20221110154826629

    image-20221110154847842

  • 如果备份文件中包含了创建数据库的语句,则恢复的时候不需要指定数据库名称,如下所示:

    mysql -uroot -p < reggie.sql
    
  • 否则需要指定数据库名称,如下所示:

    mysql -uroot -p reggie < reggie.sql
    
  • 因此我们打开 reggie.sql 文件查看:

    发现没有包含创建数据库的语句,因此我们下一步是先进入 Linux 服务器上的 MySQL 数据库来创建对于的数据库。

  • 在 Linux 命令行窗口中输入下面语句来进入 MySQL:

    mysql -uroot -p你的密码
    

    image-20221110155220864

  • 创建瑞吉外卖的数据库 reggie

    CREATE DATABASE IF NOT EXISTS reggie CHARACTER SET 'utf8';
    

    image-20221110155506303

  • 查询所有的数据库:

    SHOW DATABASES;
    

    image-20221110155553309

  • 接着,我们退出 MySQL :

    QUIT
    

    image-20221110155728907

  • 进入 /var/lib/mysql/backup/ 目录下:

    cd /var/lib/mysql/backup/
    
  • 然后,我们就可以开始逻辑恢复数据库了:

    mysql -uroot -p你的密码 reggie < reggie.sql
    

    image-20221110161356199

  • 再次进入 MySQL :

    mysql -uroot -p你的密码
    

    image-20221110162111201

  • 进入 reggie 数据库:

    USE reggie;
    
  • 查看 reggie 数据库中的数据表:

    SHOW tables;
    
  • 随便查看一个数据库表:

    SELECT * FROM user;
    
  • 数据全部都对,说明 reggie 数据库中的所有数据都成功迁移到 Linux 服务器上了。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【资源说明】 1、基于SSM+mysql的分布式电商项目源码+数据库+项目说明(课程设计).zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 开发环境: Eclipse+Maven+Linux+EasyUI 软件架构: MySQL+MyBatis+Spring+SpringMVC+Redis+Solr 项目描述:该商城是一个综合性的B2C平台,类似京东商城、天猫商城。用户可以在商城浏览商品、下订单,以及参加各种活动。该商城采用分布式系统架构,子系统之间都是调用服务来实现系统之间的通信,使用Dubbo框架实现。这样降低了系统之间的耦合度,提高了系统的扩展性。为了提高系统的性能使用Redis做系统缓存,并使用Redis实现Session共享。为了保证Redis的性能使用Redis的集群。搜索功能使用SolrCloud做搜索引擎。 后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。 商城门户:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。 订单系统:提供下单、查询订单、修改订单状态、定时处理订单。 搜索系统:提供商品的搜索功能。 单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。 ### 相关框架: 1.Dubbo:当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用 于提高机器利用率的资源调度和治理中心。 2.FastDFS:分布式文件系统,用于搭建一个图片服务器,专门保存图片。存储空间可以横向扩展,可以实现服务器的高可用。支持每个节点有备份机。 3.Redis集群:用于添加缓存,减少查询数据库的压力。 4.SolrCloud:用于实现搜索功能,快速高效。 5.ActiveMQ:使用Activemq发送接收消息,通过消息队列实现商品同步。 6.FreeMarker:FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。 7.MyCAT:一个彻底开源的,面向企业应用开发的“大数据库集群”支持事务、ACID、可以替代Mysql的加强版数据库,可以低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
### 回答1: 在Linux下进行MySQL数据库迁移,可以按照以下步骤进行: 1.备份原数据库:使用mysqldump命令备份原数据库,将备份文件保存到本地或其他服务器上。 2.安装新数据库:在目标服务器上安装MySQL数据库,并创建新的数据库。 3.将备份文件导入新数据库:使用mysql命令将备份文件导入新数据库中。 4.修改配置文件:修改新数据库的配置文件,包括数据库名称、用户名、密码等信息。 5.测试新数据库:使用mysql命令连接新数据库,并测试是否能够正常访问和操作。 6.删除原数据库:如果需要,可以在迁移完成后删除原数据库。 需要注意的是,在进行数据库迁移时,要确保原数据库和新数据库的版本兼容性,并且在迁移过程中要保证数据的完整性和安全性。 ### 回答2: 在Linux系统下进行MySQL数据库迁移,需要考虑以下几个方面: 1. 数据库备份 在MySQL迁移前,首先需要备份原有的数据库。可以使用mysqldump命令将数据库导出为.sql文件,该文件包含了所有的数据和表结构。备份命令示例: ```bash mysqldump -u root -p old_database > old_database.sql ``` 其中,`-u`参数是MySQL登录用户,`-p`参数是MySQL登录密码,`old_database`是需要备份的数据库名,`> old_database.sql`是将备份文件输出到指定文件中。 2. 安装新的MySQL 如果迁移到新的服务器上,需要安装新的MySQL,并确保MySQL的版本和原服务器上的MySQL版本相同或更高。 3. 将备份文件导入到新的MySQL中 使用mysql命令将备份文件导入到新的MySQL中,命令示例: ```bash mysql -u root -p new_database < old_database.sql ``` 其中,`new_database`是新数据库的名字。 4. 修改配置文件 新的MySQL可能会与原数据库不同,需要对新的MySQL进行相应的配置,包括端口、IP地址等。 5. 测试数据 在迁移完成后,需要进行测试以确保数据完整性和应用程序的正常运行。可以对应用程序进行测试,或者使用MySQL命令检查数据是否正确导入到新的MySQL中。 总之,在进行MySQL数据库迁移前,需要进行充分的备份并测试数据库的完整性和应用程序的正常运行。同时,需要针对新的MySQL进行相应的配置。 ### 回答3: 在Linux下进行MySQL数据库迁移分为两个方面:备份和恢复。备份和恢复分别是指将原有的MySQL数据库备份到新的机器上以及将备份数据恢复到新机器中。 备份方面,我们可以使用mysqldump指令来完成备份,该指令可以将MySQL数据库备份成SQL脚本,通过该脚本可以将数据恢复到新机器上。具体操作步骤如下: 1.使用mysqldump指令备份MySQL数据库mysqldump -u root -p database_name > database_name_backup.sql 其中,root为MySQL的用户名,database_name为要备份的数据库名称,>表示将备份结果定向到一个sql文件中。 2.复制备份文件到新机器上: 将备份文件拷贝到新机器上,可以使用scp指令或者FTP等传输工具。 3.在新机器上创建原数据库: 创建空的MySQL数据库mysql -u root -p -e 'create database database_name' 其中,database_name为要创建的数据库名称。 4.将备份数据恢复到新机器: mysql -u root -p database_name < database_name_backup.sql 其中,<表示将备份文件贴入恢复指令中,从而将备份文件中的数据库信息恢复到新的MySQL数据库中。 需要注意的是,在进行MySQL数据库迁移的时候,需要保证MySQL的版本一致,并且在备份和恢复过程中,需要保证备份文件完整,不能出现文件损坏的情况。另外,在进行数据迁移的过程中,需要保证迁移前已经备份好了数据,以防数据出现丢失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自牧君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值