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
2.8.2)
create database dbname;
use dbname
source 绝对路径+文件名