首页 > 代码库 > 玩转mysql备份

玩转mysql备份

相关名词解释:
 全量: 全量数据就是数据库中所有的数据,全量备份就是把数据库中所有的数据进行备份。
 增量: 增量数据是从上次全量备份之后,更新的新数据。(binlog就是增量数据)
      譬如:上次全量备份时间是2017/01/02,那么之后产生的binlog日志就是增量数据(mysql-bin.000024)
 举例说明:
     相对于2017/01/02全量备份的增量是:
             从2017/01/02全量备份刷新binlog后开始到下次全量备份之前的binlog数据称为这次全量备份的增量数据
     结论: 周一的全量 加周一的增量就是周二的全量,因此周二全量有了,周一的全量和增量就没用了。
相关参数解释:
  -A   全部库
  -B   指定库
  -F   刷新binlog
  -S   备份远程库用
  -h   远程IP
  -p   远程端口
  -u   用户名
  -P   密码
  --lock-all-tables    锁全表
  --single-transaction 锁innodb表

对整个数据库进行备份:
  mysqldump -uroot -p123456 -S /var/lib/mysql/mysql.sock --events  -A --compact --default-character-set=utf8 -F |gzip  > mysql_all_$(date +%F).sql.gz
对数据库test进行一次全量备份:
  mysqldump -u root -p123456 -S /var/lib/mysql/mysql.sock --events --compact --default-character-set=utf8 -B test -F|gzip > mysql_test_$(date +%F).sql.gz
指定数据库备份:
  mysqldump -u root -p123456 -S /var/lib/mysql/mysql.sock --events --compact --default-character-set=utf8 -B test demo -F|gzip > mysql_test_$(date +%F).sql.gz
指定数据库中表备份:
  mysqldump -u root -p123456 -S /var/lib/mysql/mysql.sock --events --compact --default-character-set=utf8  test test_2 test_1  -F|gzip > mysql_test_$(date +%F).sql.gz

备份表结构:
  mysqldump -u root -p123456 -S /var/lib/mysql/mysql.sock --events --compact --default-character-set=utf8  -B test -d |gzip > mysql_test_$(date +%F).sql.gz
 
恢复备份:
scp ./mysql_test_2017-01-17.sql.gz root@192.168.11.16:/home/yeqing/
gunzip mysql_test_2017-01-17.sql.gz
或者 gzip -d mysql_test_2017-01-17.sql.gz
use test
set names utf8
source mysql_test_2017-01-17.sql
或者
mysql -uyeqing -p123456 < mysql_test_2017-01-17.sql

注意: 上述未加-A 或-B参数,就没有打开数据库语句: use database 所以,直接<导,不一定能成功。只能用source。

恢复增量(注意先恢复增量再恢复binglog)
mysqlbinlog mysql-bin.000010 > test.sql
mysql < test.sql

本文出自 “开发与运维” 博客,谢绝转载!

玩转mysql备份