欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

导出MySQL数据与数据备份

程序员文章站 2024-03-06 09:18:01
...

导出MySQL数据与数据备份

数据的导出

例如导出整张表

mysql>
select * from City into outfile ' /tmp/city.txt' fields by ', ';#不指定的情况下使用制表符分隔
#表示将City表中的内容导出到tmp路径下的city.txt中,同理也可以按条件导出
select * from City into outfile '/tmp/city_1.txt' fields terminated by ',' ;#此句表示用逗号分隔
select * from City into outfile '/tmp/city_2.txt' fields terminated by ','  encloesd by ' " ';    #此句表示用双引号包裹字段,且用逗号分隔字段(主要处理字段中包括逗号的情况)

第一句执行后去对应路径查看city.sql的结果如图,字段之间使用Tab分隔导出MySQL数据与数据备份查看city_2.sql的内容,使用逗号分隔字段
导出MySQL数据与数据备份
city_2.sql的内容也和预期一样,使用双引号包裹字段,使用,分隔字段
导出MySQL数据与数据备份

数据的导入

mysql>
create table city_tx like City;#首先创建一个空表,与刚导出数据的表结构相同
load data infile '/tmp/city.sql' into table city_tx;

这两条语句执行完之后,就把city中导出的数据又导入新表city_tx中了

但是要注意的是,导入的方式需要与你导出的方式对应,比如导出时使用引号包裹,使用逗号分隔,那么导入时也要按照这样来
例如 之前第三种引号包裹,逗号分隔的导出方式

mysql>
create table city_tx2 like City
load data infile '/tmp/city_2.sql' into table city_tx2 fields terminated by '.' enclosed by '"';
#才可以正确导入

当字段为空时导出的数据中使用\N填充

数据库备份

热备份,冷备份,温备份

简单来讲,热备份就是在备份数据库时,不会限制其他用户对数据库的读取和修改数据的操作。
冷备份就是在备份期间,完全禁止其他用户对数据库的的读取和修改操作。
温备份介于两者中间,允许其他用户对数据库进行读取操作

逻辑备份和物理备份

物理备份

简单讲就是将数据库文件备份,速度快,在需要比较大的迁移时需要,主要使用mysqlbackup ,mysqlbackup对于InnoDB引擎时热备份,其他引擎为温备份。会把数据库目录下的所有文件都进行拷贝。 还有mysqlhotcopy,mysqlhotcopy用于备份MyISAM和ARCHIVE表,但仅限于Uinx系统下。

逻辑备份

把数据库的数据使用SQL语句的形式备份下来,适用于数据量不大的情况通常在30GB以上就需要考虑物理备份。优点时可以跨平台,因为是保存成SQL语句的形式,所以很灵活。
一般使用mysqldump进行逻辑备份

shell>
mysqldump -u用户名 -p密码 --database 数据库名 > 路径
#例如
mysqldump -uroot -p --databasa mysql > /tmp/loadbase.sql #把mysql库进行逻辑备份到指定的路径中
mysqldump -uroot -p -d --databasa mysql > /tmp/loadbase2.sql#只备份数据库结构,不备份数据
mysqldump -uroot -p - mysql user > /tmp/loadtable.sql#备份mysql库中的user表

mysqldump常用的命令项
导出MySQL数据与数据备份
在对应目录中查看生成的备份文件如图,可以看到对应的Mysql版本,使用的引擎,库名,以及恢复库中的表的SQL语句。
导出MySQL数据与数据备份需要注意的是,其中的SQL语句会在恢复中检查是否有同名的表,如果存在同名的表会被删掉。

数据恢复

mysql>
source '路径'
#例如
source /tmp/loadbase.sql
source /tmp/loadtable.sql

也可以使用vi命令更改备份文件中表的名字,从而在恢复备份时不会覆盖掉库中原有的同名表

相关标签: MySQL基础