mysql 导出/导入

innodb:

备份整个数据库:
mysqldump -u -p database > filename(backup.sql)

备份单个表:
mysqldump -u -p database table > filename(backup.sql)

备份多个表:

mysqldump -u -p database table1 table2 > filename(backup.sql)

选择部分备份:
mysqldump -u -p database table --where "name='老王' or name='小李'" > filename(backup.sql)

恢复:

不登录方式
mysql -u -p database < filename

登录方式
mysql -u -p
use database;
source filename;

常用参数:
-t 导出数据不导出结构 默认都导出
-d 导出结构不导出数据
--databases 选择多个数据库
--all-databases 所有数据库
--add-drop-table 这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,
保证导入MySQL数据库的时候不会出错,因为每次导入的时候,都会首先检查表是否存在,存在就删除

注:mysql的操作始终是要验证用户的,所以要登陆或者执行命令时附上账号密码,
账号密码紧跟,如-uroot -proot
密码可以先不输入,在回车后输入,如 -uroot -p
> 导出
< 导入
这种方式备份出的是sql语句,导入时执行其中sql语句

冷备份:停止服务进行备份,即停止数据库的写入
热备份:不停止服务进行备份(在线)

1.mysql的MyIsam引擎只支持冷备份,InnoDB支持热备份,原因:

InnoDB引擎是事务性存储引擎,每一条语句都会写日志,并且每一条语句在日志里面都有时间点,那么在备份的时候,mysql可以根据这个日志来进行redo和undo,将备份的时候没有提交的事务进行回滚,已经提交了的进行重做。但是MyIsam不行,MyIsam是没有日志的,为了保证一致性,只能停机或者锁表进行备份。

InnoDB不支持直接复制整个数据库目录和使用mysqlhotcopy工具进行物理备份:

直接复制整个数据库目录

因为MYSQL表保存为文件方式,所以可以直接复制MYSQL数据库的存储目录以及文件进行备份。MYSQL的数据库目录位置不一定相同,在Windows平台下,MYSQL5.6存放数据库的目录通常默认为~MySQLMYSQL Server 5.6data,或其他用户自定义的目录。这种方法对INNODB存储引擎的表不适用。使用这种方法备份的数据最好还原到相同版本的服务器中,不同的版本可能不兼容。在恢复的时候,可以直接复制备份文件到MYSQL数据目录下实现还原。通过这种方式还原时,必须保证备份数据的数据库和待还原的数据库服务器的主版本号相同。而且这种方式只对MYISAM引擎有效,对于InnoDB引擎的表不可用。执行还原以前关闭mysql服务,将备份的文件或目录覆盖mysql的data目录,启动mysql服务。

2.使用mysqlhotcopy工具快速备份

mysqlhotcopy是一个perl脚本,最初由Tim Bunce编写并提供。他使用LOCK TABLES 、FLUSH TABLES和cp或scp来快速备份数据库。他是备份数据库或单个表的最快途径,但他只能运行在数据库目录所在机器上,并且只能备份myisam类型的表。

原文地址:https://www.cnblogs.com/wayland3/p/10847833.html