三十四、MySQL基础系列笔记之数据备份与恢复

作者: 温新

分类: 【MySql】

阅读: 1574

时间: 2020-11-27 15:28:46

对于数据的备份至关重要。数据是程序的基石,没有数据的程序一文不值。

为什么需要备份

对于数据的备份是为了防止意外的发生,如误操作导致数据表的损坏或数据的丢失,以及被攻击或者设备勒索病毒攻击...种种原因导致数据库损坏或不可用或数据丢失,使用使用备份快速对数据进行恢复。定期对数据库进行备份是一个很好的习惯。

数据备份

下面将使用4种数据备份的方法,

语法

mysqldump -u user -h host -p password dbname [tbname,...] > filename.sql

参数

user:用户名称
host:登录用户的主机名
password:密码
dbname:需要备份的数据库名称
tbname:需要备份的数据表
> : 将备份数据表的定义和数据写入备份文件
filename:备份的文件名称

备份单个数据库中的所有表

mysqldump -u root -p -h localhost ziruchu_test > e:ziruchu_test.bak.sql

打开备份可以看到如下内容

*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

--
-- Table structure for table `book`
--

备份文件中,--字符开头的为注释语句;以/*!开头,*/结尾的语句为可执行的MySQL注释,这些语句可以被MySQL执行。

备份数据库中的某个表

备份语法中,tbname为要备份的数据表,多个表之间用空格隔开。

# 备份ziruchu_test库中下的t1表
mysqldump -u root -p -h localhost ziruchu_test t1 > e:ziruchu_test_t1.bak.sql

备份多个数据库

备份多个数据库需要使用--database参数,格式为

mysqldump -u user -h host -p --databases [dbname,[dbname...]] > filename.sql

案例

mysqldump -u root -p -h localhost --databases ziruchu_test demo > e:testanddemo.bak.sql

使用all-databases参数备份所有数据库

mysqldump -u user -p -all-databases > e:alldatabase.sql

直接复制MySQL下的data文件夹进行备份

数据恢复

数据恢复时,一定要先创建数据。

create database testbak;

登录时恢复数据

语法

mysql -uroot -p [dbname] < filename.sql

案例

mysql -uroot -p demobak < e:ziruchu_test_t1.bak.sql

在导入的过程中可能会报这样的错误 ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: '?'. 导致报错的原因是使用了powershellterminal对数据进行导出备份的。

注意:使用备份导出时,最好使用cmd黑窗口。

登录后恢复数据

对于登录后的恢复,可以使用source命令导入sql文件进行恢复。

语法

source filename

案例

use demobak;
source e:e:ziruchu_test_t1.bak.sql

我是小白,期待和优秀的你一起同行!

小白

2020年11月27日

请登录后再评论