Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充)

这篇具有很好参考价值的文章主要介绍了Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、MySQL Replication概述

优点

异步复制(Asynchronous repication)

全同步复制(Fully synchronous replication)

半同步复制(Semisynchronous replication)

三、MySQL支持的复制

四、部署主从MySQL半异步复制

所有机器操作

主MySQL操作

从服务器操作

测试复制是否成功

 五、基于主从半异步复制的读写分离

基于Amoeba读写分离

常见的MySQL读写分离

基于中间代理层实现

配置Amoeba读写分离,两个Slave读负载均衡

 在Client上进行访问测试

在client上测试负载均衡

测试读写分离


一、MySQL Replication概述

        MySQL Replication俗称MySQL AB复制、主从复制、主从同步,是MySQL官方推荐的数据同步技术。数据同步基本过程为从数据库会实时去读取主数据库的二进制日志文件,按照日志中记录对从库进行同样的操作,以达到数据同步效果。

优点

        通过增加从服务器来提高数据库平台的可靠性。在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器地数量,从而调整数据库平台地高性能。

        提高数据安全性,因为数据已复制到从服务器,主数据库异常时,可以将从服务器复制进程终止来达到保护数据完整性地特点。

        在主服务器上生成实时数据,而在从服务器上分析这些数据,从而缓解主服务器地性能压力。

二、MySQL复制类型

异步复制(Asynchronous repication)

        MySQL默认地复制是异步地,主库在执行完客户端提交地事务后会立刻将结果返回给客户端,并不关心从库是否已经接受并处理了事务,这样就会有一个问题,主库如果down掉了,此时主上已经提交地事务可能没有传到从库服务器上,如果此时,强制将从提升为主,可能会导致新主上的数据不完整。默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的。

全同步复制(Fully synchronous replication)

        指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响,返回客户端的响应速度也会被拖慢。

半同步复制(Semisynchronous replication)

        MySQL由Google贡献的补丁才开始支持半同步复制模式,介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接受到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。

        半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式

三、MySQL支持的复制

        基于SQL语句的复制      在主服务器上执行的SQL语句,在从服务器上执行同样的SQL语句,效率比较高。

        基于行的复制        主服务器把表的行变化作为事件写入到二进制日志中,主服务器把代表了行的事件复制到从服务器中。

        混合模式复制        先采用基于语句的复制,一旦发现基于语句无法精确复制时,再采用行。

四、部署主从MySQL半异步复制

所有机器操作

 yum -y install mariadb mariadb-devel mariadb-server

主MySQL操作

        vim /etc/my.cnf

                server-id=1

                log-bin=mysql-binlog

                log-slave-updates=true

        重启

        创建用户

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linuxLinux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux         备份        并且传输到从服务器

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linuxLinux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

从服务器操作

        systemctl start mariadb

        mysql -uroot -p < /root/alldbbackup.sql

        mysql -u myslave -p123456 -h 192.168.100.1

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         修改 MySQL配置文件

        vim /etc/my.cnf

                server-id=2

                relay-log=relay-log-bin

        重启        且在Slave服务器授权,启动从库,进行主从库数据同步

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linuxLinux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

测试复制是否成功

        主查看

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         从查看

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

        主创建库和表

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         从查看

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

 五、基于主从半异步复制的读写分离

基于Amoeba读写分离

        在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是安全性,高可用还是并发等各个方面都不能完全满足实际需求的,因此一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提供数据的高并发负载能力这样的方案来进行部署。

常见的MySQL读写分离

        基于程序代码内部实现        

                在代码中根据select,insert进行路由分类,这类方法也是目前大型生产环境应用最广泛的,优点是性能最好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支,缺点是需要开发人员来实现,运维人员无从下手

        基于中间代理层实现

                代理一般位于客户端和数据库服务器之间,代理服务器接到客户端请求后通过判断转发到后端数据库,代表性程序:

        (1)mysql-proxy为mysql开发早期开源项目,通过其自带的lua脚本进行SQL判断,虽然是mysql的官方产品,但是mysql官方不建议将其应用到生产环境。

        (2)Amoeba(变形虫)该程序由java语言及逆行开发,阿里巴巴将其应用于生产环境,它不支持事物和存储过程。

基于中间代理层实现

        MySQL Master IP:192.168.100.1

        MySQL Slave1 IP:192.168.100.2

        MySQL Slave2 IP:192.168.100.3

        MySQL Amoeba IP:192.168.100.4

        MySQL Client IP:192.168.100.5

配置Amoeba读写分离,两个Slave读负载均衡

        在Master、Slave1、Slave2服务器中配置Amoeba的访问授权

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         编辑amoeba.xml配置文件

         vim /usr/local/amoeba/conf/amoeba.xml

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linuxLinux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         编辑dbServer.xml配置文件

         vim /usr/local/amoeba/conf/dbServers.xml

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linuxLinux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linuxLinux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         配置无误后,启动Amoeba软件,默认端口是TCP协议8066

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linuxLinux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linuxLinux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

 在Client上进行访问测试

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

在client上测试负载均衡

        主服务器1创建库和表输入数据

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         从服务器1输入数据

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         从服务器2输入数据

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

     client测试

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

