MySQL 架构

作者: Miracle001 | 来源:发表于2017-08-23 00:54 被阅读26次

主从复制架构及实现

web服务器无法承载客户端的请求,可以
扩展方式
    向上扩展:使用性能更好的主机 scale Up
    向外扩展:scale Out  增加更多的主机,并基于负载均衡的方式承载更多的用户请求
MySQL扩展
  复制:每个节点都有相同的数据集
    结构——主从复制结构 M/S
    复制可以实现MySQL向外扩展的解决方案:
    从节点通过向主节点请求二进制日志中的事件于本地,并且执行replay完成的
    复制——默认单向进行
  复制功能:
    数据分布:
      数据可以复制多份,从而完成数据分布的目的
      客户端的数据查询较多,数据更改较少——基于数据复制,比较理想
    负载均衡读请求:读均衡(读操作) 
      写操作——不能负载均衡——任何一个节点所执行的写操作,都是完整的写操作;
      主节点接收所有的写操作,并且把所有写操作又同步给从节点一份,从节点必须完成同样多的写操作
    数据备份(冗余功能)
      主节点服务器挂了,可以迅速把从节点提升为主的,继续工作
      复制可以帮助完成做备份
        热备可能出问题
        冷备的数据最可靠——线上不能实现,加上复制结构后,可以给线上的主服务器配上一个从节点,
         需要做备份时,将从节点从 主从复制上 下线,停止服务,直接复制数据即可
    高可用(冗余功能)和故障切换(编写脚本,监测主节点的可靠性,一旦发现主节点故障,将主节点下线,自动提升从节点为主节点)
      高可用的解决方案
      MySQL自身没有像keepalive等高可用的功能,但是开发脚本可帮助mysql辅助高可用
    mysql升级测试(拿副本/备份来测试)
  主从复制:
    从节点
      I/O thread 从master请求二进制日志事件,并保存于中继日志;
      SQL thread 从中继日志读取日志事件,在本地完成重放replay;
    主节点
      dump thread 为每个slave的I/O thread启动一个dump线程,用于向其发送binary log events;
      二进制日志的开启
      级联复制模型:从节点既是主节点的从,又是其他从节点的主
    特点:
      1异步复制  主服务器写入客户端的请求,不等待从节点,性能好;从服务器数据落后主服务器,避免误操作;主服务器的事务并行操作导致从节点的操作落后,最理想的时间是:中继日志写入和replay这样一个时间段;
      2主从数据不一致比较常见;自己的解决方案;
    复制架构:
      M/S; M/M; 环状复制; black hole引擎(本地不存储数据)
      一主多从;
      从服务器还可以再有从服务器;
      一从多主
    二进制日志的事件记录格式
      STATEMENT
      ROW 建议
      MIXED 然后采用
  复制 通过互联网进行 SSALL  企业VPN

演示的模型
  主从、主主、半同步复制(gogle)、复制过滤功能
  半同步复制(gogle):至少1个从节点与主同步;
  复制过滤:在从节点上,中继日志记录,过滤所需的数据库,replay本地


mysql扩展解析
  并发访问量过大,一台主机不能完成众多客户端的请求  解决办法
  2台主机如何获取相同数据
    多个数据集:每个mysql服务器在本地保存一个完整的数据副本
    节点:从一个节点写的数据,在另外一个节点可以获取到;
    DNS的主从:主服务器能写,从服务器只读,从服务器的所有文件都是从主服务器同步而来
    简答架构:仅一个节点可以读写,其他节点只能读;
每个节点都持有完整的数据集,其中仅一个节点可以接受写操作请求,
  其他节点都通过同步方式把数据复制一份,写在本地。
MySQL的复制机制:
  客户端发出请求,写操作发送给主节点,读操作发送给复制节点(从节点);
