生活的道路一旦选定,就要勇敢地走到底,决不回头。

发掘积累过程的快感

首页 » BIBLE模型 » 数据库技术 » MySQL备份命令mysqldump参数说明与示例

MySQL备份命令mysqldump参数说明与示例


1. 语法选项说明

  • -h, --host=name
    主机名
  • -P[ port_num], --port=port_num
    用于连接 MySQL 服务器的的 TCP/IP 端口号
  • --master-data
    这个选项可以把 binlog 的位置和文件名添加到输出中,如果等于 1,将会打印成一个 CHANGE MASTER 命令;如果等于 2,会加上注释前缀。并且这个选项会自动打开 --lock-all-tables,除非同时设置了 --single-transaction(这种情况下,全局读锁只会在开始 dump 的时候加上一小段时间,不要忘了阅读 --single-transaction 的部分)。在任何情况下,所有日志中的操作都会发生在导出的准确时刻。这个选项会自动关闭 --lock-tables
  • -x, --lock-all-tables
    锁定所有库中所有的表。这是通过在整个 dump 的过程中持有全局读锁来实现的。会自动关闭 --single-transaction--lock-tables
  • --single-transaction
    通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照。只有当表使用支持 MVCC 的存储引擎(目前只有 InnoDB)时才可以工作;其他引擎不能保证导出是一致的。当导出开启了 --single-transaction 选项时,要确保导出文件有效(正确的表数据和二进制日志位置),就要保证没有其他连接会执行如下语句:ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,这会导致一致性快照失效。这个选项开启后会自动关闭 --lock-tables
  • -l, --lock-tables
    对所有表加读锁。(默认是打开的,用 --skip-lock-tables 来关闭,上面的选项会把关闭 -l 选项)
  • -F, --flush-logs
    在开始导出前刷新服务器的日志文件。注意,如果你一次性导出很多数据库(使用 -databases=--all-databases 选项),导出每个库时都会触发日志刷新。例外是当使用了 --lock-all-tables--master-data 时:日志只会被刷新一次,那个时候所有表都会被锁住。所以如果你希望你的导出和日志刷新发生在同一个确定的时刻,你需要使用 --lock-all-tables,或者 --master-data 配合 --flush-logs

2. 示例

导出一个数据库:

$ mysqldump -h localhost -uroot -ppassword \
--master-data=2 --single-transaction --add-drop-table --create-options --quick \
--extended-insert --default-character-set=utf8 \
--databases discuz > backup-file.sql

导出一个表:

$ mysqldump -u pak -p --opt --flush-logs pak t_user > pak-t_user.sql

将备份文件压缩:

$ mysqldump -hhostname -uusername -ppassword --databases dbname | gzip > backup-file.sql.gz
对应的还原动作为
gunzip < backup-file.sql.gz | mysql -uusername -ppassword dbname

导入数据库:

mysql> use target_dbname
mysql> source /mysql/backup/path/backup-file.sql
或
$ mysql target_dbname

导入还有一个 mysqlimport 命令,暂未研究。

直接从一个数据库向另一个数据库转储:

mysqldump -u用户名 -p --opt dbname | mysql --host remote_host -C dbname2

关于增量备份与恢复请参考:MySQL 增量备份与恢复实例

互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼。 “Bible”是圣经,有权威的书,我们的本意就是为开发者提供真正有用的的资料。 我的电子邮件 1217179982@qq.com,您在开发过程中遇到任何问题,欢迎与我联系。
Copyright © 2024. All rights reserved. 本站由 Helay 纯手工打造. 蜀ICP备15017444号