1.全量备份
全量数据就是数据库中所有的数据,全量备份就是把数据库中所有的数据进行备份。
备份所有库:
mysqldump -uroot -ppoldboy -S /data/3306/mysql.sock -F -B -A|gzip >/server/backup/mysqlbak_$(date+%F).sql.gz
备份一个库:
mysqldump -uroot -ppoldboy -S /data/3306/mysql.sock -F -B |gzip >/server/backup/mysqlbak_$(date+%F).sql.gz
2.增量备份
增量数据是从上次全量备份之后,更新的新数据。对于mysql来说,binlog日志就是msyql的增量数据。
3.企业场景,增量或者全量备份
1)中小公司,全量一般是每天一次,业务流量低谷执行全备,备份时会锁表。
2)单台数据库,如何增量。用rsync(配合定时任务频率大点或者inotify,主从复制)把所有binlog备份到远程服务器,尽量做主从复制。
3)大公司周备,每周六00点一次全量,下周日-下周六00点前都是增量。
优点:节省备份时间,减少备份压力。
缺点:增量的binlog文件副本太多,还原会很麻烦。
4)一主多从,会有一个从库做备份,延迟同步
1.迁移或者升级数据库时
2.增加从库
3.人为的DDL,DML语句,主从库没办法,所有库都会执行,此时需要备份
4.跨机房灾备,需要备份到异地
一般由人为或者程序误操作导致的变化,需要增量恢复,因为其他从库都进行了误操作。
4.重新刷新一个binlog日志:
mysqladmin -uroot -p'oldboy124' -S /data/3306/mysql.sock flush-logs
5.增量恢复小结
1)人为sql造成的误操作
2)全备和增量
3)恢复时建议对外停止更新
4) 恢复全量,然后把增量日志中由问题的sql删除,进行恢复
其核心思想
1)流程制度控制,防止问题发生,如果不做,面临服务和数据,鱼和熊掌不可兼得
2)延迟备份来解决。监控,黑名单,白名单机制。
3)业务需求容忍度,可量化的目标,选择停库,根据需求选择停库或者锁表或者容忍丢失部分数据。