1,导库命令:mysqldump -uroot -p dbname>bak.sql
-B参数:连接多个库,使用它可导出多个库,并且会导出创建db,use db等语句
-A参数:备份Mysql中所有的库
-- compact参数:去掉导出sql中的注释,减少输出,调试时方便使用
使用gzip对备份数据进行压缩 mysqldump -uroot -p dbname|gzip>bak.sql.gz
多库备份:mysqldump -uroot -p -B dbname1 [dbname2...]>bak.sql
分库备份:先构造出命令,再利用bash执行(不常用)
mysql -uroot -pPASS -e "show databases"|grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -pPASS -B \1|gzip>/opt/\1.sql.gz #g'|bash
2,导表命令:mysqldump -uroot -p dbname tname1 [tname2...]>bak.sql
只备份表结构:-d 参数
只备份数据:-t 参数
备份时锁表:-x
备份时锁表只读:-l
刷新binlog参数:-F
--master-data参数:
等于1时,在导出的文件中记录当前导出的数据在binlog中的哪个文件哪个位置,但语句是不注释的,恢复时需要手动除了恢复dump文件之外还需要从binlog中的记录位置进行增量恢复
等于2时,在导出的文件中记录当前导出的数据在binlog中的哪个文件哪个位置,语句是注释的,这样从库恢复时会自动从binlog中寻找位置增量恢复
innodb事务数据库备份参数:--single-transaction(锁表),推荐使用的生产备份命令
mysqldump -user=root -A -B --single-transaction --master-data=1 --events|gzip>BACKUP_TIMESTAMP.sql
3,source恢复数据
登录数据库后执行:source /path/bak.sql
show status 查看当前会话的数据库状态信息
show full processlist 查看正在执行的完整sql语句
show global status 查看整个数据库状态信息,可用作监控
show variables 查看数据库的参数信息
4,mysqlbinlog命令解析mysql binlog日志,导出sql
mysql-bin.index记录了所有的mysql的binlog文件
mysql binlog日志: 用来记录mysql内部增删改等对数据库有更新的内容,如:mysql-bin.000001(默认位置在/var/lib/mysql/)
mysqlbinlog mysql-bin.000001
查看修改的记录
从binlog中拆库(只查看某一个库的记录) : -d
mysqlbinlog -d dbname mysql-bin.000001>bak.sql
指定开始与结束位置恢复:
mysqlbinlog mysql-bin.000001 --start-position=123--stop-position=456 -r bak.sql
指定开始与结束时间恢复(但同一时间可能包括不想恢复的数据变更):
mysqlbinlog mysql-bin.000001 --start-datetime=‘2015-12-1200:00:00‘ --stop-datetime=’2015-12-13 00:00:00‘ -r bak.sql