mysql主从同步原理_mysql主从同步以及原理

mysql主从复制介绍

当前的生产工作中,大多数应用的mysql主从同步都是异步的复制方式,即不是严格实时的数据同步。

实时和异步:

同步复制: 指的是客户端连接到MySQL主服务器写入一段数据,MySQL主服务器同步给MySQL从服务器需要等待从服务器发出同步完成的响应才返回客户端OK, 这其中等待同步的过程是阻塞的, 如果有N台从服务器, 效率极低

异步复制: 指的是客户端连接到MySQL主服务器写入一段数据,MySQL主服务器将写入的数据发送给MySQL从服务器, 然后直接返回客户端OK, 可能从服务器的数据会和主服务不一致

半同步复制:指的是客户端连接到MySQL主服务器写入一段数据,MySQL主服务器只将数据同步复制给其中一台从服务器, 半同步复制给其他的从服务器, 来达到其中一台从服务器完全同步的效果

主从复制原理:

b865b71a33ae3b1930e837deb69161ba.png

从库需要两个线程完成,一个叫做I/O线程,一个叫做sql线程

主库需要一个线程叫做I/O线程

主库必须要开启binlog日志才能完成主从同步,当用户请求到主的库里面,会将增删改的东西记录到binlog日志里面,主从复制是从库去找主库的,建立时,我们在从库上使用change master指定master的ip,端口,二进制文件名称,pos,master的密码等信息。并在从库上开启start  slave就会开启同步。

开启同步后,先是从向主发起请求。然后主库进行验证从库是否正常,验证之后,主库就会给从库按照信息发送日志,从库上存放日志的地方叫做中继日志(relay log),其实从库里面还有一个master info信息,这个里面记录的是change master的信息,每一次取日志回来都会对从库的master  info信息进行更新,接下来从库根据master  info的binlog信息去主库在取跟新的binlog信息,

放到中继日志里面,我们如何进行更新?

当主将binlog发送过来放到中继日志里面的时候,sql线程就会语句经过转换写到从库里面。

注意

1.开启binlog日志

2.change master(在从库上)

3.在从库开启start slave之前。这两个库的数据必须是一样的,所以讲主库的数据进行备份使用master-data=1,会记录位置的。然后从库会指定从主库备份里面找备份点。

4.要在开关之前建立专门用于主从同步的账号

5.从库打开开关的过程,其实就是打来从库两个线程的过程

6.start slave

主库返回的除了binlog日志内容外,还有本次返回日志内容后在Master服务器端的新的binlog文件名称以及在binlog中的下一个指定更新的位置。这个位置会保存在从库的master info里面。

>flush tables  with read  lock;在主库上执行加上读锁

然后另开一个窗口,连接到主mysql

>show master  status;  查看主库的binlog以及pos值。

下来是备份主库数据,将备份数据在从库上执行。目的就是让从库和主库的数据一样。

从库将主库的备份数据导入完了以后要将锁打来:

>unlocks  tables;

然后在从库上执行change  master语句。这些信息会记录在从库的master.info的信息中;(如果你备份的时候指定master-data=1)

最后一步开启start  slave;

查看是否成功使用show slave  status; 查看两个进程是否为yes。

从库里面的relay-log.info:记录sql线程从中继里面读取到的日志。

描述mysql主从复制原理

自己总结:从库的io线程会实时依据master.info信息的去主库的binlog日志里面读取更新的内容,将更新的内容取回到自己的中继日志中,同时会更新master.info信息,此时sql线程实时会从中继日志中读取并执行里面的sql语句。

描述mysql主从同步部署

自己总结:

1.将主库的数据备份,备份的时候时候master-data=1指定。然后在从库上将备份数据导入

2.在主库上给开启主库的bin-log功能,以及service-id

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_account'@'10.121.0.220' identified by '123456'

这句的意思是,允许从服务器'10.121.0.220 '使用'slave-account'及'123456'这个帐号密码对对主服务器的所有数据库(*.*)进行主从复制('REPLICATION SLAVE').

