mysql mariadb 备份恢复、主从

备份类型分为:
完全备份、增量备份、差异备份
热备、温备、冷备

逻辑备份、物理备份

每种类型区别:

增量备份:根据上一次备份的增量备份或完全备份备份
差异备份:根据上一次备份的完全
温备:备份过程中只支持读
备份备份
热备:备份过程中支持读写
冷备:停服务备份
逻辑备份:schema和数据存储在一起,巨大的sql语句、单个巨大的备份文件,恢复备份较慢。优点可以还原于任何数据库引擎中(当数据文件达到G级别不建议使用)。

物理备份:相当于直接复制数据文件、备份速度较快恢复也较快,但只支持还原于相同数据库引擎中。

备份工具:
    mysqldump:完全备份+备份2进制文件完成增量备份(热备是靠巨大的事务完成,数据量较大时速度慢,不建议使用) 逻辑备份。
    lvm2:使用lvm快照功能实现备份,缺点需要锁表后执行快照功能以实现备份  物理备份。
    xtrabackup:完全备份+增量备份,数据文件G级别以上建议使用此方法 物理备份。

    …还有很多。
任何备份方式均不能实现时间点还原,因此,如果需要基于时间点还原需要配合二进制日志文件执行。

这里只演示用mysqldump和xtrabackup实现备份以及还原。

mysql  mariadb  备份恢复、主从

这里可以看到我有一个名为hellodb的库,库里面有一张students表,我就备份此表好了

mysql  mariadb  备份恢复、主从

-E:备份指定库的事件调度器
-R:备份存储过程和存储函数
–triggers:备份触发器
–master-data=2:指定此事件记载的2进制文件开始位置,及哪个文件
–flush-log:滚动一下日志,以方便用二进制日志文件进行时间点还原

–single-transaction:mysqldump热备时需要执行此选项,备份是启用一个大的事务完成的备份(在常用的两种数据库引擎中,myisam仅支持温备,innodb支持热备)
–databases:指定备份哪一个数据库

还实际工作中,我们还应该备份一下数据库的配置文件

接着我们就可以看一下我们备份出来的数据了

mysql  mariadb  备份恢复、主从

这里箭头所指出很重要,指明了此次备份完成后,二进制文件的截止事件位置,可以看到是一个新文件,而且处于刚开始的位置,这也是我们之前为什么要执行–flush-log的原因了,到时候我们根据时间点还原,不用去从哪个文件中间重读一遍。(当然这一切得先开启二进制文件)

现在我们在去删几条数据

mysql  mariadb  备份恢复、主从

我已经删了stuid为20-25之间的,也确实少了,现在假设存放数据的磁盘损坏了,并且二进制日志我们保存在其他位置(我们单独将二进制文件复制出来。)

mysql  mariadb  备份恢复、主从

我删除了数据目录下的所有文件(二进制文件已经备份出来了哦~)

接着我们重启mariadb,并且恢复备份的数据

mysql  mariadb  备份恢复、主从

可以看到我们之前备份出来的确实已经还原了,但连我们之前删除的stuid为20-25的也恢复出来了,接着我们继续做时间点还原

mysql  mariadb  备份恢复、主从

–start-positon=245: 指明开始重读的时间,之前已经提过了

另外我是CP二进制日志文件出来再TMP目录下的,实际应用过程中记得把二进制文件和数据文件分磁盘放!!!!!!!!!(另外二进制文件实际上都是写sql语句,以后如果需要修改什么可以直接修改在恢复),mysqldump的增量备份只有靠备份二进制文件来完成,这里就不演示了,已经演示了二进制日志还原了,无非就是每天flush-log一次然后直接CP命令复制出来即可

接着来xtrabackup

xtrabackup 是percona公司开源的项目,并没有收录进epel源中,需要在官网自行下载 https://www.percona.com/

mysql  mariadb  备份恢复、主从

