mysql数据库主从备份
近期实验室总是不给通知的就停电,导致我们在不停的恢复服务。在某一个断电的过程中,发现我们的项目管理工具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数据库主从备份的更多相关文章
- mysql数据库主从同步
环境: Mater: CentOS7.1 5.5.52-MariaDB 192.168.108.133 Slave: CentOS7.1 5.5.52-MariaDB 192.168. ...
- mysql数据库主从同步读写分离(一)主从同步
1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做? 不往从服务器去写了 ...
- (转)Mysql数据库主从心得整理
Mysql数据库主从心得整理 原文:http://blog.sae.sina.com.cn/archives/4666 管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本 ...
- Linux下MySQL数据库主从同步配置
说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...
- MySQL数据库主从同步实战过程
Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...
- [转帖]mysql数据库主从配置
mysql数据库主从配置 https://www.toutiao.com/i6680489302947791371/ 多做实验 其实挺简单的 很多东西 要提高自信 去折腾. 架构与我 2019-04- ...
- 如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
- mysqldump常用于MySQL数据库逻辑备份
mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...
- MYSQL数据库增量备份
MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可.接下来是我参考了下网上的一些方法,自己写的,主要还是要能学到他的一些思路和方法. #fu ...
随机推荐
- ( ̄y▽ ̄)~ 智能手机II
( ̄y▽ ̄)~ 智能手机II TimeLimit: 3000/1000 MS (Java/Others) MenoryLimit: 32768/32768 K (Java/Others) 64-bi ...
- Set下面HashSet,TreeSet和LinkedHashSet的区别
Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false.Set判断两个对象相同不是使用==运算符,而是根据equals方法.也就是说,只要两个对象用eq ...
- MYSQL:SQL中Group By的使用
SQL中Group By的使用 1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By ...
- Centos6.4 NFS的安装与配置
NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件.通过使用N ...
- 用sqlyog远程连接LINUX系统的MYSQL出现错解决方法
无法给远程连接的用户权限问题.结果这样子操作mysql库,即可解决.在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%' ...
- WKWebView与Js交互
首先打开webstorm,将最下面h5拷贝到html中.然后导入工程 #define kMessageHandlerName @"mymobile" 1.创建配置类 - (WKWe ...
- 《JS权威指南学习总结--3.4null和undefined》
内容要点 一.相似性 var a= undefined; var b= null; if(a==b){ alert("相等"); ...
- Linux下开启nfs服务
1.什么是NFS(Network FileSystem) NFS 就是 Network FileSystem 的缩写,最早之前是由 Sun 所发展出来的.他最大的功能就是可以透过网络,让不同的机器.不 ...
- 定时执行.SH
crontab -l 看自定义定时列表 crontab -e 编辑 */10 * * * * /bak/bak.sh10分钟执行一次 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- Unity 的几种打包姿势(android)
Unity 版本 4.3.2 图片1 1 默认的工程进行打包 得到的apk为8.1m(net subset) 图片2 2 代码剥离最小 – use mirco mscorlib 图片3 3 从网上 ...