热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL如何实现主从复制过程的示例详解

数据库|mysql教程MySQL,复制,主从数据库-mysql教程这篇文章主要为大家详细介绍了MySQL主从复制的实现过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下购物商城

数据库|mysql教程MySQL如何实现主从复制过程的示例详解
MySQL,复制,主从
数据库-mysql教程
这篇文章主要为大家详细介绍了MySQL主从复制的实现过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
购物商城免费源码,vscode整理c代码格式,中文 ubuntu 乱码,tomcat访问网页ip,爬虫模型吧,php 远程获取json,郫都区seo优化公司,业主网站源码,房地产flash网站模板下载lzw
A、什么是主从复制
php 搜索 源码,vscode选择cmd,ubuntu实用学习教程,tomcat压缩模式,sqlite3 递归,凤凰图集 插件,前端需要做框架么,仿生六足爬虫,php查看php版本,seo监控 软件,idc公司网站源码下载,jsp网页导航菜单代码,充值的页面模板源码,视频播放页面,简单的asp图书管理系统,采集程序源码lzw
将主数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。
qq访客 源码,vscode eide,ubuntu meta,tomcat调试模式是单线程吗,sqlite 查表结构,上海网页设计专业,云服务器租用费用,关联推荐插件,前端鉴权框架,两万模板爬虫,php 教案,来客seo,phpweb 网站标志,爱情网页源代码下载,旅游后评论模板,jquery 打开页面自动全屏,人事工资管理系统课程设计,vb打地鼠程序lzw
B、主从复制的作用

1、主数据库出现问题,可以切换到从数据库。

2、可以进行数据库层面的读写分离,

3、可以在从数据库上进行日常备份

C、复制过程

MySQL如何实现主从复制过程的示例详解

Binary log:主数据库的二进制日志

Relay log:从服务器的中继日志

第一步:master在每个事务更新数据完成之前,将该操作记录串行地写入到binlog文件中。

第二步:salve开启一个I/O Thread,该线程在master打开一个普通连接,主要工作是binlog dump process。如果读取的进度已经跟上了master,就进入睡眠状态并等待master产生新的事件。I/O线程最终的目的是将这些事件写入到中继日志中。

第三步:SQL Thread会读取中继日志,并顺序执行该日志中的SQL事件,从而与主数据库中的数据保持一致。

D、主从复制的具体操作

我是在同一个windows上不同的路径下安装两个msyql实例。建议这里主从两个mysql的安装版本一致,尽管我自己的是不一致的。

MySQL如何实现主从复制过程的示例详解MySQL如何实现主从复制过程的示例详解

1、分别修改主从数据库的配置文件my.ini

master

MySQL如何实现主从复制过程的示例详解

3306是mysql默认端口号,这里master实例中可以不用修改;server-id用来指定唯一id,不同的mysql实例不重复即可;binlog-do-db指定需要复制的数据库;log-bin用来开启二进制日志文件。

salve

MySQL如何实现主从复制过程的示例详解

由于主从数据库待会都是在通一台电脑上运行,所以端口需要设置成不一样,这里是3307

replicate-do-db:需要同步的数据库名称,与master上的配置保持一致。

2、在master上创建一个专门用于复制的账户:weidai/123456

MySQL如何实现主从复制过程的示例详解

这个新增的账户可以在表mysql.user中进行查询:

MySQL如何实现主从复制过程的示例详解

我第一次操作的时候,到这里就完成了这个账号的创建,但是到真正复制的时候,却发现复制没有成功,排查错误的时候发现master生成的binlong没有问题,然后查看slave的状态:

MySQL如何实现主从复制过程的示例详解

在结尾处有这样一行错误:

MySQL如何实现主从复制过程的示例详解

使用weidai这个账号无法连接到master,所以应该是没有获取到master的binlog,导致中继日志无法生成。

我反复检查了账号和密码都没有发现问题,然后查找相关资料,才发现是因为在master创建新用户的时候少了一步操作:

新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问。这就是出现前面错误的原因。另外还有一种办法是重新启动mysql服务器,来使新设置生效。

