# MySQL备份方法以及相关说明

说明:本文介绍的是mysql自带的mysqldump备份命令的使用方法,如您有更好的备份方法或者备份工具,可自行使用,我们不做限制。

# mysqldump简介

mysqldump命令是MySQL数据库自带的一个备份命令
它支持数据库全备也可以指定库进行备份
它备份的文件以文件形式备份并且文件内容都是SQL语句。

注意:mysqldump备份过程中不用停服,会锁表,读写会有所延迟。

# 使用语法

mysqldump语法格式
mysqldump  [options] –u 用户名 -p 密码 数据库名  >   备份的文件 
mysqldump [options]参数
1、-A , --all-databases      #==》备份所有数据库
2、  -B, --databases     #==》表示指定备份多个库,同时执行了use db和create databases db命令
3、--compact #==》去掉输出注释,适合调试输出使用,生产不可用
4、-F , --flush-logs     #==》刷新binlog日志
5、-d                    #==》只备份表结构
6、-t                    #==》只备份表数据
7、-l        #==》指定表上锁,让用户不能访问写入数据库指定表的数据
8、-x , --lock-all-tables        #==》所有表上锁
9、--master-data  #==》增加binlog日志文件名及对应的位置记录点
(1)、--master-data=1   #==》不注释位置记录点信息,从库会使用到
(2)、--master-data=2 #==》注释位置记录点信息
10、--single-transaction  #==》应答innodb事务数据库备份
11、--events     #==》转储事件,把events警告事件取消显示
12、--flush-privileges  #==》刷新数据库更新

# MySQL全备数据命令(推荐)

#==》适合MyISAM引擎
mysqldump -uroot -p'123456' --all-databases --flush-privileges  –-lock-all-tables \
--master-data=1 --flush-logs --triggers --routines --events \
--hex-blob > /home/bak/mysql_bak.sql
#==》适合InnoDB引擎
mysqldump -uroot -p'123456' --all-databases --flush-privileges --single-transaction \
--master-data=1 --flush-logs --triggers --routines --events \
--hex-blob > /home/bak/mysql_bak.sql

'/home/mysql/mysql_bak.sql'为备份输出文件,可自定义

# 备份单个库

使用方法

mysqldump -h <mysql地址> -P <端口> -u <账号> -p <密码> <库名> > <输出文件路径>

例子

mysqldump -h 127.0.0.1 -P 3306 -uroot -p '123456' testdb1 > /home/bak/mysql_bak.sql

# 备份单个库

使用方法

mysqldump -h <mysql地址> -P <端口> -u <账号> -p <密码> -B <库名1> <库名2> > <输出文件路径>

例子

mysqldump -h 127.0.0.1 -P 3306 -uroot -p '123456' -B testdb1 testdb2 testdb3 > /home/bak/mysql_bak.sql

# 备份表结构

使用方法

mysqldump -h <mysql地址> -P <端口> -u <账号> -p <密码> -d <表名> > <输出文件路径>

例子

mysqldump -h 127.0.0.1 -P 3306 -uroot -p '123456' -d table1  > /home/bak/mysql_bak.sql

# 备份表数据

使用方法

mysqldump -h <mysql地址> -P <端口> -u <账号> -p <密码> -t <表名> > <输出文件路径>

例子

mysqldump -h 127.0.0.1 -P 3306 -uroot -p '123456' -t table1  > /home/bak/mysql_bak.sql

# 使用mysql命令或source命令恢复数据库

1、使用source 命令恢复数据库
mysql> system ls -l /home/bak/mysql_bak.sql
-rw-r--r-- 1 root root 12344 Aug  1 19:29 /home/bak/mysql_bak.sql
mysql> system ls -l /home/bak/mysql_bak.sql
2、使用mysql命令恢复数据库
[root@mysql ~]# mysql -h127.0.0.1 -P3306 -uroot -p'123456' < /home/bak/mysql_bak.sql

# 更多用法可自行搜索