1.使用MySQLdump命令备份
- MySQLdump是MySQL提供的一个 非常有用的数据库备份工具
- MySQLdump命令执行时,可以将数据库备份成一个文本文件,该文件中实际上包含了多个CREATE和INSERT语句,使用这些语句可以重新创建表和插入数据
mysqldump -u user -h host -p password dbname [tb_name,[tb_name ...]]>filename.sql;
右箭头">"告诉MySQLdump将备份数据表的定义和数据都写入备份文件;filename为备份文件的名称
例子:
/*备份单个数据库的所有表*/
mysqldump -i root -p test_db >C:/backup/test_db.sql
/*备份数据库的某个表*/
mysqldump -u root -p test_db test_tb >C:/backup/test_tb.sql
/*备份多个数据库*/
mysqldump -u root -p --databases test_db1,test_db2 >C:/backup/test_db12.sql
- 使用--all-databases参数可以备份系统中所有的数据库
- 使用--all-databases时,不需要指定数据库名称
mysqldump -u user -h host -p --all-databases > filename.sql
如果在服务器上进行备份,并且表均为MyISAM表,应考虑使用MySQLhotcopy,因为可以更快的进行备份和恢复
MySQLdump还有一些其他选项可以用来定制备份过程:
2.直接赋值整个数据库目录
因为MySQL表保存为文件方式,所以可以直接赋值MySQL数据库的存储目录及文件进行备份
- 这是一种简单,快速,有效的备份方式
- 要想保持备份的一致性,备份前需要对相关的表执行LOCK TABALE操作,然后对表执行FLUSH TABLE;这样当赋值数据库目录中的文件时,允许其他客户继续查询表;FLUSH TABLES语句确保开始备份前将所有激活的索引页写入硬盘
- 当然也可以停止MySQL服务在进行备份操作
- Windows平台下默认的存放目录:"C:\Cocuments and Settings\All Users\Application Data\MySQL\MySQL Server 5.7\data";Linux平台下:"/var/lib/MySQL/"
- 这种方法虽然简单,但并不是最好的办法;因为这种方法对InnoDB存储引擎的表不适用;使用这种办法备份的数据最好恢复到相同的版本的服务器中,不同的版本可能不兼容
在MySQL版本号中,第一个数据表示主版本号,主版本号相同的MySQL数据库文件格式相同
3.使用MySQLhotcopy工具快速备份
- MySQLhotcopy是一个perl脚本
- 使用LOCK TABLES, FLUSH TABLES和cp或scp来快速备份数据库
- 是备份数据库或单个表的最快的途径
- 只能允许值数据库目录所在的机器上
- 只能备份MyISAM类型的表
- 想要执行MySQLhotcopy,必须可以范文备份的表文件,具有哪些表的SELECT权限,RELOAD权限(一边能够执行FLUSH TABLES)和LCOK TABLES权限
mysqlhotcopy db_name_1,...,db_name_n /path/to/new_directory
- MySQLhotcopy只是将表所在的目录复制到另一个位置,只能用于备份MyISAM和ARCHIVE表
- 备份InnoDB类型的数据表时会出现错误信息
- 由于它复制的本地格式的文件,故也不能移植到其他硬盘或操作系统下