MySQL如何实现主从复制过程的示例详解

3、获取主数据库中此刻数据的位置,主要用于从数据启动后,复制数据的起始位置,但是在获取这个状态值之前,主数据库就不能再有数据的修改操作,所以需要先设置读锁定有效

MySQL如何实现主从复制过程的示例详解

MySQL如何实现主从复制过程的示例详解

4、主库进行数据备份,备份的手段有很多种,这里不展开介绍,可以参考我上一篇文章,备份结束后可以释放读锁,主库就可以进行写操作

MySQL如何实现主从复制过程的示例详解

5、启动从数据库,对刚才备份的数据进行还原,这个时候主从数据库在备份那个时间点的数据是一致的。

6、在从数据库上进行复制行为的相关配置

MySQL如何实现主从复制过程的示例详解

7、这个时候配置完成,但是从数据库还不能进行同步,需要启动slave线程

MySQL如何实现主从复制过程的示例详解

8、在master中创建表和新增数据,在slave中观察:

MySQL如何实现主从复制过程的示例详解

可以看出,我在master中进行的操作,都能在slave中体现出来,这个时候slave就如同是master的镜子一样。

E、主从同步状态解读

在slave上使用命令进行查看:

MySQL如何实现主从复制过程的示例详解

由于排版太过于难看,我整理如下:

Slave_IO_STATE:Waiting for master to send eventMaster_host:127.0.0.1Master_user:weidaiMaster_port:3306connnect_retry:60Master_log_file:mysql-bin.000005Read_Master_log_pos:1662Relay_log_file:AE6Z*****-relay-bin.000002Relay_log_pos:1415Slave_IO_Running:yesSlave_SQL_Running:yes

———————————————————-华丽丽分割线——————————————-

Slave_IO_Running:yes

Slave_SQL_Running:yes

这两个线程前面有提到,是slave上参与复制过程中两个很重要的线程。YES表示正常,NO表示异常。

Slave_IO线程主要是将master上的binlong日志内容复制到slave的中继日志中(Relay_log),一般出现问题的概率不大, 出现问题大多数是因为权限或者网络等问题,导致连接不上master。如同前面提到的那个错误。

Slave_SQL线程负责将中继日志中的SQL执行一遍,相对来说出错的概率大些。如有人手动的在从库中插入一些记录,导致主从同步的时候出现主键冲突。

Slave_IO_STATE:Waiting for master to send event

这个状态表示中继日志同步完成,等待master有新的事件产生。


推荐阅读
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • DSP中cmd文件的命令文件组成及其作用
    本文介绍了DSP中cmd文件的命令文件的组成和作用,包括链接器配置文件的存放链接器配置信息、命令文件的组成、MEMORY和SECTIONS两个伪指令的使用、CMD分配ROM和RAM空间的目的以及MEMORY指定芯片的ROM和RAM大小和划分区间的方法。同时强调了根据不同芯片进行修改的必要性,以适应不同芯片的存储用户程序的需求。 ... [详细]
  • Linux环境变量$PATH的作用及使用方法
    本文介绍了Linux环境变量$PATH的作用及使用方法。$PATH是一个由多个目录组成的变量,用冒号分隔。当执行一个指令时,系统会按照$PATH定义的目录顺序搜索同名的可执行文件,如果有多个同名指令,则先找到的会被执行。通过设置$PATH变量,可以在任何地方执行指令,无需输入绝对路径。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • ORACLE空间管理实验5:块管理之ASSM下高水位的影响
    数据库|mysql教程ORACLE,空间,管理,实验,ASSM,下高,水位,影响,数据库-mysql教程易语言黑客软件源码,vscode左侧搜索,ubuntu怎么看上一页,ecs搭 ... [详细]
  • PHP输出缓冲控制Output Control系列函数详解【PHP】
    后端开发|php教程PHP,输出缓冲,Output,Control后端开发-php教程概述全景网页源码,vscode如何打开c,ubuntu强制解锁,sts启动tomcat慢,sq ... [详细]
author-avatar
手机用户2502916905
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有