MySQL的主从复制:
  mysql节点(从节点)——自己不负责接收任何修改数据的请求,把自己当做是客户端,
  向主服务器请求主服务器上的所有数据修改,并在本地replay一遍,形成和主服务器相同的数据集,
  在这个数据集上,可以接受其他用户的读请求,但不接受写请求;
Paste_Image.png
解析
主从复制的实现
master:
主节点必须启用二进制日志,即主节点要有数据
检查slave请求的二进制日志文件的位置,发送
mysqldump线程,检索日志更新,读取二进制日志文件的事件,再响应给请求者;

slave:
开启一个线程,扮演客户端,通过mysql协议,向主服务器请求读取主服务器的二进制日志中的事件;
读到事件,记录在中继日志;再用一个文件记录主服务器的哪一个二进制日志文件的哪一个事件位置;
Paste_Image.png
从节点荡机:
健康状态检测的方式,重定向到其他节点即可;
mysql本地的quary cashed,负载均衡器调度时,基于一致性hash或取模算法;
轮询;利用前端客户端自行通过缓存服务器执行缓存

主节点荡机:
写操作:gtid 全局事务id
  共享存储解决放方案
  多个主节点/双主模型/master-master模型
    互为主从、读请求均衡、写请求没有负载均衡、写冗余、前端不用读写分离、高可用、数据不一致
  MMM; MHA; Galera-Cluster

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

基于ssl复制

Paste_Image.png
主机2
服务器验证客户端——加密、认证复制者有复制权限

Paste_Image.png
使用ssl功能,要在服务器端指明ca的证书(或者所在目录)
服务器端自己提供的证书——在配置文件中指明证书和私钥路径,然后再启动服务器端
客户端——不需要在配置文件中指明,只需要在change master to的时候指明即可;
Paste_Image.png

主机1


Paste_Image.png

无require ssl,即便帐号和密码正确,也不能连接


Paste_Image.png

mysql复制及mha/Galera

分摊——切分
Paste_Image.png Paste_Image.png
3种存储:
结构化存储 mysql  postgrapsql
  事务、本身可以结果化的数据放在mysql中,
  方便检索的数据——放在nosql上
  mysql 存储原数据——数据框架
  日志信息——nosql上 

结构化的数据
不用结构化,无需支持事务,非关键性数据  nosql(文档性数据库——mongdb,kv式存储——redis)
图片 分布式文件系统(存储)

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

MHA

mha建构在mysql的复制集群之上的,提供高可用,需要自己配置mysql复制

Paste_Image.png Paste_Image.png

自定义的扩展
master_ip...——编写脚本,主节点荡机时,可以自动更换ip/主机(网上很多)
shutdown_scrip——主节点荡机后恢复为从节点,防止没有完全死


Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png
实验

maridb已经全部安装好了
所有节点必须能够通过ssh进行互信通信
安装node
每一个复制集群叫做applacation

67 管理节点

在68,69,70,完成操作1后进行


Paste_Image.png Paste_Image.png Paste_Image.png

----------------------------------------------------------------------------------1


Paste_Image.png

manager节点上要安装manager和node 注意要配置好base和epel(包依赖)
另外3个节点只需要安装node节点即可

Paste_Image.png Paste_Image.png

------------------------------------------------------------------------------------2

Paste_Image.png Paste_Image.png

------------------------------------------------------------------------------------3
知识


Paste_Image.png Paste_Image.png Paste_Image.png

操作


Paste_Image.png Paste_Image.png

知识

Paste_Image.png

操作

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

知识

Paste_Image.png Paste_Image.png

--------------------------------------------------------------------------4
在68完成操作4后进行

Paste_Image.png

------------------------------------------------------------------------------------5

Paste_Image.png Paste_Image.png Paste_Image.png
68 主节点

vim /etc/my.cnf

Paste_Image.png Paste_Image.png

------------------------------------------------------------------------------------1
创建管理权限的用户账号

Paste_Image.png

------------------------------------------------------------------------------------2
在67完成操作2后进行

