使用mysqldump的一点总结

'MYISAM': ' -v -E -e -R --triggers -F -n --opt --master-data=2 --hex-blob -B ',
'INNODB': ' -v -E -e -R --triggers -F --single-transaction -n --opt --master-data=2 --hex-blob -B '

参数说明:
-v:verbose模式,此模式会输出更多有关程序的信息。

--events,-E:使用事件调度器完成备份,但是需要数据库相关权限。

-- extended-insert, -e:会使用列表写入INSERT,即一条语句插入多个值,这样会是备份文件更小。

--routines, -R:包括存储程序(过程和函数)的倾倒数据库输出。这个选项需要mysql.proc表的SELECT权限。使用,例程生成的输出包含创建过程和创建函数语句创建例程。然而,这些语句不包括属性,如例程创建和修改时间戳,所以当例程.重新加载,创建时间戳等于重新加载时间。如果你需要创建例程和原来的时间戳属性,不使用,例程。相反,转储和重载mysql的内容。proc直接表,使用MySQL账户有合适的MySQL数据库特权。

--triggers:会在导出每个表时都导出触发器,不过需要具有TIGGER的权限,此选项默认启用。

--flush-logs,-F:在备份前刷新MySQL服务器的日志,此选项需要RELOAD权限。如果你在--all-databases情景下使用此选项,则会在每个数据库时刷新logs。 --lock-all-tables, --master-data, or (as of MySQL 5.5.21) --single-transaction时:日志只会被刷新一次,执行时会加表锁。如果你想在备份时刷新日志,--lock-all-tables, --master-data, or --single-transaction.配合此选项使用。

--no-create-db, -n:在给出--databases 或 --all-databases选项时,不执行CREATE DATABASE 指令

--hex-blob:包含有二进制信息的列将会由十六进制输出(比如,‘abc’,将会输出为 0x616263,受影响的数据类型:BINARY, VARBINARY, the BLOB types, and BIT

--database,-B:备份制定数据库。一般来说,mysqld对待name参数时,第一个参数作为数据库名,紧随其后的作为表名。但是在使用这个选项时,会将所有name参数作为数据库名进行备份。在每一个数据库备份前都会添加CREATE DATABASE 与 USE指令。

--opt指令相当于--add-drop-table, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick, a和 --set-charset,以上这些选项是默认的,因为--opt是默认使用的选项。

--master-data=2 CHANGE MASTER TO 被编写为一个SQL注释

--single-transaction参数的作用,设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响,在这期间不会锁表。

猜你喜欢

转载自blog.51cto.com/860143/2383714
今日推荐