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恢复的只有数据