MySQL如何备份整个数据库

一.场景

最近申请了新的生产环境。其中包括MySQL的数据库环境。

代码完成后,需要在MySQL环境上:

  • 创用户
  • 创库
  • 创表
  • 加记录

忙活了一下午。

第二天,我收到紧急邮件:

  • 新申请的数据库存在安全漏洞
  • 需要拉起新的数据库
  • 代替掉原来的数据库
  • 数据记得备份

我当时就:???

二.目标

如果重复之前的建表/加记录操作,费时又费力,要白白浪费一个下午。

好在MySQL非常给力。

它的Linux客户端除了有远程连接MySQL的功能,还有一个备份的工具,叫mysqldump

三.操作

1.前提条件

  • 1.你要先找一台能连MySQL数据库服务端的虚机
  • 2.然后这台虚机上要装有MySQL客户端,并具有mysqldump文件
  • 3.并且这台虚机可以访问MySQL的服务端口(有开通防火墙)

2.数据备份

你需要到mysql的bin目录下,执行以下命令(为了安全起见,以下示例提供的ip/端口等信息都是虚假的)

./mysqldump  -utom -h123.234.345.456 -P3306  -p123456 stduent_manage > test.sql

稍微解释下参数:

参数含义
-utom指定用户为tom
-h123.234.345.456指定需要备份的数据库ip为123.234.345.456
-P3306数据库的端口
-p123456tom用户的密码
stduent_manage需要备份哪个数据库
> test.sql备份到本地的哪个位置

因为还没正式商用,数据并不多。稍等片刻,数据就全部dump下来了。

3.数据写回

之后,等新的库申请下来,就需要用反向操作,把刚刚dump的test.sql文件写回数据库。

首先,MySQL客户端连接远程数据库(这里演示的IP/端口等都是伪造的)

./mysql -uroot -h100.200.300.400 -P5578 
参数
-uroot新库的root用户
-h100.200.300.400新库的ip为100.200.300.400
-P5578新库的端口5578

然后输入密码登录后回车

接着输入命令,其中test.sql就是你刚刚dump下来的文件。

#建库
create database stduent_manage default charset=utf8mb4;
#使用这个库
use stduent_manage;
#执行刚刚dump的sql文件
source /data/mysql/bin/test.sql

稍等片刻,数据就被导入新库中了

四.结果

最终,数据很顺利的就从原来的数据库被迁移到新的数据库。

因为业务还没正式商用,使用这种方式确实非常便利。

节约不少时间,留个笔记,希望能帮助其他人。

更多推荐

MySQL如何备份整个数据库