目录

  • 1. 前言
  • 2. 物理备份与逻辑备份
  • 3. mysqldump实现逻辑备份
  • 4. 逻辑恢复

1. 前言

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

2. 物理备份与逻辑备份

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

3. mysqldump实现逻辑备份

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

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

  • 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 文件:

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
    

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

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

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

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

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

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

    mysql -uroot -p你的密码
    

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

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

  • 查询所有的数据库:

    SHOW DATABASES;
    

  • 接着,我们退出 MySQL :

    QUIT
    

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

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

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

  • 再次进入 MySQL :

    mysql -uroot -p你的密码
    

  • 进入 reggie 数据库:

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

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

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

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

  1. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理

    准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...

  2. 一台服务器可以安装多个mysql数据库_在一台Linux服务器上安装多个MySQL实例(一)--使用mysqld_multi方式...

    (一)MySQL多实例概述 实例是进程与内存的一个概述,所谓MySQL多实例,就是在服务器上启动多个相同的MySQL进程,运行在不同的端口(如3306,3307,3308),通过不同的端口对外提供服务 ...

  3. mysql在linux只有用空密码_在Linux服务器上配置phpMyAdmin--允许空密码

    使用php和mysql开发网站的话,phpmyadmin是一个非常友好的mysql管理工具,并且免费开源,国内很多虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyad ...

  4. linux服务器上安装mysql

    mysql版本:mysql-5.6.44-linux-glibc2.12-x86_64.tar linux操作系统和版本信息: 1.检查linux服务器上是否已安全mysql [root@localh ...

  5. 项目部署到Linux服务器上 (全)linux服务器安装java mysql 配置

    项目部署到Linux服务器上 (全) 1.服务器准备 首先你需要购买一台云服务器 我是领取的阿里云的服务器 选择linux系统 设置好 服务器的密码 忘记可以在 控制台首页 云服务器ECS 里面找到购 ...

  6. linux mysql搭建禅道详细教程_如何在Linux服务器上部署禅道

    目前较受欢迎的开源项目管理软件:禅道. 这是一款国产的优秀开源项目管理软件,基于敏捷项目管理理念开发而成,操作简洁,能够很好地满足目前团队中的产品.开发.测试等人员的使用. 下面详细介绍如何在Linu ...

  7. 突然远程连接不上mysql_navicat突然连接不上远程linux服务器上的mysql

    我linux服务器上的mysql是docker安装的,突然有一天我的navicat连接不上服务器上的mysql,于是开始了下面一系列的修复 1.首先登录服务器上mysql,看是否能正常登录,我发现不能 ...

  8. winserver下oracle好运维吗,在Windows 客户端下备份远程Linux服务器上的Oracle数据库...

    1.在Windows上安装Oracle客户端软件(比如:win32_11gR1_client版本最好跟服务器Oracle版本相同) 系统运维  www.osyunwei.com  温馨提醒:qihan ...

  9. 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统

    Linux本次使用到的命令行记录 链接服务器的命令 ssh [root@www.leimingtech.net](mailto:root@www.leimingtech.net) -p 22233 - ...

最新文章

  1. java c 流_java对象传输流C/S传输对象
  2. redis介绍及保持session会话
  3. (转)工作了一个星期各位一定累了吧,那我们一起来表单验证一番吧!
  4. boost::program_options模块实现处理选项组的测试程序
  5. linux服务器查配置信息失败,查看Linux服务器的配置信息
  6. 我试了试用 SQL查 Linux日志,好用到飞起
  7. linux信任本地jar包,jar包在linux本地运行成功, 但是jenkins构建失败
  8. jQuery 元素移除empty() remove()与detach()的区别?
  9. 凯利KAC交流控制器调试方案
  10. Linux 下载GCC
  11. 科来网络分析系统2010v7.3.1.2436 激活注册汉化方法
  12. K3 Cloud 表体显示序号
  13. 工商银行的计算机网络布线,工商银行利用计算机网络开展了哪些业务?
  14. 【微积分的本质|笔记】直观理解链式法则和乘积法则
  15. 使用注册表reg文件修复git bash git gui 右键快捷方式
  16. 访谈录#1:成为“温赵轮”
  17. 0901 - 虽已马不停蹄,无奈时光飞逝
  18. css绘制星星闪烁,web前端炫酷特效-CSS3制作环形星星发光动画
  19. 积极为开发者提供开源客服系统,春松客服得到有味生活3D商城认可
  20. 关于公司要不要设立测试的讨论

热门文章

  1. MSIL - 简单的代码解析
  2. c语言常量修饰符的作用,C语言杂记(10):关于常量修饰符const
  3. 四元数左乘右乘_理解四元数
  4. c#接收Request Payload请求
  5. SAT考试之SAT词汇记忆4步走
  6. 数据挖掘--特征工程
  7. 什么是tree-shaking?
  8. linux的open close函数
  9. CSS IE7 IE6 Firefox多浏览器兼容
  10. C/C++/Qt 文件操作 效率比较