在做某个项目的时候,使用主从数据库,master负责update、delete、insert操作,而slave负责select操作。

情景1:发表文章与查看文章

  可以认为这个项目是一个博客系统,这里就以用户发表文章与查看发表的文章为例:

  1、用户发表文章,文章是存到master库中的,insert into Master values (id, content);

  2、发表文章之后,立马跳转到刚才发表的文章阅读,此时的文章是从slave中获取的。select * from slave;

  这个时候,就出现问题了,因为如果网络出现拥堵,或者其他原因,一般情况下,第二个操作都是访问不了刚才发表的文章的。

  小技巧:让用户发表文章后,不立马查看文章,比如跳转到其他页面,给主从同步一点时间。

情景2:注册之后立马登陆

  上面那种想法属于逃避行为,虽然可以解决不能查看文章的问题,但是如果另外一个场景,就有点不适用了,比如:

  1、用户进行了注册,此时数据写到master中。

  2、用户立马进行登录,此时读的是slave。

  这时候,如果用户的速度稍微快一点,那么是不是用户就不能登陆了呢?毕竟数据没有同步到slave,即使用户的用户名和密码都正确,那也是不能登陆的呀。

  小技巧:用户进行注册时,如果注册成功,那么就将用户名和密码保存到JavaScript的全局变量或者cookie中,登陆的时候,将输入的用户名和密码和全局变量或者cookie中的用户名进行对比即可。

收尾

  上面这个想法虽然可行,但是并不安全,即使将账户和密码都加密存在本地,那也是存在安全隐患的。

解决方案

  前面两个问题都可以使用缓存来解决,比如常用的memcache或者redis。

  以发表文章与查看文章为例:

  1、用户发表文章,将数据插入到master,并且将数据添加到memcache或者redis中。

  2、用户查看文章的时候,首先从memcache或者redis中读数据,如果redis中不存在时,再读slave。

  这里可以根据自己的情况选择来决定是先读缓存还是先读slave,如果你的逻辑是发表之后立马查看,那就先读缓存。

  

MySQL 主从同步遇到的问题及解决方案的更多相关文章

  1. mysql主从同步报slave_sql_running:no的解决方案

    1.没有正确设置server_id(如没有正确设置从配置项) ps:可手动设置server_id 2.slave stop;set global sql_slave_skip_counter=1;sl ...

  2. mysql主从同步,主库宕机解决方案

    链接:https://blog.csdn.net/zfl589778/article/details/51441719

  3. mysql主从同步(2)-问题梳理

    之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是M ...

  4. MySQL主从同步那点事儿

    一.前言 关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通 ...

  5. 如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

    如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是 ...

  6. 这次一定要教会你搭建Redis集群和MySQL主从同步(非Docker)

    前言 一直都想自己动手搭建一个Redis集群和MySQL的主从同步,当然不是依靠Docker的一键部署(虽然现在企业开发用的最多的是这种方式),所以本文就算是一个教程类文章吧,但在动手搭建之前,会先聊 ...

  7. mysql主从同步问题梳理

    前言: MySQL主从复制故障机延迟原因有很多,之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题: 1) ...

  8. MySQL主从同步、读写分离配置步骤、问题解决笔记

    MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经 ...

  9. 高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏

    1. MySQL主从同步实现方式 MySQL主从同步是基于Bin Log实现的,而Bin Log记录的是原始SQL语句. Bin Log共有三种日志格式,可以binlog_format配置参数指定. ...

随机推荐

  1. LeetCode算法题-Pascal's Triangle II(Java实现)

    这是悦乐书的第171次更新,第173篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第30题(顺位题号是119).给定非负索引k,其中k≤33,返回Pascal三角形的第k ...

  2. LeetCode算法题-Symmetric Tree(Java实现)

    这是悦乐书的第163次更新,第165篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第22题(顺位题号是101).给定二叉树,检查它是否是自身的镜像(即,围绕其中心对称). ...

  3. SpringCloud之初识Feign ----- 分布式负载自动拼接请求的URL

    在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码: String baseUrl = "http://user-service/user/"; Us ...

  4. Codeforces Round #542 B Two Cakes

    B. Two Cakes time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  5. JavaScript如何计算两个日期间的时间差

    <script type="text/javascript"> /* * 获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒 * 其中 ...

  6. Java面试知识点之线程篇(一)

    前言:在Java面试中,一定会遇到线程相关问题,因此笔者在这里总结Java中有关线程方面知识点,多数从网上得来(文中会贴出主要参考链接),有些也是笔者在面试中所遇到的问题,如有错误,请不吝指正.主要参 ...

  7. P1553 数字反转(升级版)(模拟)

    花了2个小时,写的..mmp只想说,还是我太菜了. #include<iostream> #include<cstring> using namespace std; ]; i ...

  8. Python:Day16 闭包、装饰器

    def outer(): x = 10 def inner(): #条件一.inner就是一个内部函数 print(x) #条件二.引用外部作用域的一个变量,因为x在函数外部的,所以是外部作用域的变量 ...

  9. SQLNET.AUTHENTICATION_SERVICES操作系统认证登录的设定

    $ORACLE_HOME/network/admin/sqlnet.ora 如果使用了SQLNET.AUTHENTICATION_SERVICES=(NTS)则说明可以使用OS认证就,只要conn / ...

  10. wxWidgets 在 Windows 下开发环境配置

    本文基于 CodeBlocks (16.01) 和 wxWidgets (3.0.2) 搭建 Windows 环境下 GUI 开发环境. 1.  CodeBlocks 官网,下载最新版安装包 code ...