当前位置: 首页 > news >正文

跨平台 移动网站开发推广之家app

跨平台 移动网站开发,推广之家app,济南专业做网站公司,电子商务网站规划建设方案前言 搭建参考:搭建Mysql主从复制 为什么要做主从复制? 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。架构的扩展。业务量越来越大,I/O访问频…

前言

搭建参考:搭建Mysql主从复制

为什么要做主从复制?

  1. 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
  2. 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
  3. 读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
  4. 使数据在地理位置上更接近用户,从而降低访问延迟。(游戏分西南大区 华南大区 北部大区等)

Mysql支持三种主要的二进制日志(binlog)格式

1、STATEMENT:基于语句的复制

记录导致数据更改的SQL语句。这种方式效率较高,因为它只需记录执行的语句,但是可能在某些情况下(如使用函数或非确定性操作)导致数据不一致。

  • 优点:效率高
  • 缺点:数据一致性存在问题
    例如:update xxx set time=now() where id=1

2、ROW:基于行的复制

记录实际更改的数据行。这种方式提供了最高的数据一致性,因为它是基于数据更改的,而不是执行的语句。适合所有情况,尤其是当复制环境中存在复杂的SQL或者函数操作时。

  • 优点:数据一致性强
  • 缺点:性能低
    例如:存在一个表,要更新其中10万条数据,那么就会造成十万条记录被写入binary.log日志,造成性能和空间的浪费。

3、MIXED:混合类型的复制

MySQL会根据情况自动选择STATEMENT或ROW模式来记录日志。对于不涉及非确定性函数的简单更新,它可能使用STATEMENT格式;而对于可能引起问题的语句,则使用ROW格式。

Mysql主从复制的实现方式

1、异步复制(Asynchronous Replication)

这是最基础的复制模式,主服务器提交事务后立即返回,而不等待从服务器确认。这种方式下,主从之间的数据延迟可能较大,但写入性能最高。

2、半同步复制(Semi-Synchronous Replication)

MySQL 5.5 引入了半同步复制,在MySQL 8.0 中进一步完善(增强半同步)。在半同步模式下,主服务器必须等待至少一个从服务器确认收到二进制日志事件后才能提交事务。这样保证了至少有一个副本有最新的数据,但可能会影响写入性能。
注:
MySQL 中的增强半同步配置具有一个参数rpl_semi_sync_master_timeout,它定义了主数据库等待备库确认的超时时间。如果超过这个超时时间,主数据库将切换到异步复制模式。

3、完全同步复制(Fully Synchronous Replication):

在某些配置中,可以实现所有从节点都确认后主节点才提交,但这通常会导致写性能显著下降。

主从复制的工作过程

  1. 主节点开启二进制日志,从节点开启中继日志。

  2. Master 节点将数据的改变记录成二进制日志(bin log) ,当Master上的数据发生改变时(增删改),则将其改变写入二进制日志中。

  3. 从节点会在一定时间间隔内对Master的二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/O线程请求主节点的二进制事件。(请求二进制数据)

  4. 同时主节点为每个I/O线程启动一个dump线程,用于通知和向其发送二进制日志,I/O线程接收到bin-log内容后,将内容保存至slave节点本地的中继日志(Relay log)中

  5. 从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,即解析成sql 语句逐一执行,使得其数据和主节点的保持一致。最后I/O线程和SQL线程将进入睡眠状态,等待下一次被唤醒。
    在这里插入图片描述

1、三个线程

  • dump线程:由主数据库开启,用于读取主的二进制日志并传输给从数据库 。用于监听 I/O线程 请求将二进制日志更新的数据发送给slave的I/O 线程
  • io线程:由从数据库开启,用于接收二进制日志并保存为中继日志。
  • sql线程:由从数据库开启,用于将中继日志写入备数据库中完成主从复制。

2、二个日志

  • 中继日志(relay log)只在主从服务器架构的从服务器上存在。从服务器(slave)为了与主服务器(Master)保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。

搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下。

  • 中继日志格式
    文件名的格式是:从服务器名 - relay-bin.序号。中继日志还有一个索引文件:从服务器名 - relay-bin.index,用来定位当前正在使用的中继日志。

主从数据库同步

1、主库数据导出

#所有表只读
FLUSH TABLES WITH READ LOCK; 
#导出所有数据库
mysqldump --all-databases --master-data -u 用户名 -p > dbdump.sql
#释放读锁
UNLOCK TABLES;

2、从库还原

#登录mysql,关闭IO线程
STOP REPLICA IO_THREAD;
#命令行执行导入操作
mysql -u root -p < dbdump.sql
#再次登录mysql,开启IO线程
START REPLICA IO_THREAD;

主从复制的问题及解决方案

Master宕机时,数据丢失问题

使用半同步复制方案,可以解决主库宕机造成的数据丢失问题。参考链接:半同步复制

读写分离方案

1、基于dynamic-datasource-spring-boot-starter实现

此插件基于Mybatis拦截实现,通过判断MappedStatement的SqlCommandType,如果为SELECT,则操作从库,否则操作主库。

@Bean
public MasterSlaveAutoRoutingPlugin masterSlaveAutoRoutingPlugin(){return new MasterSlaveAutoRoutingPlugin();
}
http://www.yayakq.cn/news/85608/

相关文章:

  • 门网站源码农业银行总行门户网站建设
  • 稻香村网站建设安徽省建设厅网站备案
  • 厦门做网站维护的公司私人网站开发公司
  • 怎么看一个网站是不是仿站推荐医疗网站建设
  • 如何用frontpage2003做网站网站建设与维护 东博
  • 代理商加盟项目网站wordpress统计工具
  • 知名的传媒行业网站开发做网站工资怎么样
  • 网站论坛做斑竹河南省建筑信息平台
  • 汉字域名的网站电子商务网站建设考题与答案
  • 手机营销型网站建设公司好兄弟资源网在线看片
  • 藤虎网络广州网站建设青岛seo推广公司
  • seo网站地图怎么做深圳推广系统
  • 制作公司网站在公账汇款时用途备注什么烟台市做网站的价格
  • python网站开发流程网络规划设计师考试内容有哪些
  • 中小型网站服务器搭建方案佛山购物网站建设
  • 网站制作和推广网站分类导航代码
  • 安顺做网站的公司直接做网站的软件
  • 郑州网站建设中心如何扫描一个网站的漏洞
  • php网站开发实训实践总结域名可以做网站吗
  • 青海企业网站建设开发企业管理培训课程价格
  • 简单门户网站模板手机上如何申请营业执照
  • 图片网站源码asp临沂建站程序
  • 网站设计建设公司需要什么资质泗泾做网站
  • 网站备案 教程湛江专业建站推广机构
  • 广州 天河网站设计小程序开发需要什么技术
  • 建站行业的乱象友情链接获取的途径有哪些
  • 安徽建设工程建设信息网站阿里网站建设
  • 迅睿cms建站教程博客园wordpress主题
  • 网站相关推荐怎么做做网站外包公司有哪些
  • 男女做暧暧网站wordpress模板云端