两次查看数据,数据内容不同,说明负载均衡

测试读写分离

        从服务器停止复制

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

        client 输入数据 并且查看

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

因为从服务器停止复制,所以客户端无法从从服务器端获得新插入的数据

         主服务器查看

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

        id 2和3 是在从服务器掺入数据 ,所以主服务器没有数据

         从服务器开启复制

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

         client查看

Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充),mysql,数据库,linux

说明读写已经分离        

主服务器进行写入

从服务器进行读取文章来源地址https://www.toymoban.com/news/detail-618877.html

到了这里,关于Linux学成之路(基础篇0(二十三)MySQL服务(主从MySQL服务和读写分离——补充)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WebRTC入门:基础的核心协议与概念(二十三)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 优质专栏: 多媒体系统工程师系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径

    2024年01月17日
    浏览(43)
  • 【JavaSE】Java基础语法(二十三):递归与数组的高级操作

    递归的介绍 以编程的角度来看,递归指的是方法定义中调用方法本身的现象 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算 递归的基本使用 递归的注意事项 递归一定要有出口。否

    2024年02月06日
    浏览(74)
  • Elasticsearch实战(二十三)---ES数据建模与Mysql对比 一对多模型

    我们如何把Mysql的模型合理的在ES中去实现? 就需要你对要存储的数据足够的了解,及对应用场景足够的深入分析,才能建立一个合适的模型,便于你后期扩展 一对一 模型 一对多 模型 多对多 模型 1.一对多 模型 我们现在有两个模型, 一个商品Product, 一个分类Category , 我们对比下一

    2024年02月08日
    浏览(56)
  • 【前端知识】React 基础巩固(二十三)——React 性能优化 SCU相关

    React 的渲染流程 JSX - 虚拟 DOM - 真实 DOM React 的更新流程 props/state 改变 - render函数重新执行 - 产生新的DOM树 - 新旧DOM树进行diff - 计算出差异进行更新 - 更新到真实的DOM React 在 props 或 state 发生改变时,会调用 React 的 render 方法,会创建一颗不同的树 React 需要基于这两颗不同的

    2024年02月15日
    浏览(71)
  • Kubernetes基础(二十三)-k8s持久化存储详解

    1.1 介绍 在容器中的磁盘文件是短暂的,当容器崩溃时,Kubelet会重新启动容器,但容器运行时产生的数据文件都将会丢失,之后容器会以最干净的状态启动。另外,当一个Pod运行多个容器时,各个容器可能需要共享一些文件,诸如此类的需求都可以使用Volume解决。Pod只需要通

    2024年03月17日
    浏览(44)
  • openstack详解(二十三)——Neutron其他配置、数据库初始化与服务启动

    今天继续给大家介绍Linux运维相关知识,本文主要内容是Neutron其他配置、数据库初始化与服务启动。 在上文openstack详解(二十二)——Neutron插件配置中,我们完成了Neutron插件的配置,今天,我们来进行Neutron的元数据代理配置、数据库初始化以及服务启动。 打开Neutron的元数

    2024年02月10日
    浏览(57)
  • LinuxGUI自动化测试框架搭建(二十三)-框架主入口main.py设计&sendmail邮件服务调用和生成

    组织运行所有的测试用例,并测试报告和测试结果通过邮件形式发给项目成员。 设计框架主入口,发送邮件。 设计框架主入口; 调用邮件服务模块; 发送邮件。 4.1 设计main.py脚本 打开 main.py

    2024年02月01日
    浏览(45)
  • 零基础尝试mysql主从复制

    本文参考了这篇文章  https://blog.csdn.net/tenc1239/article/details/130451736 感谢大佬的分享 前提:自己准备好两个数据库环境,我用的是本机的vm虚拟机linux中的mysql(版本8.0.33)和本机windows中的mysql(8.1.0) 一、配置主库    1、配置 my.cnf 文件     2、创建用于复制的账号(也可以直接用

    2024年02月14日
    浏览(38)
  • [MySQL]主从服务器布置

    配置完成后重启服务器 $ sudo systemctl restart mariadb; //重启 CHANGE MASTER TO MASTER_HOST = ‘[主机ip]’, MASTER_USER = ‘filestore’, MASTER_PASSWORD = ‘[密码]’, MASTER_LOG_FILE = ‘mysql-bin.000007’, MASTER_LOG_POS = 154; start slave show slave status G ; 可能出现的问题: slava_IO 不能成功连接 . 出现的原因: 1.M

    2024年02月12日
    浏览(47)
  • 【Java笔记+踩坑汇总】Java基础+进阶+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud+黑马旅游+谷粒商城+学成在线+MySQL高级篇+设计模式+常见面试题+源码

    本文是“Java学习路线”专栏的导航文章,目标是为Java工程师提供一套 完整的Java学习路线 。 目录 0.摘要/资料/代码整理 1.Java基础+进阶 2.MySQL,JavaWeb,Mybatis,前端 3.Git 4.SSM(Spring,SpringMVC,Mybatis)框架 5.Maven高级 6.Springboot,MybatisPlus,JPA框架 7.瑞吉外卖、Redis、Nginx、Linux、mysql主从复制

    2024年02月06日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包