MySQL逻辑备份工具mysqldump

mysqldump

简介

mysqldump这个程序最开始是Igor Romanenko写的。它是一个MySQL/MariaDB逻辑备份的工具,备份的逻辑就是将指定的数据库/表中的数据以SQL语句的形式一条一条导出。还原的时候也是执行一条条sql语句,达到还原的目的。

用法

shell> mysqldump [options] db_name [tbl_name ...]  #备份指定库中的表
shell> mysqldump [options] --databases db_name ...   #备份指定数据库,可以多个
shell> mysqldump [options] --all-databases   #备份所有库

常用选项

  • -A, --all-databases
    备份所有数据库
  • –add-drop-database
    在每次创建之前添加DROP DATABASE。通常与–all-
  • –compact
    提供较少的详细输出(对调试很有用)。禁用结构注释和页眉/页脚构造。
  • -E, --events
    导出事件
  • -F, --flush-logs
    在开始备份之前刷新MariaDB服务器binlog日志。如果将此选项与–databases=or --all-databases选项结合使用,则会为每个备份的数据库刷新日志。例外情况是使用–lock-all-tables或–master-data:在这种情况下,日志只刷新一次,对应于所有表被锁定的时刻。如果你希望你的转储和刷新日志在同一确切的时刻发生,你应该使用–flush-logs与一起两种–lock-all-tables或–master-data。
  • -f, --force
    即使在表转储期间发生SQL错误,也要继续。
  • -h name, --host=name
    从给定主机上的MariaDB或MySQL服务器连接并备份数据。默认主机是localhost
  • –ignore-table=name
    不要备份指定的表。要指定多个要忽略的表,请多次使用该指令,每个表使用一次。必须使用数据库和表名指定每个表,例如,–ignore-table=database.table。
  • -x, --lock-all-tables
    锁定所有数据库中的所有表。这是通过在整个转储期间获取全局读锁来实现的。指定–single-transaction和–lock-tables的时候此选项自动关闭
  • –log-error=name
    通过将警告和错误附加到指定文件来记录警告和错误。默认是不进行日志记录。
  • –master-data[=#]
    使binlog日志位置和文件名附加到输出,如果该选项设置为1(默认值),则将其作为CHANGE MASTER命令输出; 如果设置为2,则该命令将以注释符号作为前缀。除非另有说明,否则此–master-data选项将打开。在MariaDB 5.3之前,这将在转储开始时短时间内进行全局读锁定
  • -p[passwd]
    连接服务器时使用的密码
  • -q, --quick
    此选项对于转储大型表非常有用。它强制mysqldump一次从服务器一行检索表的行,然后将结果直接输出到stdout,而不是检索整个行集并在写出之前在内存中缓冲它。默认为开,用于–skip-quick禁用。
  • –single-transaction
    此选项在备份数据之前向服务器发送START TRANSACTION SQL语句。它仅适用于InnoDB之类的事务表,使用此选项时,应记住只有InnoDB表以一致状态备份。单事务功能不仅取决于引擎是事务性的还是能够REPEATABLE-READ,还取决于START TRANSACTION WITH CONSISTENT SNAPSHOT。
    该–single-transaction选项与–lock-tables选项互斥,因为LOCK TABLES导致任何挂起的事务被隐式提交。因此,此选项自动关闭–lock-tables
    要转储大表,您应该将–single-transaction选项与–quick。
  • -u name, --user=name
    连接到服务器时使用的MariaDB/MySQL用户名

实例

备份所有库,并保存到~/alldb_backup.sql

备份所有库,并保存到~/alldb_backup.sql
mysqldump -uroot -pcentos --flush-logs --quick --single-transaction --master-data=2 --all-databases> ~/alldb_backup.sql

还原
mysql -uroot -pcentos < ~/alldb_backup.sql

备份单个hellodb单个库

mysqldump -uroot -pcentos --flush-logs --quick --single-transaction --databases hellodb > ~/hellodb_backup.sql
还原
mysql -uroot -pcentos < ~/hellodb.sql

备份hellodb数据库中的students表

mysqldump -uroot -pcentos --flush-logs --quick --single-transaction hellodb students > ~/hellodb_students_backup.sql
还原
mysql -uroot -pcentos hellodb < ~/hellodb_students_backup.sql

   注意 
   还原的时候可以先关闭binlog日志,不然数据会再次写到binlog日志中
    set @@session.sql_log_bin=off
    source sql文件

猜你喜欢

转载自blog.csdn.net/L835311324/article/details/83625991