【MySQL】如何把Windows上的MySQL数据库迁移到Linux服务器上
目录
- 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 命令执行时,可以将数据库备份成一个文本文件,该文件中实际上包含多个
CREATE
和INSERT
语句,使用这些语句可以重新创建表和插入数据。其备份过程主要分成两步:- 查出需要备份的表的结构,在文本文件中生成一个
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服务器上相关推荐
- jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理
准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...
- 一台服务器可以安装多个mysql数据库_在一台Linux服务器上安装多个MySQL实例(一)--使用mysqld_multi方式...
(一)MySQL多实例概述 实例是进程与内存的一个概述,所谓MySQL多实例,就是在服务器上启动多个相同的MySQL进程,运行在不同的端口(如3306,3307,3308),通过不同的端口对外提供服务 ...
- mysql在linux只有用空密码_在Linux服务器上配置phpMyAdmin--允许空密码
使用php和mysql开发网站的话,phpmyadmin是一个非常友好的mysql管理工具,并且免费开源,国内很多虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyad ...
- linux服务器上安装mysql
mysql版本:mysql-5.6.44-linux-glibc2.12-x86_64.tar linux操作系统和版本信息: 1.检查linux服务器上是否已安全mysql [root@localh ...
- 项目部署到Linux服务器上 (全)linux服务器安装java mysql 配置
项目部署到Linux服务器上 (全) 1.服务器准备 首先你需要购买一台云服务器 我是领取的阿里云的服务器 选择linux系统 设置好 服务器的密码 忘记可以在 控制台首页 云服务器ECS 里面找到购 ...
- linux mysql搭建禅道详细教程_如何在Linux服务器上部署禅道
目前较受欢迎的开源项目管理软件:禅道. 这是一款国产的优秀开源项目管理软件,基于敏捷项目管理理念开发而成,操作简洁,能够很好地满足目前团队中的产品.开发.测试等人员的使用. 下面详细介绍如何在Linu ...
- 突然远程连接不上mysql_navicat突然连接不上远程linux服务器上的mysql
我linux服务器上的mysql是docker安装的,突然有一天我的navicat连接不上服务器上的mysql,于是开始了下面一系列的修复 1.首先登录服务器上mysql,看是否能正常登录,我发现不能 ...
- winserver下oracle好运维吗,在Windows 客户端下备份远程Linux服务器上的Oracle数据库...
1.在Windows上安装Oracle客户端软件(比如:win32_11gR1_client版本最好跟服务器Oracle版本相同) 系统运维 www.osyunwei.com 温馨提醒:qihan ...
- 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统
Linux本次使用到的命令行记录 链接服务器的命令 ssh [root@www.leimingtech.net](mailto:root@www.leimingtech.net) -p 22233 - ...
最新文章
- java c 流_java对象传输流C/S传输对象
- redis介绍及保持session会话
- (转)工作了一个星期各位一定累了吧,那我们一起来表单验证一番吧!
- boost::program_options模块实现处理选项组的测试程序
- linux服务器查配置信息失败,查看Linux服务器的配置信息
- 我试了试用 SQL查 Linux日志,好用到飞起
- linux信任本地jar包,jar包在linux本地运行成功, 但是jenkins构建失败
- jQuery 元素移除empty() remove()与detach()的区别?
- 凯利KAC交流控制器调试方案
- Linux 下载GCC
- 科来网络分析系统2010v7.3.1.2436 激活注册汉化方法
- K3 Cloud 表体显示序号
- 工商银行的计算机网络布线,工商银行利用计算机网络开展了哪些业务?
- 【微积分的本质|笔记】直观理解链式法则和乘积法则
- 使用注册表reg文件修复git bash git gui 右键快捷方式
- 访谈录#1:成为“温赵轮”
- 0901 - 虽已马不停蹄,无奈时光飞逝
- css绘制星星闪烁,web前端炫酷特效-CSS3制作环形星星发光动画
- 积极为开发者提供开源客服系统,春松客服得到有味生活3D商城认可
- 关于公司要不要设立测试的讨论