马老师 生产环境mysql主从复制、架构优化方案

Binlog日志(主服务器) => 中继日志(从服务器 运行一遍,保持一致)。从服务器是否要二进制日志取决于架构设计。如果二进制保存足够稳定,从性能上来说,从服务器不需要二进制日志。默认情况下,mysql主从复制是异步的。

异步:命令写操作是在内存中完成的。同步:在磁盘完成才认定写操作是完成的。

异步:主服务器执行10条命令,主服务器不等待从服务器,从服务器才复制3条命令道中继日志。这叫做从服务器的延迟delay。异步延迟是难免的。

Mysql是多用户的,多个用户进来并发 发起 写操作,同时进行的,写到写到二进制语句是一条一条的,从服务器一次执行一条,是单线程的。比主服务器慢是难免的。

整个复制架构:3个线程,主服务器dump线程,发送到从服务器上。从服务器上IO线程,接受主服务器上dump线程发送过来的数据,写入到中继日志中去。而后一旦中继日志有心内容,SQL线程一句一句执行内容。

以上,所以配置就是:主服务器启用bin log日志,从服务器启用relay log,建立身份标示server id,每台服务器需要唯一的server id。

负载均衡集群

高可用集群:冗余

高性能集群:完成复杂运算

AXFR:AXFR请求,是从DNS服务器请求在主DNS服务器上更新信息的一类域名系统的请求。AXFR请求经常导致全区域传输。如果区域文件很大的话,它需要花费很多的时间并消耗可观的带宽。

IXFR:增量区域传输,增量区域传输协议。

 

权限:

主服务器建立账户,从服务器使用账户。mysql有一些特殊的权限允许复制进程运行,运行在从服务器上的I/O线程创建了到master的连接,这就意味着必须在主服务器上创建一个用户并且需要授予特殊的权限。

这样I/O线程就会一特定的身份连接到主服务器上并且读取二进制日志。但是需要说明的一点是,复制用户在主服务器上实际只需要 replication  client 权限就可以运行的,这里授予replication  slave的原因是用于监视和管理复制账号需要这个权限,并且这两个功能(复制需要的权限,监视和管理复制账号权限)通常是一个账号在管理,而不是为了达 到这两个目标而分别设置2个账号。

replication slave

replication client

主服务器和从服务器双双互相认证,SSL认证。

基于逻辑,Mysql Dump从主服务器复制到从服务器。Mysql有一个选项master data,从什么地方读取二进制数据。主服务器放在逻辑卷上,从服务器基于备份也可以放逻辑卷上。

CHANGE MASTER TO master_def[,master_def] ...

可以更改从属服务器用于与主服务器进行连接和通讯的参数。

mysql>CHANGE MASTER TO->    MASTER_HOST='master2.mycompany.com',->    MASTER_USER='replication',->    MASTER_PASSWORD='bigs3cret',->    MASTER_PORT=3306,->    MASTER_LOG_FILE='master2-bin.001',->    MASTER_LOG_POS=4,->    MASTER_CONNECT_RETRY=10;

show slave status,检查以下两项是否启动:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes

如何让从服务器的mysql服务在启动时候不要自动启动从服务线程?
在从服务器上
[mysqld]
skip-slave-start=1

数据库复制过滤:
主服务器:
binlog_do_db
binlog_ignore_db

无论怎么过滤,都不在主服务器上做过滤。任何不涉及到的数据库相关的写操作都不会记录到二进制中。

从服务器:
replicate_do_db
replicate_ignore_db
replicate_do_table
replicate_ignore_db
基于通配符的匹配
replicate_wild_ignore_db = mysql.%
replicate_wild_do_db = magedu.%

浪费额外的网络带宽,复制过来的数据没用。

主服务器崩溃:事务已经提交-->写入二进制日志:
在主从架构上建议使用的配置:
主服务器:
sync_binlog=1
innodb_flush_logs_at_trx_commit=1

从服务器
skip_slave_start=1
read_only=1

