近期实验室总是不给通知的就停电,导致我们在不停的恢复服务。在某一个断电的过程中,发现我们的项目管理工具redmine的硬盘挂掉了。。因为是部署在虚拟机上的,也没做冗余,数据就丢了。。于是反思,我们的mysql也是部署在虚拟机上,如果这次坏掉的是我们的mysql怎么办?

然后,然后就有了这篇文章。

数据的备份一般分为三种:

  • 热备
  • 冷备
  • 温备

热备顾名思义,是在不停机的时候备份数据库。冷备是在数据库停止的情况下备份数据库,这种备份最为简单,一般只需要复制相关的数据库物理文件即可。温备同样是数据库运行中进行的,但是会对当前数据库的操作有所影响。

按照备份后文件的内容,备份可以分为:

  • 逻辑备份
  • 裸文件备份

逻辑备份是指备份出的文件是可读的,一般是文本文件。内容一般是一条条SQL语句。如使用mysqldump和SELECT*INTO OUTFILE。这种方式好处就是可见呗,坏处就是由于是sql语句,同时执行大量的sql语句恢复的时间可想而知。。。裸文件备份是指复制数据库的物理文件。

按照备份数据库的内容来分的话,备份又可以分为:

  • 完全备份
  • 增量备份
  • 日志备份

对于mysql来说,官方并没有提供真正增量备份的方法,大部分是通过二进制日志完成增量备份的工作。

我们这里就选用的是日志备份来实现主从分离的。

这里需要一个主mysql和至少一个从mysql。如下图所示:

复制的原理就是分了三部而已:

1.master把数据更改纪录到二进制日志(binlog)中。[mysql启动时候需要加入相关参数;binlog二进制文件纪录了对Mysql数据库执行更改的所有操作,但一般不包括select和show这类操作]
2.slave把主服务器的二进制文件复制到自己的中继(relay log)中。
3.slave重做中继日志中的日志,把更改应用到自己的数据库上。

具体的过程其实也并不复杂:

在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。

1. Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
2. Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave 端的 IO 线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在 Master 端的 Binary Log 文件的名称以及在 Binary Log 中的位置;
3. Slave 的 IO 线程接收到信息后,将接收到的日志内容依次写入到 Slave 端的Relay Log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master- info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”
4. Slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 Master 端真实执行时候的那些可执行的 Query 语句,并在自身执行这些 Query。这样,实际上就是在 Master 端和 Slave 端执行了同样的 Query,所以两端的数据是完全一样的

需要注意的一点是,这里的同步其实还是异步的。所以并不是完全实时的,还是存在 Slave 数据延时以及数据丢失的可能性的。

怎么解决这个问题,貌似实要用cluster来解决,等有时间再研究吧。

mysql数据库主从备份的更多相关文章

  1. mysql数据库主从同步

    环境: Mater:   CentOS7.1  5.5.52-MariaDB  192.168.108.133 Slave:   CentOS7.1  5.5.52-MariaDB  192.168. ...

  2. mysql数据库主从同步读写分离(一)主从同步

    1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做?  不往从服务器去写了 ...

  3. (转)Mysql数据库主从心得整理

    Mysql数据库主从心得整理 原文:http://blog.sae.sina.com.cn/archives/4666 管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本 ...

  4. Linux下MySQL数据库主从同步配置

    说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...

  5. MySQL数据库主从同步实战过程

       Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...

  6. [转帖]mysql数据库主从配置

    mysql数据库主从配置 https://www.toutiao.com/i6680489302947791371/ 多做实验 其实挺简单的 很多东西 要提高自信 去折腾. 架构与我 2019-04- ...

  7. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

  8. mysqldump常用于MySQL数据库逻辑备份

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  9. MYSQL数据库增量备份

    MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可.接下来是我参考了下网上的一些方法,自己写的,主要还是要能学到他的一些思路和方法. #fu ...

随机推荐

  1. php练习1

    <?php$conn=mysqli_init();if(!conn){ echo "mysqli_init error"; exit(0);}$ret=mysqli_real ...

  2. Session和Cookie的使用总结

    Session和Cookie的使用总结: Session和cookie都是asp.Net中的内置对象,至于他们有什么区别,在这里就不在多说,现在来说说一些比较实用点的东西: 我们知道网站都有一个后台管 ...

  3. ASP.NET之.NET FrameWork框架

    .NET FrameWork框架 是一套应用程序开发框架,主要目的提供一个开发模型. 主要的两个组件: 公共语言运行时(Common Language Runtime)(CLR): 提供内存管理.线 ...

  4. U盘做svn版本控制

    svn提供的访问方式有: file:///本地路径/to/svnrepo/ //访问本地磁盘 http://host/to/svnrepo/ //通过配置subversion的apache服务器的we ...

  5. [NPOI2.0] 使用NPOI读取和导出Excel文件

    先来说下一直使用的 Microsoft.Office.Interop.Excel ,在系统正式使用时遇到的问题 1:Excel读取数据BUG 由于使用Microsoft.Office.Interop. ...

  6. C语言_error_MSB8031

    关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法 Visual Studio 2013 编译旧的 mul ...

  7. MFC通过ODBC连接Mysql程序

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 MFC通过ODBC连接 ...

  8. js 第一天

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  9. Linux中ls命令详解

    ls命令是linux下最常用的命令之一,ls跟dos下的dir命令是一样的都是用来列出目录下的文件,下面我们就来一起看看ls的用法 英文全名:List即列表的意思,当我们学习某种东西的时候要做到知其所 ...

  10. nefu 943 黑屏

    Description Veda 在用宽高比为a:b的显示器看一部宽高比为c:d的电影.在使用全屏模式看电影时,如果这个比例不相同,那么在显示器上就会出现了一些没有画面的地方,我们暂且称之为“黑屏”( ...