数据的重要性不言而喻,能影响到数据的事件很少,比如数据库宕机,磁盘损坏等,但是一旦出现,就是损失严重的事件

如何做到数据的备份从而将损失降到最低

简单且安全的做数据备份和恢复

就是利用数据库的全量备份,全量备份的命令如下

$mysqldump -uroot -p test > test.sql

备份出一个SQL文件,内置了创建库 表 数据等操作

但是全量备份的代价很高,因为会占用大量的资源

所以外加上增量备份,相比较于全量备份,增量备份每次只备份相较于上一次备份变化的部分数据,备份速度更快

MySQL还有着Binlog,实时的增量备份,BinLog中记录的就是MySQL数据库的操作日志,我们就用Binlog进行备份和恢复

首先是使用binlog进行备份的恢复

我们先试用show variables like ‘%log_bin%’ 来确认是否开启了binlog功能

然后可以看到是否开启了Binlog以及Binlog的文件位置

接下来我们可以执行binlog的恢复

我们首先执行一次全量的恢复

$mysql -uroot test < dump.sql

然后利用binlog进行数据的恢复

$mysqlbinlog –start-datetime “2020-02-20 00:00:00” –stop-datetime “2020-02-20 15:09:00” /usr/local/var/mysql/binlog.000001 | mysql -uroot

这就可以做到任意的恢复工作了

但是需要注意,不要将所有的鸡蛋放在同一个篮子中,无论是全量备份还是Binlog,都不能直接放在一个服务器上

回放BinLog时候,指定的范围可以尽量的大一些

后来就是多机房的MySQL HA,实现高可用

全量备份加上BInlog,可以保证数据的恢复,但是数据库宕机时间长了,会导致系统崩溃

所以我们完全可以搭建一个高可用的系统,做一个一主一备,在主备数据库之间进行同步的Binlog,主库做了一次数据变更,生成一条BinLog,然后同步到从库,一旦主库宕机,立刻切换到备用库上继续提供服务

MySQL自身提供了主从复制的能力,可以让一主一备两台MYSQL的数据库保持同步

但是主从复制是具有延迟,虽然可能是毫秒级的,但是一旦繁忙了,就会很明显

万一切换的时候,主从延迟很大,可能导致数据丢失,这种切换带来的数据丢失是不可逆的

所以如果不想丢数据,需要从库先同步完成数据,再进行读写,但是会有不可用时间,如果想要无延迟,就需要我们直接切换到从库,可能丢数据

或者更高一主多从,将主库设置为主要成功复制到一个从库就可以,那么肯定有一个从库的数据是一致的,可以即将这个库作为新主库,继续提供服务,但我们需要三台数据服务器来组成集群

图片

发表评论

邮箱地址不会被公开。 必填项已用*标注