3.在主库上执行flush  tables  with  relay  locks; 读写锁。然后领开启一个窗口

4.然后只从库上执行change master   里面指定刚才创建的用户以及密码

5.执行start  slave;

6.show slave  status;看看两个线程是否启动

7.在主库上解锁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql不兼容_mysql5.7 不兼容问题

通过navicat工具导入psc数据库备份文件,报错如下,mysql版本5.7执行如下语句不通过DROP TABLE IF EXISTS guard_user;CREATE TABLE guard_user (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 操作员编号,login_account varchar(16) NOT NULL …

MSSQL 如何采用sql语句 获取建表字段说明、字段备注、字段类型、字段长度

转自: http://www.maomao365.com/?p4983 <span style"color:red;font-weight:bold;">下文讲述-采用sql脚本获取指定表中所有列对应的说明信息,脚本如下所示:</span> SELECT (case when a.colorder1 then d.name else end) [数据表名称], a.colorder […

oracle 时间加减

sysdate1 加一天sysdate1/24 加1小时sysdate1/(24*60) 加1分钟sysdate1/(24*60*60) 加1秒钟类推至毫秒0.001秒加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char…

mysql数据库层次结构_MySQL逻辑分层介绍

上一篇文章主要介绍了MySQL在Ubuntu18.04系统上的安装&#xff0c;以及安装过程中可能会遇到的一些问题的解决方案。在这篇文章里&#xff0c;开始介绍MySQL数据库的逻辑分层。通过本文的介绍&#xff0c;可以大致了解到MySQL的语句从客户端发出请求后&#xff0c;在服务器经历…

嵌入式 Linux 的分类

http://blog.csdn.net/lu_embedded/article/details/60469851 由于 Linux 所具备的开源、稳定、高效、易裁剪、硬件支持广泛等优点&#xff0c;使得它在嵌入式系统领域最近十几年内迅速崛起。目前嵌入式 Linux 系统开发已经开辟了很大的市场&#xff0c;同时也开发出很多成型的…

dnf台服升级mysql_MySQL Yum存储库 安装、升级、集群

添加MySQL Yum存储库首先&#xff0c;将MySQL Yum存储库添加到系统的存储库列表中。按着这些次序&#xff1a;选择并下载适用于您的平台的发行包。使用以下命令安装下载的发行包&#xff0c;替换platform-and-version-specific-package-name为下载的包的名称&#xff1a;例如&a…

MyIfmHttpClient

package com.yd.ifm.client.caller.util.http;import java.util.Map;import com.yd.ifm.client.caller.model.ResponseData; import com.yd.ifm.client.caller.util.http.HttpEnum.ContentTypeEnum;public interface IfmHttpClient {/*** 发送post数据* 200为正常的业务数据&am…

python 只去除英文_如何使用 Python 制作词云(Word Cloud)-英文词云篇

wordcloud 安装报错与解决虽然网络上也有各种工具可以一键生成词云&#xff0c;但是使用Python制作词云感觉是一件很酷的事情。作为一个 Python 小白&#xff0c;使用 Python 的过程并不那么轻松。比如最最基础的&#xff0c;用Python 制作词云需要安装第三方库 wordcloud&…

坑爹的水题之“元芳你怎么看”

题目大意&#xff1a; 一些人分银子&#xff0c;如果每个人分x两&#xff0c;那么还有y两分不出去&#xff1b;如果每个人分i 两的话那么还差 j 两银子。问你输入x&#xff0c;y&#xff0c;i&#xff0c;j 四个整数&#xff0c;能否成立。 解题思路&#xff1a; 啥叫思路&…

mysql 查看trige_mysql查看所有存储过程,函数,视图,触发器,表

查询数据库中的存储过程和函数方法一&#xff1a;select name from mysql.proc where db your_db_name and type PROCEDURE //存储过程select name from mysql.proc where db your_db_name and type FUNCTION //函数方法二&#xff1a;show procedure status; //存储过…

centos7 卸载 gitlab

标黑的就是关键命令&#xff0c;先停止gitlab服务&#xff0c;然后rpm -e卸载&#xff0c;然后查看剩余gitlab进程&#xff0c;然后杀死主进程&#xff0c;然后删除所有相关目录 1 [liuyxMiWiFi-R3L-srv ~]$ sudo gitlab-ctl stop2 [sudo] password for liuyx: 3 liuyx 不在 su…

webstrom中打包的详细_webpack打包体积优化

webpackwebpack打包体积优化webpack官方定义webpack 是一个模块打包器。webpack 的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。…

201621123003《Java程序设计》第一周学习总结

#1. 本周学习总结 本周主要学习了Java的jdk、jvm、jre等基本概念&#xff0c;Java的发展史&#xff0c;知道Java语言的跨平台、面向对象等主要特点&#xff0c;简单了解了Java程序的编译和运行过程。对于学习Java&#xff0c;我的学习和编程能力还是很吃力的&#xff0c;但还是…

mysql jar jdk1.6_Windows下JDK1.6+MySQL+MyEclipse开发环境的配置

1. 安装JDK&#xff0c;放在E盘 “E:\JDK6”,第二个JRE默认路径安装&#xff1b;2. 设置环境变量 (系统变量)&#xff1a;(1)创建JAVA_HOME E:\JDK6(2)Path ;%JAVA_HOME%\bin(3)新建CLASSES .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar3. 安装MyEclipse&#xff0c…

SpringMvc三大组件详解

SpringMvc框架结构图 处理器映射器&#xff1a;用户请求路径到Controller方法的映射处理器适配器&#xff1a;根据handler(controlelr类&#xff09;的开发方式&#xff08;注解开发/其他开发&#xff09; 方式的不同区寻找不同的处理器适配器视图解析器&#xff1a;根据handl…

MySQL笔记创建表结构_MySQL表结构笔记9

本篇大纲MySQL数据表创建表创建主键AUTO_INCREATE指定默认值更新表结构删除表&#xff0c;重命名表01&#xff1a;表MySQL 数据库的表是一个二维表&#xff0c;由一个或多个数据列构成每个数据列都有它的特定类型&#xff0c;该类型决定了MySQL如何看待该列数据02&#xff1a;创…

ubuntu 转mysql_(转)Ubuntu 16.04下安装MySQL

转自&#xff1a;https://www.linuxidc.com/Linux/2017-06/144805.htm首先执行下面三条命令&#xff1a;sudo apt-get install mysql-serversudo apt-get install mysql-clientsudo apt-get install libmysqlclient-dev安装成功后可以通过下面的命令测试是否安装成功&#xff1…

在Github和oschina上搭建自己的博客网站

在Github上搭建 - 参考链接 搭建一个免费的&#xff0c;无限流量的Blog----github Pages和Jekyll入门 GitHub Jekyll 搭建并美化个人网站 用Jekyll搭建的Github Pages个人博客 在oschina上搭建 - 参考链接 免费个人博客搭建教程详解&#xff1a;HexoOSChina Hexo使用指南 hexo…

python 大智慧股池_跟我从零开始学会大智慧股票池自动交易

自从上次发表关于自动交易系列教程后&#xff0c;很多朋友对自动交易产生了极大兴趣&#xff0c;然而还有很多朋友因为没接触过股票池和自动交易&#xff0c;相对比较陌生&#xff0c;希望我能从更简单详细的角度来让刚接触的朋友更快的掌握股票自动交易的方法。所以有了次文&a…

python做工控机_工控机折腾小记

引言之前笔记本换下来的一块1T的2.5硬盘; 本来想着买个树莓派挂硬盘做个简单的 NAS, 鉴于性能问题, 后来某鱼入手了一个搭载赛扬 N2940 CPU 的工控机;基本配置:Intel Celeron N2940 4x 2.2491GHz / 4G / 32G SSD / USB2.0 x4 3.0 x1 / HDMI x2 / LAN x1 / DC 12V内部还有一个 …