1.掌握数据库备份类型与方法 2.掌握MySQL完全备份恢复操作 3.掌握MySQL增量备份恢复操作
简介 随着自动化办公与电子商务的不断发展,企业对于信息系统的依赖性越来越高,而数据库在信息系统中担任着非常重要的角色,尤其一些对数据可靠性要求非常高行业,如银行,证券,电信等,如果发生意外宕机或数据丢失,其损失是非常严重的。为此数据库管理员必须针对具体的业务要求制定详细的数据库备份与灾难恢复的策略,并通过模拟故障对每种可能的情况进行严格的测试,从而保证数据的可靠性。 上一章我们已经学习了MySQL数据库的安装与基本操作,本章我们就以MySQL为例来学习数据库备份与恢复的相关知识,并掌握MySQL常见的备份与恢复的方法。
重点 掌握MySQL完全备份恢复操作 掌握MySQL增量备份恢复操作
数据库备份概念 备份的主要目的是灾难恢复,备份还可以测试应用,回滚数据修改,查询历史数据,审计等。之前已经学习过如何安装MySQL,本小节我们将从生产运维的角度了解备份恢复的分类与方法。
1.数据备份的重要性 在企业数据的价值至关重要,数据保障了企业业务的正常运行。因此,数据的安全性及数据的可靠性是运维的重中之重,任何数据的丢失都可能对企业产生严重的后果。通常情况下造成数据丢失的原因有如下几种: 程序错误 认为操作错误 运算错误 磁盘故障 灾难(如火灾,地震)和盗窃 2.数据库备份类型 冷备份:在数据库关闭状态下进行备份操作。 热备份:在数据库处于运行状态时进行备份操作,该备份方法依赖数据库 的日志文件。 温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作。 逻辑备份:对数据库或者表的逻辑结构进行备份 通过物理备份:硬盘配置RAID5,将mysql数据保存在RAID5分区上 完全备份:第一次配置数据库备份使用,备份速度慢,占用磁盘空间大 差异备份:做完完整备份后使用差异备份,差异备份之备份最新数据 增量备份:完整备份后使用增量,备份增量后修改的数据,备份速度快,占用空间小
MySQL数据库备份恢复 1.mysql数据库冷备份 1)停止mysql数据库服务 [root@Centos ~]# systemctl stop mysql 2)备份mysql数据库服务 [root@Centos ~]# tar zcf ./backup_mysql_$(date +%F).gz usr/local/mysql/data/ 3)进入data目录删除备份和恢复 [root@Centos ~]# tar zxvf backup_mysql_2020-10-05.gz -C / usr/local/mysql/data/ 2.,mysqldump备份恢复数据库中的表 1)备份benet数据库中的student表 2)恢复备份student表到benet数据库中 [root@Centos ~]# mysql -uroot -ppwd@123 benet < . /benet_student_2020-10-05.sql 3,备份多个数据库或者备份所有数据库 1)备份多个数据库数据,备份benet和accp数据库 [root@Centos ~]# mysqldump -uroot -ppwd@123 --database benet accp > ./backuo_database_accp_benet.sql 2)恢复误删除多个数据库数据 [root@Centos ~]# mysql -uroot -ppwd@123 < . /backuo_database_accp_benet.sql
3.备份所有数据库数据 [root@Centos ~]# mysqldump -uroot -pwd@123 --all -databases > b acko_all_database.sql 5. 二进制日志备份恢复数据 1)更新二进制日志 [root@Centos ~]# mysqladmin -uroot -ppwd@123 flush-log 2)查看二进制文件 [root@Centos ~]# mysqlbinlog mysql-bin.000007 3)从备份的二进制日志恢复数据 [root@Centos ~]# mysqlbinlog --no-defaults ./mysql-bin.000007 | mysql - uroot -ppwd@123 5.从二进制指定的ID或者时间恢复误删除数据 1)从二进制日志ID开始和结束范围恢复数据 [root@Centos ~]# mysqlbinlog --start-position=‘176’ --start-position=‘389’ ./mysql-bin.usr | mysql -uroot -ppwd@123 2)从二进制日志起始时间和结束时间恢复数据 [root@Centos~]#mysqlbinlog --start-datetime=‘2020-10-06 0:32:02’ – stop-datetime=‘2020-10-06 0:32:21’ ./mysql-bin.000008 | mysql -uroot -p pwd@123
