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 | 数据库的端口 |
-p123456 | tom用户的密码 |
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
稍等片刻,数据就被导入新库中了
四.结果
最终,数据很顺利的就从原来的数据库被迁移到新的数据库。
因为业务还没正式商用,使用这种方式确实非常便利。
节约不少时间,留个笔记,希望能帮助其他人。