草庐IT

Linux——MySQL主从复制读写分离

刀穗随风 2023-03-28 原文
  主从复制用来保证数据的一致性和完整性

  主从复制原理:主MySQL需要开启二进制日志保存用户对Mysql数据的操作。      从数据库监听主MySQL日志变化,发现更新复制日志到本地,读取复制到本地的日志,执行日志对数据库的操作,保证主和从数据库状态和数据的一致性,防止主数据库故障数据丢失

  Mysql支持三种数据复制类型分别是:基于语句复制,基于行复制,混合类型复制

基于语句复制:在主MySQL执行sql语句同步到从MySQL数据库上保证状态一致性,默认使用的是基于语句复制

基于行复制:将主MySQL数据库复制到从MySQL数据库上,当数据库表发生改变从mysql将改变的数据复制到本地

混合类型复制:语句和基于行综合应用,哪个复制数据速度快优先选择


  常见的读写分离分为两种:基于程序代码内部实现,基于中间代理层实现

基于程序代码内部实现:在代码中根据select、insert进行路由分类,这类方法也是目前生产环境应用最广泛。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支

基于中间代理层实现:代理一般位于客户端和服务器之间,代理服务器接到客户端的请求后通过判断后转发到后端数据库


实验案例:

一,配置安装MySQL配置一主两从安装三台mysql服务器

1,安装第一台MySQL依赖程序

1)挂载系统盘

2)删除系统自带yum源配置本地yum源

3)安装依赖程序

4)创建管理nginx服务用户

2,安装配置第一台MySQL

2)配置nginx

3) 配置安装nginx

4)优化nginx命令

5)启动服务,查看服务运行状态

6)设置mysql登陆密码

二,配置和验证mysql数据库主从复制

1,配置NTP时间服务器

1)挂载系统盘

2)安装时间服务器

3)修改时间服务器主配置文件

4)重启时间服务器设置开机自启

5)两台从MySQL数据库同步时间

2,配置第一台MySQL数据库主配置文件

1)修改主配置文件

2)重启MySQL服务

3,配置第二台MySQL数据库主配置文件

1)修改主配置文件

2)重启mysql服务

4,配置第三台MySQL数据库主配置文件

1)修改主配置文件

2)重启MySQL服务

5,配置主MySQL服务器创建数据复制账户查看状态

1)登录主mysql创建复制账户

2)查看mysql数据库主节点状态

6,配置第一台从MySQL数据库服务器同步数据

1)登录mysql配置数据库复制

2)查看数据复制状态

7,配置第二台从MySQL数据库服务器同步数据

1)登录mysql配置数据库复制

2)查看数据复制状态

8,主MySQL创建数据从复制进行验证

1)登录主MySQL创建数据库

2)登录第一台从MySQL查看数据

3)登录第二胎从MySQL数据库查看复制数据

三,配置和验证MySQL数据库的读写分离

1,配置hosts文件解析

1)修改主MySQL服务器节点hosts文件

2)将hosts文件复制到其他两台从mysql节点

2,配置amoeba代理程序安装依赖

1)挂载光盘

2)安装jdk

3)安装船舰amoeba安装目录,解压到安装目录安装

4)配置环境变量

5)更新环境变量验证

3,配置读写分离

1)登录主MySQL数据库创建读写分开用户

2)修改amoeba配置文件

3)修改amoeba的配置文件

4)启动amoeba服务后台运行

5)监听服务端口

4,客户端安装msyql客户端程序

1)挂载系统盘

2)配置本地yum仓库

3)安装mysql’客户端

5,客户端验证读写分离

1)客户端登录amoeba创建数据库设置表结构插入数据

2)停止两台从mysql的复制功能

3)客户端端插入新的数据,无法查询到新插入的迪迦二号数据说明在从mysql数据库查询实现读写分离

4)启动从mysql数据库复制功能

5)客户端查询到插入的迪迦三号验证完成主从复制和读写分离



“作者是学生目前正在努力学习阶段如有不对请指出,虚心接受指导,感谢!!!”

 


有关Linux——MySQL主从复制读写分离的更多相关文章

  1. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  2. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  3. ruby - 如何在 ruby​​ 中复制目录结构,不包括某些文件扩展名 - 2

    我想编写一个ruby​​脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"

  4. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  5. ruby - 在两个 ActiveRecord 类之间合并/复制属性的好方法? - 2

    之前有人问过这个问题,我发现了以下clip关于如何一次设置一个类对象的所有属性,但由于批量分配保护,这在Rails中是不可能的。(例如,您不能Object.attributes={})有没有一种很好的方法可以将一个类的属性合并到另一个类中?object1.attributes=object2.attributes.inject({}){|h,(k,v)|h[k]=vifObjectModel.column_names.include?(k);h}谢谢。 最佳答案 利用assign_attributes使用:without_prote

  6. Ruby:我怎样才能复制这个数组? - 2

    (跟进我之前的问题,Ruby:howcanIcopyavariablewithoutpointingtothesameobject?)我正在编写一个简单的Ruby程序来在.svg文件中进行一些替换。第一步是从文件中提取信息并将其放入数组中。为了避免每次调用此函数时都从磁盘读取文件,我尝试使用memoize设计模式-在第一次调用后的每次调用中都使用缓存结果。为此,我使用了一个在函数之前定义的全局变量。但是,即使我在返回局部变量之前将该变量.dup为局部变量,调用该变量的函数仍在修改全局变量。这是我的实际代码:#memoizetokeepfromhavingtoreadoriginalfi

  7. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  8. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  9. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

  10. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

随机推荐