MySQL常用的备份工具之mysqldump

     mysqldump是MySQL中最常用的备份工具,在一些情况下,也是我们唯一可以选择的备份工具。mysqldump是在MySQL发行版中所提供的一种逻辑备份工具,支持对数据库进行全量备份和有条件的备份,其备份结果就是SQL转储文件。那么我们如何使用mysqldump呢?我们先来看一下mysqldump的语法

mysqldump的语法:

     mysqldump [OPTIONS] database [tables]

       OR     mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]  

       OR     mysqldump [OPTIONS] –all-databases [OPTIONS]

     使用mysqldump –help我们可以看到,mysqldump的常用语法有三种。

     mysqldump datebases [tables] 用于对指定数据库下的某一个或是某一些表进行备分

     mysqldump -databases [OPTIONS] DB1 [DB2 DB3…]  用于对指定的数据库进行备份

     mysqldump [OPTIONS] –all-databases [OPTIONS]   用于对所有数据库进行备份

而[OPTIONS]则是一些备份的参数,常用的一些参数及功能如下:

-u 备份用户

-p 备份用户的密码

–flush-logs 在备份开始前先执行flush logs 命令刷新二进制日志到磁盘,并生成一个新的二进制日志文件

–master-data 这个参数在我们上一章中已经多次提到了,其主要用途就是在备份文件 中记录备份时MySQL实例的二进制日志文件名和偏移量信息。这个参数有两个取值1和2,当为2时会在生成的change master命令前加上注释符。

–routines 在备份文件中包括存储过程和函数 

–triggers 在备份文件中包括触发器

–events  在备份文件中包括MySQL计划任务

–where 这个参数让我们可以按照一定条件来备份某一个表的数据

–single-transaction:这个参数主要用于INNODB存储引擎,该参数在事务隔离级别设置成Repeatable Read,并在dump之前发送start transaction 语句给服务端。这在使用innodb时很有用,因为在发出start transaction时,保证了在不阻塞任何应用下的一致性状态。对myisam和memory等非事务表,还是会改变状态的,当使用此参的时候要确保没有其他连接在使用ALTER TABLE、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE等语句,否则会出现不正确的内容或则失败。–add-locks和此参互斥,

那么如果我们想使用mysqldump对MySQL数据库进行全备的话,我们要如何做呢?其实很简单,只要使用下面的命令就可以了

mysqldump -u xxx -p xxxx –single-transaction –triggers –routines –events -all-databases >> all.sql 

是不是很简单呢?

同样如果我们只想备份,某一个表中的符合条件的数据的话,则可以使用下面的方法

mysqldump -uroot -p –where “count>30 ” dbname tbname > tb.sql

其中–where参数就是备份的条件,就和我们在SELECT语句中使用WHERE从句时一样。

点赞