一、mysqldump逻辑备份的工作原理
利用mysqldump命令备份数据的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或生成备份的文件的过程。mysqldump是逻辑备份;
二、Mysql数据库的备份与恢复
1、备份:mysqldump -u 用户名 -p 密码 数据库名 >备份的文件名
举例:#>mysqldump -u 用户名 -p 密码 数据库名 >/opt/mysql_bak.sql
查看:#>egrep -v "#|\*|--|~$" /opt/mysql_bak.sql
查看字符:#>mysql -u 用户名 -p 密码 -e "show variables like '%character%'";
指定字符集备份:#>mysqldump -uroot -p密码 --default-character-set=latinl 数据库 >myslq_bak.sql
恢复:#>mysql -u 用户名 -p 密码 数据库 <mysql_bak.sql
2、备份:#>mysqldump -u 用户名 -p 密码 -B 数据库名 >/opt/mysql_bak_B.sql
加-B选项:创建库的语句,切换库的语句都备份
恢复:#>mysql -u 用户名 -p 密码 数据库 <mysql_bak_B.sql
3、优化备份文件大小减小输出(适合debug调试)
备份:#>mysqldump -u 用户名 -p 密码 --compact -B 数据库名 >/opt/mysql_bak_B_com.sql
4、指定压缩命令备份:#>mysqldump -u 用户名 -p 密码 -B 数据库名|gzip >/opt/mysql_bak_B_gzip.sql.gz
5、多个数据库备份:#>mysqldump -u 用户名 -p 密码 -B 数据库名 数据库名A|gzip >/opt/mysql_bak_B_gzip.sql.gz
-B:表示连接多个库,并且增加use,db和create database的信息。
6、多库备份
备份多个数据库1:#>mysql -uroot -p密码 -e "show databases;"|grep -Evi "database|infor|perfor"|sed 's#mysqldump -uroot -p密码 -B#g'
备份多个数据库2:#>mysql -uroot -p密码 -e "show databases;"|grep -Evi "database|infor|perfor"|sed -r 's#~([a-z].*$)#mysqldump -uroot -p密码 --events -B \1|gzip >/opt/\1.sql.gz#g'|bash
汇总:导出数据用-B,压缩|gzip。
见分库分表备份视频:http://edu.51cto.com/course/course_id-808.html;
三、mysql单多表的备份实战及脚本批量备份
1、语法:mysqldump -uroot -p 密码 数据库名 表名>备份的文件名
2、循环备份:http://edu.51cto.com/course/course_id-808.html;
四、只备份MySQL表结构及只备份MySQL数据
1、备份表结构:#>mysqldump -uroot -p密码 --compact -d 数据库名 表名> 文件名.sql
2、备份表数据:#>mysqldump -uroot -p密码 --compact -t 数据库名 表名> 文件名.sql
3、数据库结构:#>mysqldump -uroot -p密码 -d --add-drop-table 数据库名 > 文件名.sql
如果只希望导出数据用-t;
4、备份所有:#>mysqldump -uroot -p密码 -A -B--events|gzip >/opt/a.sql.gz
5、切割日志备份:#>mysqldump -uroot -p密码 -A -B -F --events|gzip >/opt/a.sql.gz
刷新binlog参数:-F;master-data=1找到binlog位置,找点(master-data=1有这个参数如同刷新-F)
#>mysqldump -uroot -p密码 --master-data=1 --compact 数据库名
五、mysqldump参数说明
1、-B指定多个库,增加建库语句和use语句。
2、--compact去掉注释,适合调试输出,生产不用。
3、-A备份所有库。
4、-F刷新binlog日志。
6、-x,--lock-all-tables 锁表,防止数据不一致。
7、-l,--lock-all,只读表。
8、-d只备份表结构。
9、-t只备份数据。




