MySQL MyISAM和InNodb备份与恢复技巧
该选项用于转储大的表。它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行并在输出前将它缓存到内存中。
· --quote-names,-Q
用‘`’字符引用数据库、表和列名。如果服务器SQL模式包括ANSI_QUOTES选项,用‘’字符引用名。默认启用该选项。可以用--skip-quote-names禁用,但该选项应跟在其它选项后面,例如可以启用--quote-names的--compatible。
· --result-file=file,-r file
将输出转向给定的文件。该选项应用在Windows中,因为它禁止将新行‘/n’字符转换为‘/r/n’回车、返回/新行序列。
· --routines,-R
在转储的数据库中转储存储程序(函数和程序)。使用---routines产生的输出包含CREATE PROCEDURE和CREATE FUNCTION语句以重新创建子程序。但是,这些语句不包括属性,例如子程序定义者或创建和修改时间戳。这说明当重载子程序时,对它们进行创建时定义者应设置为重载用户,时间戳等于重载时间。
如果你需要创建的子程序使用原来的定义者和时间戳属性,不使用--routines。相反,使用一个具有mysql数据库相应权限的MySQL账户直接转储和重载mysql.proc表的内容。
该选项在MySQL 5.1.2中添加进来。在此之前,存储程序不转储。
· --set-charset
将SET NAMES default_character_set加到输出中。该选项默认启用。要想禁用SET NAMES语句,使用--skip-set-charset。
· --single-transaction
该选项从服务器转储数据之前发出一个BEGIN SQL语句。它只适用于事务表,例如InnoDB和BDB,因为然后它将在发出BEGIN而没有阻塞任何应用程序时转储一致的数据库状态。
当使用该选项时,应记住只有InnoDB表能以一致的状态被转储。例如,使用该选项时任何转储的MyISAM或HEAP表仍然可以更改状态。
--single-transaction选项和--lock-tables选项是互斥的,因为LOCK TABLES会使任何挂起的事务隐含提交。
要想转储大的表,应结合--quick使用该选项。
· --socket=path,-S path
当连接localhost(为默认主机)时使用的套接字文件。
· --skip--comments
参见---comments选项的描述。
· --tab=path,-T path
产生tab分割的数据文件。对于每个转储的表,mysqldump创建一个包含创建表的CREATE TABLE语句的tbl_name.sql文件,和一个包含其数据的tbl_name.txt文件。选项值为写入文件的目录。
默认情况,.txt数据文件的格式是在列值和每行后面的新行之间使用tab字符。可以使用--fields-xxx和--行--xxx选项明显指定格式。
注释:该选项只适用于mysqldump与mysqld服务器在同一台机器上运行时。你必须具有FILE权限,并且服务器必须有在你指定的目录中有写文件的许可。
· --tables
覆盖---database或-B选项。选项后面的所有参量被看作表名。
· --triggers
为每个转储的表转储触发器。该选项默认启用;用--skip-triggers禁用它。
· --tz-utc
在转储文件中加入SET TIME_ZONE='+00:00'以便TIMESTAMP列可以在具有不同时区的服务器之间转储和重载。(不使用该选项,TIMESTAMP列在具有本地时区的源服务器和目的服务器之间转储和重载)。--tz-utc也可以保护由于夏令时带来的更改。--tz-utc默认启用。要想禁用它,使用--skip-tz-utc。该选项在MySQL 5.1.2中加入。
· --user=user_name,-u user_name
连接服务器时使用的MySQL用户名。
· --verbose,-v
冗长模式。打印出程序操作的详细信息。
· --version,-V
显示版本信息并退出。
· --where='where-condition', -w 'where-condition'
只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。
2.2. 文件冷备份
当mysql服务器停止时,通过复制所有表文件(*.frm、*.MYD和*.MYI文件)来备份MyISAM数据库。
2.3. MyISAM 表恢复
1、 如果是通过mysqldump备份的,就执行:mysql –u root 备份文件名。
2、 如果通过mysqlhotcopy或文件冷/热拷贝来备份的,停止mysql服务,使用备份文件来覆盖现有文件。
3、 如果是采用BACKUP TABLE备份的,使用restore table来恢复。因为backup table不会备份索引文件,恢复表注意重建索引。
4、 如果是采用SELECT INTO ...OUTFILE备份的,使用load data恢复数据,也可以使用mysqlimport命令来代替。
3. 日志备份
3.1. 日志备份的好处及如何启用
日志备份可以支持MyISAM和InnoDB,这跟有些备份工具只支持MyISAM不一样。
另外,日志可以做增量备份,这是其他方法无法做到的。
启动日志备份:用--log-bin[=file_name]选项来启动mysql服务。
3.2. 增量备份
先执行FLUSH LOGS刷新日志,同步日志缓存到磁盘,关闭当前的日志并产生新的日志文件。
拷贝上一次完整备份或增量备份后的一个或一些日志文件到一个安全的地方。
这样就制作了一个增量备份。
3.3. 日志恢复
日志恢复可以选择恢复某个数据库、某些操作点或时间范围,非常灵活。
通过mysqlbinlog工具可以恢复二进制日志,可以一次恢复多个日志文件,命令如下:
shell> mysqlbinlog [options] hostname-bin.[0-9]* | mysql
mysqlbinlog命令选项
· ---help,-?
显示帮助消息并退出。
· ---database=db_name,-d db_name
只列出该数据库的条目(只用本地日志)。
· --force-read,-f
使用该选项,如果mysqlbinlog读它不能识别的二进制日志事件,它会打印警告,忽略该事件并继续。没有该选项,如果mysqlbinlog读到此类事件则停止。
· --hexdump,-H
评论