首页 > 代码库 > 玩转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备份