【MySQL学习笔记】第14章 使用文件进行交互(三 备份和恢复数据库)

14.4 备份和恢复数据库

14.4.1 备份和恢复的方法

我们可以将数据库的设置、表和列的定义、数据等数据库的所有信息作为文件导出。

  • 转储

对数据库的所有内容执行导出的操作称为转储(dump)。如果使用转储文件,就可以在其他服务器上创建内容相同的数据库,也可以备份以应对紧急情况的发生。

  • 恢复

通过转储导出的数据还原到数据库中的操作称为恢复(restore)。恢复意味着从头创建数据库,其实就是将包含SQL语句集合的文本文件用MySQL命令进行重定向。

14.4.2 使用mysqldump导出

命令格式:mysqldump -u 用户名 -p密码 数据库名 >输出文件的名称

练习:将数据库db1的信息转储到名为db1_out.txt的文件中。

输入&执行结果:

C:\Users\杨帆>mysqldump -u root -proot db1>D:/MYSQL/db1_out.txt
Warning: Using a password on the command line interface can be insecure.

这里,没有将输出文件保存在默认文件夹,卫视保存在了指定的D:\MYSQL文件夹中。

查看结果:

使用编辑器确认内容如上所示,行的开头是“--”的部分是注释,用“/*”和“*/”括起来的部分也是注释,注释不是命令而是单纯说明。上面的执行结果中有命令“CREATE TABLE ...”用于创建表。

另外,因为mysqldump的执行结果是用MySQL服务器的默认字符编码输出的,本练习环境中字符编码为UTF-8。因此,如果使用type命令确认db1_out.txt的内容,中文部分会出现乱码。

注:恢复作业失败的情况

如果在之后的操作中恢复作业失败了,试着在转储时加上--default-character-set=utf8之类的字符编码选项,执行mysql -u root -proot db1 > db1_out.txt --default-character-set=utf8。

14.4.3 恢复转储文件

当恢复数据库时,我们需要提前准备一个用于填充的数据库(没有数据库的情况下会报错)。

创建数据库db2,然后将转储文件db1_out.txt恢复到该数据库中。

创建数据库

mysql> CREATE DATABASE db2;
Query OK, 1 row affected (0.01 sec)

恢复数据库

C:\Users\杨帆>mysql -u root -proot db2 < db1_out.txt
Warning: Using a password on the command line interface can be insecure.

这样,将数据库db1恢复到tb2中。

14.4.4 字符编码问题

在大部分情况下,以上操作能顺利执行。不过,在使用MySQL的过程中,我们经常会受到字符编码问题的困扰。

如果单纯进行“转储->恢复”,像汉子这种需要占用两个字节的字符就可能会出现问题。这是因为在进行转储和恢复的时候,如果不指定字符编码,就会使用默认的字符编码输入和输出文件。

指定字符编码进行转储和恢复

命令格式:--default-character-set=字符编码

例如:将数据库转存到db3_out.txt,并恢复到数据库db3中

mysqldump -u root -proot db1>db3_out.txt --default-character-set=utf8
mysql -u root -proot db3<db3_out.txt --default-character-set=utf8

锁表

命令格式:LOCK TABLES 表名 锁的类型;

锁的类型
锁的类型限制内容
READ只读锁:所有客户端都只允许执行SELECT
READ LOCAL本地只读锁:对于InooDB以外的存储引擎,加锁的客户端仅能执行SELECT
WRITE没有加锁的客户端不能进行任何操作,拥有锁的客户端可以执行操作

例:给表my_table设置READ锁时需要执行如下命令

LOCK TABLES my_table READ;

解锁命令格式:UNLOCK TABLES;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

odi帆布

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值