使用mysql的sharding,多台服务器写操作。切分主要有两种方式:水平切分(Horizental Sharding)和垂直切分(Vertical Sharding)。水平切分所指的是通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由 或者table路由规则找到需要查询的具体的DB或者table以进行Query操作,比如根据用户ID将用户表切分到多台数据库上。垂直切分指的是按业务、产品切分,将不同类型的数据且分到不同的服务器上,通过数据库代理疏通程序与多个数据库的通讯、降低应用的复杂度。

读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,这样既避免了主数据库服务器(Master)的过载,也有效地利用了从数据库服务器(Slave)的资源。

主主(互为主从)架构
1、双方都要建立有复制权限的用户;2、不同的server id;3、双方都要开启二进制日志和中继日志;4、在启动之前必须知道左服务器的二进制日志文件名和位置、右服务器的二进制日志文件名和位置。

主从分离(实现分层)

读写分离(代理),常用的由mysql官方提供的mysql proxy 和阿里巴巴开源的Amoeba。

 已经听完第八讲。。。

转载于:https://www.cnblogs.com/zl0372/p/mssql.html

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

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

相关文章

10分钟带你学会微信小程序的反编译

以xxxxx小程序为例10分钟带你学会微信小程序的反编译 2019-11-28 12:59:26 以一个简单的例子介绍下小程序反编译操作流程 实验环境前置准备模拟器内软件安装获取小程序包开始解包导入开发者工具补充注意事项技术交流群有偿解包uniapp 逆向服务逆向教程小程序分包教程#实验环境…

中html倒入css那么套路,CSS常用套路

a标签去除原颜色(改为白色)和下划线text-decoration: none;color: #ffffff;列表标签去除默认小点:list-style-type:none;设置元素透明度:opacity:0.5;页面中文字无法被选中:user-select: none;鼠标悬停,样式变化的方法:a:hover {o…

try catch finally的执行顺序到底是怎样的?

首先执行try,如果有异常执行catch,无论如何都会执行finally一个函数中肯定会执行finally中的部分。 关于一个函数的执行过程是,当有return以后,函数就会把这个数据存储在某个位置,然后告诉主函数,我不执行了…

反编译Android APK详细操作指南

早在4年前我曾发表过一篇关于《Android开发之反编译与防止反编译》的文章,在该文章中我对如何在Windows平台反编译APK做了讲解,如今用Mac系统的同学越来越多,也有很多朋友问我能否出一篇关于如何在Mac平台上反编译APK的文章,今天呢…

Ext.grid.CheckboxSelectionModel状态设置

直接上代码: var model grid.getSelectionModel();model.selectAll();//选择所有行model.selectFirstRow();//选择第一行model.selectLastRow([flag]);//选择最后一行,flag为正的话保持当前已经选中的行数,不填则默认falsemodel.selectNext();//选择下一行model.se…

