mysqldump最常用于备份一个整个的数据库:
语法:
导出语法
shell> mysqldump --opt db_name > backup-file.sql 你可以这样将转储文件读回到服务器: shell> mysql db_name < backup-file.sql 或者为: shell> mysql -e "source /path-to--backup/backup-file.sql" db_name
导出例子:
C:Windowssystem32>mysqldump -u root -p study > D:study.sql Enter password: ****** 导入例子: C:Windowssystem32>mysql -u root -p study <D:study.sql Enter password: ****** C:Windowssystem32>mysql -e "source D:study.sql" study -u root -p Enter password: ******
mysqldump也可以用于从一个Mysql服务器向另一个服务器复制数据时装载数据库:
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name 可以用一个命令转储几个数据库: shell> mysqldump ---database db_name1 [db_name2...] > my_databases.sql 如果你想转储所有数据库,使用--all--database选项: shell> mysqldump --all-databases > all_databases.sql
如果表保存在InnoDB存储引擎中,mysqldump提供了一种联机备份的途径(参见下面的命令)。该备份只需要在开始转储时对所有表进行全局读锁定(使用FLUSH TABLES WITH READ LOCK)。获得锁定后,读取二进制日志的相应内容并将锁释放。因此如果并且只有当发出FLUSH...时正执行一个长的更新语句,MySQL服务器才停止直到长语句结束,然后转储则释放锁。因此如果MySQL服务器只接收到短("短执行时间")的更新语句,即使有大量的语句,也不会注意到锁期间。
shell> mysqldump --all-databases --single-transaction > all_databases.sql
对于点对点恢复(也称为“前滚”,当你需要恢复旧的备份并重放该备份以后的更改时),循环二进制日志(参见5.11.3节,“二进制日志”)或至少知道转储对应的二进制日志内容很有用:
shell> mysqldump --all-databases --master-data=2 > all_databases.sql
或
shell> mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql
如果表保存在InnoDB存储引擎中,同时使用--master-data和--single-transaction提供了一个很方便的方式来进行适合点对点恢复的联机备份。