三十四、MySQL基础系列笔记之数据备份与恢复
对于数据的备份至关重要。数据是程序的基石,没有数据的程序一文不值。
为什么需要备份
对于数据的备份是为了防止意外的发生,如误操作导致数据表的损坏或数据的丢失,以及被攻击或者设备勒索病毒攻击...种种原因导致数据库损坏或不可用或数据丢失,使用使用备份快速对数据进行恢复。定期对数据库进行备份是一个很好的习惯。
数据备份
下面将使用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: '?'. 导致报错的原因是使用了powershell
或terminal
对数据进行导出备份的。
注意:使用备份导出时,最好使用cmd黑窗口。
登录后恢复数据
对于登录后的恢复,可以使用source
命令导入sql文件进行恢复。
语法
source filename
案例
use demobak;
source e:e:ziruchu_test_t1.bak.sql
我是小白,期待和优秀的你一起同行!
小白
2020年11月27日