MySql PreparedStatement用法 及 Transaction处理

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException;public class TestJDBC {/*** 当银行转账时,需要在汇款人账户上扣除汇款金额,同时在收款人账户上存入汇款金额&#xff…

计算机硬件维修所需技能实习报告,计算机软硬件及网络维护技能实习报告.doc...

计算机软硬件及网络维护技能实习报告计软络维护主板硬盘内存CPU,光驱显卡声卡网卡主板,又叫主机板、系统板和母板;它安装在机箱内,是微机最基本的也是最重要的部件之一。光驱就是播放光盘的,一下安装程序,游戏程序的都是放在光盘里…

用idea新建springboot项目遇到的@Restcontroller不能导入的问题

我个人的解决方法如下&#xff1a; 1.springboot默认有 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>o…

Ext1.X的CheckboxSelectionModel默认全选之后不允许编辑的BUG解决方案

Ext1.X的CheckboxSelectionModel默认全选之后不允许编辑的BUG解决方案&#xff0c;ext 的CheckboxSelectionModel在后台默认选中之后&#xff0c;前台就不允许编辑的bug是存在的&#xff0c;因为CheckboxSelectionModel没有Disabled"true"的设置&#xff0c;只能想办…

广州海珠区计算机学校,2019广州海珠区电脑派位和对口直升表

点击即可领取期末各科试卷预约课程还可获赠免费的学习复习诊断— — 学而思爱智康课程优势 — —12年本地化教研沉淀个性化学习方式专属教学服务优质的教学系统2019广州海珠区电脑派位和对口直升表&#xff0c;各位的爸爸妈妈们看过来&#xff01;&#xff01;看看目标学校都招…

android的消息队列机制

android下的线程&#xff0c;Looper线程&#xff0c;MessageQueue&#xff0c;Handler&#xff0c;Message等之间的关系&#xff0c;以及Message的send/post及Message dispatch的过程。 Looper线程 我们知道&#xff0c;线程是进程中某个单一顺序的控制流&#xff0c;它是内核…

KNN算法检测手势动作

KNN算法原理&#xff1a; KNN&#xff08;k-nearest neighbor&#xff09;是一个简单而经典的机器学习分类算法&#xff0c;通过度量”待分类数据”和”类别已知的样本”的距离&#xff08;通常是欧氏距离&#xff09;对样本进行分类。 这话说得有些绕口&#xff0c;且来分解…

IIS负载均衡(转)

在大型Web应用系统中&#xff0c;由于请求的数据量过大以及并发的因素&#xff0c;导致Web系统会出现宕机的现象&#xff0c;解决这一类问题的方法我个人觉得主要在以下几个方面&#xff1a; 1.IIS 负载均衡。 2.数据库 负载均衡。 3.系统架构优化&#xff0c;比如报表服务器…

maven报错Non-resolvable parent POM for com.wpbxin:springboot2-first-example:0.0.1-SNAPSHOT: Could not

文章目录 一、maven报错二、一些说明三、出现问题的原因和几种解决方法 忽略SSL证书检查生成证书并导入到 JRE security 中使用默认的 maven 中央仓库使用 http 的镜像库四、参考链接 记录使用 maven 时遇到的问题。第一种方法最方便&#xff0c;亲测能用。 一、maven报错 mav…

计算机科技与技术对应岗位,计算机技术与软件专业技术资格名称及岗位基本任职条件...

超越梦想&#xff1a;计算机技术与软件专业技术资格名称及岗位基本任职条件专业资格名称对应专业技术职务等级学位或学历要求资历要求信息系统项目管理师、系统分析师、系统架构设计师、网络规划设计师、系统规划与管理师高级博士学位聘任工程师满2年硕士学位聘任工程师满4年本…

ASP.NET将Session保存到数据库中

因为ASP.NET中Session的存取机制与ASP相同&#xff0c;都是保存在进行中&#xff0c; 一旦进程崩溃&#xff0c;所有Session信息将会丢失&#xff0c;所以我采取了将Session信息保存到SQL Server中&#xff0c;尽管还有其它的几个方式&#xff08;本文不作介绍&#xff09;&…

临时表空间

Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。重启数据库可以释放临时表空间&#xff0c;如果不能重启实例&#xff0c;而一直保持问题sql语句的执行&#xff0c;temp表空间会一直增长。直到耗尽硬盘空间。网…

Intellij idea 出现错误 error:java: 无效的源发行版: 11解决方法

Select the project, then File > ProjectStructure > ProjectSettings > Modules -> sources You probably have the Language Level set at 9: Just change it to 8 借用下别人的图片&#xff0c; 我的默认是11报的错&#xff0c; 改成8后就好了

JavaScript返回上一页代码区别

JavaScript返回上一页代码区别&#xff1a; window.history.go(-1); //返回上一页window.history.back(); //返回上一页//如果要强行刷新的话就是&#xff1a;window.history.back();location.reload();window.location.go(-1); //刷新上一页

计算机房机柜标准尺寸,有哪些参数和尺寸符合机房机柜的安装要求

现如今服务器机房越来越多&#xff0c;不管是自己托管服务器还是租用服务器&#xff0c;机房机柜的选择是很重要的。机房机柜也会跟其高度厚度尺寸等相关。对于需要运行环境和要求高的机房&#xff0c;还需要选择有智能系统的机柜才行。还需要根据一些机房机柜的参数来考虑是否…