备份工具-mysqldump用法

mysqldump工具备份


导出的是sql语句文件


mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。转储包含创建表和/或装载表的SQL语句。


如果你在服务器上进行备份,并且表均为MyISAM表,应考虑使用mysqlhotcopy,因为可以更快地进行备份和恢复

mysqldump导出的是文本文件


mysqldump --help 查看帮助

Dumping structure and contents of MySQL databases and tables.

Usage: mysqldump [OPTIONS] database [tables]

OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

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


提供三种级别的备份,表级,库级(Schema)和全库级


shell> mysqldump [options] db_name [tables]


shell> mysqldump [options] ---database DB1 [DB2 DB3...]


shell> mysqldump [options] --all--database

http://www.jb51.net/list/list_112_1.htm




备份过程:

导出全库:

mysqldump -q --single-transaction -A > all.sql


某几个数据库

mysqldump -q --single-transaction -B test1 test2 > test1_test2.sql


某几张表

mysqldump -q --single-transaction -B test1 test2 > test1_test2.sql


只导出表结构

mysqldump -q -d --skip-triggers


只要导出数据:

mysqldump -q --single-transaction --skip-triggers -t


想在线建立一台新的slave,

mysqldump -q --single-transaction --master-data=2 -A >all.sql


只需要导出存储过程

mysqldump -q -Rtdn --skip-triggers


只要导出触发器:

mysqldump -q -tdn --skip-triggers


只要导事件:

mysqldump -q -Etdn --skip-triggers



恢复过程:

mysql -root -p456 < all.sql

或 SQL>source all.sql


================================================================

表级:

备份一个表

[root@li ~]# /usr/local/mysql/bin/mysqldump -p123 source emp> /emp.sql


备份db1库下的t1,t2多个表

mysqldump -uroot -r db1 t1 t2 > t1.sql


备份db1库的t1表,为逗号分隔符的文本,到指定路径/tmp,加参数 -T

mysqldump -uroot -p -T /tmp db1 t1 --fields-terminated-by ','

/tmp下生成了2个文件t1.sql,t1.txt

# cat /tmp/t1.txt 

a,1

b,2


表级恢复:

写法一:[root@li ~]# /usr/local/mysql/bin/mysql -p123 source < /emp.sql     

写法二:[root@li ~]# /usr/local/mysql/bin/mysql -p123 -e 'source /emp.sql' source


================================================================

库级:

[root@li ~]# /usr/local/mysql/bin/mysqldump -p123 --database source > /source.sql

指定某几个数据库

mysqldump -uroot -p --databases db1 db2 > db12.sql


库级恢复:

[root@li ~]# /usr/local/mysql/bin/mysql -p123  < /source.sql 

如果库不存在,要自己手工创建

================================================================


全库级:

[root@li ~]# /usr/local/mysql/bin/mysqldump -p123 --all-database > /all.sql


vim /all.sql  可以看到,全是create和insert数据的sql语句


全库恢复演示: --注意mysqldump的恢复速度较慢,所以数据太大需要的时间较长

rm /data/*  -rf

rm /data07/* -rf     --前面做了innodb的实验,innodb表的数据在这里,所以也要删除掉


恢复步骤:

1,初始化 /usr/local/mysql/bin/mysql_install_db --datadir=/data --user=mysql

2,把数据库先启起来

3,恢复# /usr/local/mysql/bin/mysql < /tmp/mysqlbackup/all.sql 


--注意,这样恢复完后,密码还是为空,因为是误删了所有数据(包括权限表),重新初始化回的权限表,而mysqldump恢复的只有数据




你可能感兴趣的:(备份,MysqlDump,用法)