mysql主从_MySQL主从原理及配置详解
MySQL主从配置及原理,供大家参考,具体内容如下
一、环境选择:
1.Centos 6.5
2.MySQL 5.7
二、什么是MySQL主从复制
MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。
三、MySQL主从复制的类型
1.基于语句的复制
主服务器上面执行的语句在从服务器上面再执行一遍,在MySQL-3.23版本以后支持。
缺点:时间上可能不完全同步造成偏差,执行语句的用户也可能是不同一个用户。
2.基于行的复制
把主服务器上面改编后的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的,在MySQL-5.0版本以后引入。
缺点:比如一个工资表中有一万个用户,我们把每个用户的工资+1000,那么基于行的复制则要复制一万行的内容,由此造成的开销比较大,而基于语句的复制仅仅一条语句就可以了。
3.混合类型的复制
MySQL默认使用基于语句的复制,当基于语句的复制会引发问题的时候就会使用基于行的复制,MySQL会自动进行选择。
在MySQL主从复制架构中,读操作可以在所有的服务器上面进行,而写操作只能在主服务器上面进行。主从复制架构虽然给读操作提供了扩展,可如果写操作也比较多的话(多台从服务器还要从主服务器上面同步数据),单主模型的复制中主服务器势必会成为性能瓶颈。
四、原理
1.主从(master-slave)
主服务器上面的任何修改都会保存在二进制日志Binary log里面,从服务器上面启动一个I/O thread(实际上就是一个主服务器的客户端进程),连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log里面。从服务器上面开启一个SQL thread定时检查Realy log,如果发现有更改立即把更改的内容在本机上面执行一遍。
2.主从从(master-slave-slave)
一主多从的话,这时主库既要负责写又要负责为几个从库提供二进制日志。此时可以稍做调整,将二进制日志只给某一从,这一从再开启二进制日志并将自己的二进制日志再发给其它从。或者是干脆这个从不记录只负责将二进制日志转发给其它从,这样架构起来性能可能要好得多,而且数据之间的延时应该也稍微要好一些。
【注意】
1.在老版本的MySQL中,主从复制的slave段并不是由两个进程完成的,而是由一个进程完成的,之后就出现了很多风险和性能的相关问题。具体有以下问题:
1.一个进程会使复制bin-log日志和解析日志并在自身执行的过程成为一个串行的过程,性能受到了一定的限制,异步复制的延迟也会比较长。
2. Slave端从Master端获取bin-log过来之后,需要接着解析日志内容,然后在自身执行。在这个过程中,Master端可能又产生了大量变化并新增了大量的日志。如果在这个阶段Master端的存储出现了无法修复的错误,那么在这个阶段所产生的所有变更都将永远无法找回。如果在Slave端的压力比较大的时候,这个过程的时间可能会比较长。
五、MySQL主从复制的过程
1.两种情况:同步复制和异步复制,生产环境中大多数采用异步复制。
2. 复制的基本过程:
1.slave上面的I/O进程连接上master,并请求从指定文件的指定位置(或者从最开始的日志)之后的日志内容。
2.Master接收到来自Slave的IO进程的请求后,负责复制的IO进程会根据请求信息读取日志指定位置之后的日志信息,返回给Slave的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置。
3.Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”。
4.Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
六、配置:
1.首先明确两种情况:
1.两台相互独立的服务器或虚拟机。
2.两台通过模板创建的虚拟机。
2.下面对两台服务器进行命名,分别为:MySQL主服务器,MySQL从服务器。
3.主从服务器分别进行如下操作:
1.MySQL版本一致
2.初始化表
4.修改MySQL主服务器和MySQL从服务器:
vim /etc/my.cnf
[mysqld]
log-bin=取任意名称 //启用二进制日志
server-id=任意取数字 //服务器唯一ID,默认值是1,一般设置为IP地址的最后一段数字
5.若是第一种情况,直接重启两台服务器;若是第二种情况,还需将两台服务器的auto.cnf文件重命名为auto.cnf.bak,然后重启MySQL服务。
6.在MySQL主服务器上建立账户并授权slave
grant replication slave on *.* to '用户名'@'%' identified by '任意密码';
7.查询MySQL主服务器的状态
show master status;
8.配置MySQL从服务器
change master to
master_host='MySQL主服务器IP地址',
master_user='之前在MySQL主服务器上面创建的用户名',
master_password='之前创建的密码',
master_log_file='MySQL主服务器状态中的二进制文件名',
master_log_pos='MySQL主服务器状态中的position值';
9.启用slave
start slave;
10.查看MySQL从服务器的状态
show slave status\G
查看
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
全变YES说明主从配置成功,当MySQL主服务器有更新变化时,从服务器会根据具体配置做相应的同步。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
mysql主从_MySQL主从原理及配置详解相关推荐
- 第25节 IPsec虚拟专网工作原理与配置详解
IPsecVPN目录 1 加密技术概述 2 虚拟专网(VPN)概述 3 虚拟专网(VPN)分类 3.1 远程访问VPN 3.2 点到点VPN 4 IPsecVPN技术 4.1 IPsecVPN概述 4 ...
- Spring MVC原理及配置详解
转载自 http://blog.csdn.net/jianyuerensheng/article/details/51258942 [Spring]Spring MVC原理及配置 1.Spring M ...
- 【Spring】Spring MVC原理及配置详解
[Spring]Spring MVC原理及配置 1.Spring MVC概述: Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO ...
- 组合索引mysql语句_Mysql之组合索引方法详解
对于任何DBMS,索引都是进行优化的最主要的因素.对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降. 如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅 ...
- AAA的原理与配置详解
AAA的原理与配置 AAA是Authentication(认证).Authorization(授权)和Accounting(计费)的简称,提供了在NAS(Network Access Server,网 ...
- 高性能Mysql主从架构的复制原理及配置详解
1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- Mysql学习总结(18)——Mysql主从架构的复制原理及配置详解
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- mysql 半同步 原理_MySQL半同步复制原理与配置详解
一 .异步.同步和半同步复制概念 异步复制(Asynchronous replication),MySQL默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已 ...
- mysql双机配置_mysql 双机热备配置详解
花了大半天的时间研究mysql 5.0.* ,参考了很多文档,总算将mysql的双机热备给搞定了.心情很好,写个文章纪念一下.因为以后还可能实际用到,所以也作以下笔记. 使用两台虚拟机,nod1和no ...
最新文章
- c++多线程并发执行
- OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)
- SCOM 2012系列⑨单台服务器拓扑监控
- BZOJ1787: [Ahoi2008]Meet 紧急集合
- 《研磨设计模式》chap12 观察者模式observer(3)例子
- mphil in engineering最后颁发的学位是
- 小程序的 rpx布局问题
- eclipse不格式化注释
- Python+pyqt4 山寨美图秀秀的美肤功能
- 前端工程化——脚手架及自动化构建
- 中国量子计算机的运算速度是,中国量子计算机问世,运算速度碾压顶级超算,美国:时代变了...
- 中国制霸生成器火了/ 马斯克香水被炒至原价10倍/ 闽南话翻英语算法来了… 今日更多新鲜事在此...
- 原生js获取本地ip地址(自己用)
- 不能完成此操作, 因为发生意外错误(错误代码-51)
- android系列:第一篇 android开发常用命令集合,代码目录简介
- html图片视频渲染原理,初识浏览器渲染原理和CSS动画
- 控件 UIView UILabel UITextField UITextView UIButton ;的字体、大小、单位、颜色
- 相量法matlab仿真编程,电力系统的MATLAB/SIMULINK仿真与应用 王晶,翁国庆,张有兵著 西安电子科技大学出版社 9787560620...
- IAP15F2K61S2单片机引脚图
- 将amr格式的文件转码成mp3格式存储在自己服务器上的解决方案
热门文章
- PowerShell与活动目录
- 2015 CALLED THE INTERFACE OF 2014
- 给你的Mr.Right画张择偶地图像
- EF架构~了解一下,ADO.NET Entity Framework
- leetcode 724. 寻找数组的中心索引
- leetcode1319. 连通网络的操作次数(并查集)
- leetcode1052. 爱生气的书店老板(滑动窗口)
- leetcode1162. 地图分析(bfs)
- 播客#45:迪伦·以色列
- chrome麦克风权限_如何在Chrome扩展程序中处理麦克风输入权限和语音识别