1.冷备份
在数据库处于非运行状态时通过直接拷贝数据文件或目录的方式进行备份。
2.热备份
1).将数据库设置为只读状态:
mysql>flush tables with read lock;
该语句的作用是:刷新缓冲区,对于所有带读取锁定的数据库,关闭所有打开的表,并锁定所有的表,直到执行UNLOCK TABLES为止。
注意:在备份完成之前当前会话的连接不可退出,否则自动解锁。
2).使用mysqldump导出或直接拷贝数据文件。
mysqldump [options] [db_name [tbl_name ...]]
最简单的导出就是:
shell>mysqldump db_name > db_back.sql
常用选项有:
--quick: 该选项对导出大表非常有用。如果不带该选项,mysqldump将在导出结果前装载整个结果集到内存中,对于正在导出一个大的数据库,这将可能是一个问题。使用该选项后,它将强迫mysqldump从服务器以一次一行的方式检索而不做缓冲,直接输出。
--disable-keys:告诉 mysqldump 在 Insert 语句的开头和结尾增加 /*!40000 Alter TABLE table DISABLE KEYS */; 和 /*!40000 Alter TABLE table ENABLE KEYS */; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。
--add-drop-table:在每个create语句之前增加一个drop table语句。
--add-locks:在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE(为了使得更快地插入到MySQL)。
--extended-insert:使用可以包括多个values列表的多行INSERT语法(可以加快插入速度)。
--lock-tables:在导出前先锁定所有表。如果是MyISAM表,将通过READ LOCAL的形式被锁定以支持并发插入,对InnoDB和BDB类型表不会有效果。
--opt:等同于--quick --add-drop-table --add-locks --extended-insert --lock-tables
--quick和--opt选项默认打开,可以通过--skip-opt选项来关闭。
更多选项请参考手册。
3).取消数据库的只读状态:
mysql>unlock tables;