发现在centos7的epel源中有一个测试版本??? 不过我已经在官网下了并且安装上了,就不管他了。

接着把数据库恢复最先的状态

mysql  mariadb  备份恢复、主从

就在此状态下,我在此备份一次 

mysql  mariadb  备份恢复、主从

直接–databases指明备份哪个库,到哪个位置即可

mysql  mariadb  备份恢复、主从

最后我们看见completed ok!就代表成功了~ (另外这里提一句使用innobackupex,执行任何备份、恢复操作在结束处都应该见到complete ok,即代表成功

接着我们就在来改动一下并进行增量备份

mysql  mariadb  备份恢复、主从

新建了一张表,并且插入了两条数据,接着去进行增量备份吧

mysql  mariadb  备份恢复、主从

–incremental:指明这次增量备份

–incremental-basedir:指明以那一次为基础的增量


mysql  mariadb  备份恢复、主从

另外可以在备份出来的目录里面看见type 一个为FULL 一个为increment (并且xtrabackup是根据名为LSN的序列号进行增量备份的,可以看见上图两个备份是完全接上的

接着就可以去删数据目录了

mysql  mariadb  备份恢复、主从

先给完全备份进行事务的提交,这里只做了提交,因为我们后面还有增量备份,不一定需要回滚,说不定下个增量备份里面未提交的事务就已经提交了哟~ (另外此项操作其实可以不做,上问就提到过了xtrabackup属于物理备份,直接备份出来了文件,mariadb在启动时会自动进行事务的回滚和提交

接着需要把增量备份给他重建只完全备份上!

mysql  mariadb  备份恢复、主从

–incremental-dir:指明增量备份是哪一个,其他选项和上面介绍的一样

mysql  mariadb  备份恢复、主从

查看完全备份的checkpoints文件,可以看到最后记录的lsn号码已经是增量备份的了,接着可以拿去还原了~ 

在次提醒 以上所有操作 均需在末尾见到“complete ok” 即代表成功

mysql  mariadb  备份恢复、主从

–copy-back:代表还原,要注意的是指明的目录为完全备份的目录,并且同样要看到complete ok 

mysql  mariadb  备份恢复、主从

这里需要注意!! 在还原之前确定数据目录必须为空!!!否则还原报错, 还原过后注意权限是否正常,否则启动数据库报错!!!!

mysql  mariadb  备份恢复、主从

整个增量备份就是这样 ~ 完成了,另外如果需要进行时间点还原,仍然依赖二进制文件,步骤同上面的一样 就不演示了,至此备份恢复就到这

——————————————————————————————————————————————————————————————————————————————–

mysql主从

主服务器工作流程:

       主服务器的dump线程负责接收从服务器的二进制文件请求并发送给对方

从服务器工作流程

        从服务器的I/O线程负责向主服务器请求二进制文件,并记录与中继日志文件中

        从服务器的SQL线程负责读取中继文件中的sql语句,进行重放,以此达到数据同步的效果(上面备份的时候已经提到过了二进制文件记录的是所有sql语句,所以从服务器拿来过后进行重新运行一遍就OK了~

另外主从服务器的server id 不可重复,二进制文件中会标明serverid mysql的工作机制遇到同样的serverid 是不会进行重放的,以此避免循环复制

了解完这些过后配置就仅仅只有几步就可完成


主服务器启用二进制文件

标明serverid

提供一个有复制权限的账号


从服务器启用中继日志

标明serverid

使用有复制权限的账号

启动复制线程

mysql  mariadb  备份恢复、主从

主服务器my.cfg配置

mysql  mariadb  备份恢复、主从

从服务器my.cfg配置

接着就可以继续了,接着授权一个账号

grant replication client,replication slave on *.* to repli@192.168.20.105 identified by ‘111’;

只授予复制客户端和从服务器请求,并只给予105这个ip 因为我的从服务器是此IP

mysql  mariadb  备份恢复、主从

changemaster 指明从服务器是哪一个 其他选项挺好理解的。

master_log_file:指明从主服务哪个二进制文件开始同步

master_log_pos:指明从此文件哪个position开始同步

在主服务器授权完后使用 show master status 看一看,

mysql  mariadb  备份恢复、主从

启动线程变查看是否启动,接着我们就可以去主服务器创建数据库查看是否能同步了~至此主从也完了~

但是需要思考客户端进行写操作过后是否需要从服务器同步完成过后,在响应客户端,不然万一客户端进行读操作时被前端调度到了从服务器,从服务器还未同步,客户端访问之前提交的操作发现居然没有,这就很尴尬啊。

这个问题其实只需要装2个插件就能解决

semisync_master.so
semisync_slave.so
一个是主服务器安装,一个是从服务器安装,这里我是使用的yum安装,自行就有这两个插件

INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;

INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;

分别在主从上安装两个插件

mysql  mariadb  备份恢复、主从

安装完插件过后会看到变量中会多了几个参数,接着我们只需要分别在主从上把插件功能打开~如果需要设置等待的超时时长修改就可以了,记得先在从服务器停掉同步线程在进行

一切做完以后,我们可以查看具体同步进行的数据了~ 随便新建几个数据库

mysql  mariadb  备份恢复、主从

可以看到客户端有一个~ 平均同步时间875毫秒~ 同步总耗时3503,同步次数4次..等等~~~

双主也就是同时启用中继日志和二进制日志,并且同时指定对方为主服务器,就行了。但是双主会带来很多问题,例如自增长的字段混乱,如果恰好遇到同时插入使用了同样的自增号码,并且根本没有解决到写的负载。。等等等


原创文章,作者:N24_Ghost,如若转载,请注明出处:http://www.178linux.com/70324

(0)
上一篇 2017-03-01 13:59
下一篇 2017-03-01 23:18

相关推荐

  • 磁盘分区和文件系统管理

    磁盘分区 两种分区方式:MBR,GPT  MBR: Master Boot Record,1982年,使用32位表示扇区 数,分区不超过2T  如何分区:按柱面      0磁道0扇区:512bytes      446bytes: boo…

    Linux干货 2016-08-29
  • find命令详解

    find命令详解 实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找; 一、工作特性: 查找速度略慢; 精确查找,只查找文件路径的基名而非整个路径; 实时查找; 可能只搜索用户具备读取和执行权限的目录 二、 用法: find [查找起始路径] [OPTIONS] [查找条件] [处理动作] 查找起始路径:指定具体搜索目标起始路径;默认为当前目录…

    Linux干货 2017-03-19
  • 马哥教育网络班21期+第二周课程练习

    Linux上的文件管理类命令都有哪些?其常用的方法及其相关示例。     cp:将源文件或者目录复制到目标文件或者目录中。     mv:将文件或目录重新命名,或者将源文件从源目录移到目标目录中。     rm:删除指定的一个文件或者多个文件或者目录。       &n…

    Linux干货 2016-07-16
  • Centos7上利用corosync+pacemaker+crmsh构建高可用集群

    一、高可用集群框架 资源类型:     primitive(native):表示主资源     group:表示组资源,组资源里包含多个主资源     clone:表示克隆资源     master/…

    Linux干货 2016-05-29
  • 命令find应用

    作业:  查找/var目录下属主为root,且属组为mail的所有文件 [root@localhost bin]# find /var/ -user root -group mail     2. 查找/var目录下不属于root、lp、gdm的所有文件    [root@localhost bin…

    Linux干货 2016-08-22
  • Linux-文件系统挂载:mount的用法

     文件系统挂载  本章详细介绍文件系统挂载、卸载(mount,umount);  如何通过mount命令挂载使用文件系统、挂载常用参数、以及开机自动挂载(/etc/fstab)。    挂载描述:             挂载:将额外文件系…

    2017-06-19

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-07 11:01

    总结的很好,思路清晰,加油!