代码改变世界

MySQL备份之mysqldump

2019-01-28 17:03  笨笨王  阅读(670)  评论(0)    收藏  举报

1.mysqldump原理

2.mysqldump命令详解

 

1.mysqldump原理

1.1)备份过程

flush tables

flush table with read lock

set session transaction isolation level repeatable read;

start transaction

show master status;

unlock tables;

show create database dbname;

savepoint sp

show create table tbname;

select * from tbname;

rollback to savepoint sp 

......

release savepoint sp

 

1.2)观察方法:

set global general_log=1;

 

 

2.mysqldump命令详解

2.1)mysqldump重要参数

-u        用户名

-p        指定密码

-B     (--databases 导出数据库列表,单个库可省略)

-A -B   备份所有数据

-F       切割binlog日志

--master-data=2       对CHANGE MASTER TO加注释

--single-transaction  以innodb事务备份数据

-x 锁表

-l 只读锁表(myisam引擎)

-d 结构     (--not-data不导出任何数据,导出数据库表结构)

-t 数据      (--no-create-info只导出数据,而不添加CREATE TABLE语句)

-n             (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)

-R            (rountines:导出存储过程以及自定义函数)

-E            (--events:导出事件)

--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)

--tables      表列表(单个表时可省略)

 
2.2)备份数据库中所有的表
mysqldump -uroot -p  -A  --master-data=2   --single-transaction    >/data/backup/dbname-$port_`date +%F`
mysqldump -uroot -p  -A  --master-data=2   --single-transaction |gzip    >/data/backup/dbname-$port_`date +%F`
mysqldump -uroot -p  -A -B  -F --master-data=2  --events --single-transaction  --routines  >/data/backup/all.sql
 
2.3)备份数据库中的某个表
mysqldump -u user -h hsot -p dbname taname >filename.sql
 
2.4)备份多个数据库
2.4.1)
mysqldump -u user -h host -p  --databases dbname1, dbname2 >filename.sql
2.4.2)分库备份
mysql -uroot -p -e"show databases;" |grep -Evi "database|infor|perfor"|sed 's#^#mysqldump -uroot -p -B #g'
 
2.5)备份数据库中的表结构
mysqldump -u user -h host -p -d dbname talname >filename.sql
 
2.6)备份数据表内容
mysqldump -u user -h host -p -t dbname tabname >filename.sql
 
2.7)备份少量的数据(仅测试使用)
mysqldump -u user -h host -p  --compact -B dbname >filename.sql
 
2.8)使用mysql命令恢复
2.8.1)
create database dbname;
mysql -u user -p dbname <filename.sql
2.8.2)
create database dbname;
use dbname
source 绝对路径+文件名