mysqldump

mysqldumpmysql提供的用于数据备份的工具,通过再次执行SQL语句以达到恢复数据的目的(生产环境慎用)。mysqldump的优势在于方便和在恢复之前可以查看dump文件甚至修改文件内容。通常用于开发测试,及数据量比较小的情况下,当数据量大的情况下可能dump所花费的时间的时间是可以接受的,但恢复的时候会消耗大量的磁盘I/O。 1.mysqldump所需的权限 mysqldump所需要的权限跟其所dump的对象有关,若备份表则需要SELECT权限,若备份视图,则需要SHOW VIEW权限,若备份触发器,则需要TRIGGER权限。 2.锁表问题 mysqldump默认会锁住需要dump的表 3.mysqldump常用参数

mysqldump [options] > dump.sql

—options

Format 描述
—all-databases 备份所有数据库
—databases 指定所需备份的数据库
—no-data 不备份数据
—user 用户名
—host IP或主机名
—port 端口
—lock-all-table 锁住需要dump数据库的所有表,会使选项—lock-tables和—single-transaction关闭
—lock-tables 会锁住每个数据库中需要dump的表
—password 密码
—single-transaction 只适用于InnoDB引擎,当执行dump命令时,客户端会发一条START TRANSACTION的语句给server,会dump事务开始时的数据库状态,不会锁表,所以不会对应用造成影响
—quick 一行一行进行dump,不会将数据缓存在内存中,每次都需要写文件,速度会变慢
—skip-quick 先将数据缓存在内存中,再一次写到文件中,速度较快,但不适用的大表
—tables 指定表,会覆盖—databases选项

详细参数请参考
4.示例

# dump
mysqldump -hlocalhost -uroot -pxxxx --databases  test --tables table_a table_b > test.sql

# restore
mysql -uroot -pxxxx test < test.sql