1.备份原因:数据丢失或误删
目标:数据的一致性,服务的可用性
备份技术:物理备份/冷备份(直接复制数据库文件,拷贝数据,快,但是需要停止数据库)
逻辑备份/热备份:备份的是建库,建表,插入等操作所执行的SQL语言,适用于中小型数据库。(效率低,不需要停止数据库)
2.备份种类:完全备份
增量备份:一次完整备份,后面每次备份的是自上一次以来有变化的文件,备份的体积小,速度快。但是恢复时需要按照备份时间顺序,逐个备份版本进行恢复,恢复时间长。
差异备份:跳跃恢复,占用空间比增量备份大,比完整备份小。恢复时需要恢复第一个和最后一次的差异版本,恢复速度介于两者之间。
3.实战案例:去官方网址中找到percona-xtrabackup24版本,并用rz指令拷贝到虚拟机中。
同时在找到 mysql-community-libs-compat-y文件,并安装。(注:关闭防火墙和selinux)
完整备份:
最后登录mysql机器,看数据是否正常。
增量备份
想恢复第三周的数据,只需要将第三天的数据与第一天的数据合并,生成一个回滚合并文件。后面的操作同上。
差异备份操作:备份第三天的数据时在第一天的基础上进行备份,当数据发生损坏时,将第三天的数据与第一天的备份数据合并,即可得到完整数据。
4.使用mysql二进制文件进行数据恢复。
①:开启二进制文件: vim/etc/my.cnf
log_bin
server-id=2保存退出(重启mysqld)
此时查看数据库,/var/lib/mysql会发现有一个二进制文件。
②:备份 mysqldump -uroot -p“密码” 数据库名 >备份文件
示例:mysqldump -uroot -p “密码” --all-databases --single-transaction ——master-data=2 --flush-logs >/backup/`date +%F -%H` -mysql-all.sql(密码后面的代表①所有数据库②传输性③二进制日志④刷新)
备份完成之后用cat指令查看备份的文件,主要查看第二十二行的文字。
③还原(担心实验做不成功的可以先备份二进制文件)
此刻模拟数据库损坏,停止数据库,清空内容。(注:开启数据库,查询初始密码,之后配置与之前不同的密码)
mysql -uroot -p“改过之后的密码” < /backup/备份的二进制文件
登录发现数据都回来了,此刻刷新数据库(flush privileges;)退出登录,发现改过之后的密码用不了,密码为未改之前的。(注:数据库还原之后,密码也会还原为原来的)
灾难数据恢复:查看数据库中的二进制文件,会发现除了之前备份完成的二进制文件,有多出来了几个新的二进制文件,这几个文件就可以用作灾难数据恢复。备份完成之后,多插入几行数据,模拟灾难数据。
操作:mysqlbinlog 标记二进制文件(备份后多出的的均是) --start-position=154(刚看的备份的二进制文件的终点) |mysql -uroot -p“密码”
备份完成之后就会发现数据回来了。