mysql是一个关系型数据库管理系统,由瑞典Mysql AB公司开发,目前属于Oracle旗下的产品。Mysql是最流行的关系型数据库之一,在web应用方面,Mysql是最好的RDBMS(Relational Database Management System,关系型数据库管理系统)应用软件。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
自我感觉数据库的存亡代表了一个公司的命脉,数据库GG(game over)了哪一个公司估计也差不多了。所以数据的备份才尤其的重要。目前数据库的备份有三种;热备,冷备,温备。
按照方式划分的三种备份方式:
1.热备:在数据库可读可写的情况下进行备份,没有影响
2.冷备:在数据库停止的情况下进行备份
3.温备:在数据库不可写的情况下备份 #需要一个全局读锁来保持数据的一致性 。
备份形式又分为两种:物理备份和逻辑备份。
物理备份:直接复制数据文件
优点:无需额外的工具,直接拷贝恢复直接复制文件即可
缺点:与储存引擎有关,跨平台能力较弱
逻辑备份:从数据库中导出数据另存而进行的备份
优点:能使用编辑器处理,恢复简单,能基于网络恢复,有助于避免数据损坏
缺点:备份文件较大,备份较慢,无法保证浮点数的精度,使用逻辑备份数据回复后,还需要手动重建索引,十分消耗cpu资源。
数据的备份类型大致三种:1.完全备份#把整个数据库都备份一份 2.增量备份#只备份增加的某些数据 3.差异备份
经常用的备份方式有三种:一般是由某两种类型结合而成的。
1.mysqldump+binlog #完全备份加上增量备份
2.xtrabackup
3.lvm快照+增量备份
现在实现一个企业经常用备份方式,mysqldump+binlog!
实现这个备份需要吧二进制日志功能打开,在/etc/my.cnf文件内配置。
指定文件名(.log 后缀会省略 在/var/lib/mysql/下有个bin.000001)
mysqldump是mariadb自带的命令binlog是二进制备份方式,这可形成一个完整的备份。究竟怎么做呢,我们一起来看看
1.首先创建一个专门放日志备份的目录:#我会创建库表代表数据!
2.进行完全备份:#相关mysqldump命令可以mysqldump --help来查看
#mysqldump --all-database所有的库 --locak-all-tables锁表(防止写)
3.现在往数据库中插入数据,表示增量!show master status;查看Position值(此值也可以用作主从复制)
插入数据后的数值
4.指定开启二进制日志时指定的文件(每flush logs一次二进制日志重重新记录一个新的文件)所以现在是bin.000010这个文件,show master status;也会显示当前所使用的文件名。
#这时候差不多就完成了 !!!但是!!!一般情况,数据库是在使用中突然中断或服务关闭,当时你是不可能做备份的,所以上一次做备份的时间到数据库挂掉的时间内这段数据是没有备份的!现在插入数据在把数据库删掉,模拟情况。
因为数据库的内容都是在mysql/下以文件或目录形式存在的,直接把shuju这个数据库删掉,则shuju这个数据库也不存在了。
5.这个时候最重要的是保护没有备份的最后那些数据。(也就是上次增量备份完后来加的数据,二进制日志文件还是存在的)
首先show master status;#查看这时候的position值,之后执行mysqlbinlog命令从上次的436到这次查看的值备份。查看值的我就不截图了。
6.这时候在找一台没有数据的机器恢复所有的数据,也就完成了恢复数据。
没恢复数据之前
第一次插入的数据,第二次增量的数据和第三次增量的数据都恢复了。
二进制日志尤为重要,所以数据保护要看中二进制日志。
转载于:https://blog.51cto.com/13154101/2044251