Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1130289
  • 博文数量: 170
  • 博客积分: 1603
  • 博客等级: 上尉
  • 技术积分: 1897
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 15:54
文章分类

全部博文(170)

文章存档

2016年(27)

2015年(21)

2014年(27)

2013年(21)

2012年(7)

2011年(67)

我的朋友

分类: Mysql/postgreSQL

2011-04-27 14:58:01

mysqldump常用参数
-d=不导出数据  -t=不创建表(即没有create table语句) -c=单条insert语句(默认选项,即所有行数据都只有一个insert,巨表会超出条目限制) -R=导出函数和proc -q=强制查询记录导出而不是查询所有记录缓存到内存再导出(大概意思就是查一条导一条,而不是查所有再导出)

其他不常用参数:
--opt
这只是一个快捷选项,等同于同时添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 --skip-opt 禁用。注意,如果运行 mysqldump 没有指定 -q 或 --opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题(工作经验,一般的几十万跳还不算大库可)。

--lock-all-tables,-x
在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction--lock-tables 选项。

--lock-table
它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项。

--single-transaction
该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDBBDB
本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。
要想导出大表的话,应结合使用 --quick 选项。

--hex-blob
使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有 BINARY、VARBINARY、BLOB

--triggers
同时导出触发器。该选项默认启用,用 --skip-triggers 禁用它。

--extended-insert = true|false
默认情况下,mysqldump 开启 --complete-insert (即-c)模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。这个选项的含义就是表的每行一个insert语句


其他备份模式
1、mysqlhotcopy 是一个 PERL 程序,最初由Tim Bunce编写。它使用 LOCK TABLES、FLUSH TABLEScpscp 来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。mysqlhotcopy 只能用于备份 MyISAM,并且只能运行在 类UnixNetWare 系统上。

2、sql语法备份
BACK TABLE tbl_name TO '/tmp/db_name/'(注意,必须要有 FILE 权限才能执行本SQL)
SELECT INTO OUTFILE '/tmp/db_name/tbl_name.txt' FROM tbl_name(则是把数据导出来成为普通的文本文件,可以自定义字段间隔的方式,方便处理这些数据,也就是不能直接用来导入的)

3、二进制日志备份
my.cf的[mysqld]下加入
log-bin = binlog log-bin-index = binlog.index
重启后会在mysql的data文件夹中生成binlog.000001 以及 binlog.index,前面的文件是 mysqld 记录所有对数据的更新操作,后面的文件则是所有 binlog 的索引,都不能轻易删除,如果是备份复制系统中的从服务器,还应该备份 master.inforelay-log.info 文件。

备份出来的 binlog 文件可以用 MySQL 提供的工具 mysqlbinlog 来查看,如:

/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001

该工具允许你显示指定的数据库下的所有 SQL 语句,并且还可以限定时间范围,相当的方便,详细的请查看手册。

恢复时,可以采用类似以下语句来做到:

/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uxxx -pxxx db_name

把 mysqlbinlog 输出的 SQL 语句直接作为输入来执行它


阅读(821) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~