mysqldump备份数据库

  1. 备份命令(注意:sql语句不带 CREATE DATABASEUSE database 语句)
    1
    mysqldump -uusername -ppassword databasename > backupfile.sql
  2. 同时备份多个库(注意:--database sql语句带 CREATE DATABASEUSE database 语句 )
    1
    mysqldump -uusername -ppassword --database database1 database2 > backupfile.sql
  3. 备份并压缩
    1
    mysqldump -uusername -ppassword --database databasename | gzip > backupfile.sql.gz
  4. 备份同个库多个表
    1
    mysqldump -uusername -ppassword databasename table1 table2 > backupfile.sql
  5. 记录二进制日志位置的备份
    1
    mysqldump --single-transaction --flush-logs --master-data=2 -uusername -ppassword --database database1 database2 > backupfile.sql
  6. 直接复制到另一个库(-C 在服务器/客户端协议中使用压缩)
    1
    mysqldump -uusername -ppassword databasename | mysql -hhost -uusername -ppassword -C databasename

其他常用参数:

  • --all-databases :备份所有数据库
  • --add-drop-database :备份出带删除数据库语句的sql备份
  • --add-drop-table :备份出带删除数据表语句的sql备份
  • --no-data :备份数据库结构,不备份数据
  • --flush-logs :启动转储之前刷新服务器中的日志文件
  • --master-data[=#] :这将导致二进制日志位置和文件名附加到输出。
    • 如果等于1,将打印为更改主命令
    • 如果等于2,则该命令将以注释符号作为前缀
    • 这个选项将使 --lock-all-tables 打开,除非指定了 --single-transaction
  • --add-locks :在INSERT语句周围添加锁。(默认为打开;使用 --skip-add-locks 可禁用。)
  • --lock-tables :锁定一个库的所有表以供读取。(默认为打开;使用 --skip-lock-tables 可禁用。)
  • --lock-all-tables :锁定所有数据库中的所有表。(使用 --single-transaction--lock-tables 会自动关闭)
  • --single-transaction :针对支持MVCC(多版本)事务的存储引擎,例如innodb,mysqldump提供了在导出数据之前,开启一个事务,由数据库保证单次导出数据的一致性,此时针对Innodb表的所有读写操作,均不会被阻塞。

评论