【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: 在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、付费专栏及课程。

余额充值