Paste_Image.png

-------------------------------------------------------------------------------3
在67完成操作4后进行

Paste_Image.png

-------------------------------------------------------------------------------4

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png
69 从节点

vim /etc/my.cnf

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

------------------------------------------------------------------------------------1

Paste_Image.png Paste_Image.png

建议把其中一个节点配置成半同步复制
------------------------------------------------------------------------------------2
在67完成操作2后进行

Paste_Image.png

在70完成操作4后进行


Paste_Image.png Paste_Image.png

------------------------------------------------------------------------------------3

70 从节点

vim /etc/my.cnf

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

------------------------------------------------------------------------------------1
在67完成操作1后进行


Paste_Image.png

------------------------------------------------------------------------------------2
在67完成操作2后进行

Paste_Image.png

------------------------------------------------------------------------------------3
在67完成操作5后进行

Paste_Image.png Paste_Image.png

------------------------------------------------------------------------------------4

主服务器——必须被监控
数据——必须被冗余和备份
Paste_Image.png Paste_Image.png
三者时间同步
Paste_Image.png Paste_Image.png
67
Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

-----------------------------------------------------------------------------------------1

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

-----------------------------------------------------------------------------------------2

Paste_Image.png Paste_Image.png

-----------------------------------------------------------------------------------------3
在68完成操作3后
创建自动增长的id

Paste_Image.png

-----------------------------------------------------------------------------------------4

68
Paste_Image.png Paste_Image.png

-----------------------------------------------------------------------------------------1

Paste_Image.png

-----------------------------------------------------------------------------------------2
在69完成操作3后进行

Paste_Image.png

-----------------------------------------------------------------------------------------3
在67完成操作4后

Paste_Image.png

id问题解决方案——全局id唯一生成器
-----------------------------------------------------------------------------------------4

69
Paste_Image.png Paste_Image.png

-----------------------------------------------------------------------------------------1

Paste_Image.png

-----------------------------------------------------------------------------------------2
在67完成操作3后,在任何一个节点操作此步骤都行


Paste_Image.png

-----------------------------------------------------------------------------------------3
在68完成操作4后

Paste_Image.png Paste_Image.png
tomcat、keepalived、haproxy、wanish、nigx、lvmp、mysql复制、分布式
主从复制、半同步复制、主主复制
如何构建MHA、galera-cluster
mysql的备份和恢复

相关文章

  • MySQL的逻辑架构

    MySQL的逻辑架构 MySQL的逻辑架构(from《高性能MySQL》)MySQL逻辑架构,来自:高性能MySQ...

  • mysql 架构

    MySQL架构图解 MySQL物理架构 MySQL逻辑架构 mysqld: MySQL服务器守护程序,在后台运行。...

  • 20190401每周精品之编程

    mysql执行过程 一MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是MySQL 的一个简要架构...

  • 读书笔记-高性能mysql(理解mysql知识点)

    第一章, mysql架构和历史 mysql架构图, mysql是客户端/服务器的c/s架构 mysql架构图 事务...

  • MySQL高级

    MySQL的架构介绍MySQL的架构介绍MySQL简介 MySQL Linux版的安装MySQL 配置文件MySQ...

  • MySQL架构学习笔记

    MySQL逻辑架构 了解MySQL的架构有助于深入理解MySQL服务器,下图是MySQL的三层逻辑架构图(图片来自...

  • 一、MySql 基础架构

    一、MySql 基础架构 目录[toc] 1.1Mysql逻辑架构 如上图:展示了mysql逻辑的架构图。 最上层...

  • MySQL一条语句执行的过程

    一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以...

  • 一条sql语句在mysql中如何执行的

    一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可...

  • 一条 SQL 语句在 MySQL 中如何执行的

    一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以...

网友评论

    本文标题:MySQL 架构

    本文链接:https://www.haomeiwen.com/subject/sibrdxtx.html