MySQL 主从同步遇到的问题及解决方案
在做某个项目的时候,使用主从数据库,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 主从同步遇到的问题及解决方案的更多相关文章
- mysql主从同步报slave_sql_running:no的解决方案
1.没有正确设置server_id(如没有正确设置从配置项) ps:可手动设置server_id 2.slave stop;set global sql_slave_skip_counter=1;sl ...
- mysql主从同步,主库宕机解决方案
链接:https://blog.csdn.net/zfl589778/article/details/51441719
- mysql主从同步(2)-问题梳理
之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是M ...
- MySQL主从同步那点事儿
一.前言 关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通 ...
- 如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?
如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是 ...
- 这次一定要教会你搭建Redis集群和MySQL主从同步(非Docker)
前言 一直都想自己动手搭建一个Redis集群和MySQL的主从同步,当然不是依靠Docker的一键部署(虽然现在企业开发用的最多的是这种方式),所以本文就算是一个教程类文章吧,但在动手搭建之前,会先聊 ...
- mysql主从同步问题梳理
前言: MySQL主从复制故障机延迟原因有很多,之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题: 1) ...
- MySQL主从同步、读写分离配置步骤、问题解决笔记
MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记: 现在使用的两台服务器已经 ...
- 高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏
1. MySQL主从同步实现方式 MySQL主从同步是基于Bin Log实现的,而Bin Log记录的是原始SQL语句. Bin Log共有三种日志格式,可以binlog_format配置参数指定. ...
随机推荐
- Leancloud+Valine打造Hexo个人博客极简评论系统
以下配置是基于Next主题6.1.0版本 效果见个人博客的最下方评论. Leancloud配置 首先访问Leancloud官网https://leancloud.cn/ 有Github账号的小伙伴可以 ...
- js中实现隐藏部分姓名或者电话号码
项目需要, 只显示用户的姓名和手机号开头跟结尾, 其他部分用 * 代替, 借鉴了网上的代码, 参考地址没来得及记下 hidden:function(str,frontLen,endLen) { var ...
- Why do Kafka consumers connect to zookeeper, and producers get metadata from brokers?
Why do Kafka consumers connect to zookeeper, and producers get metadata from brokers? Ask Question u ...
- shopkeep/spark Dockerfile示例
FROM java:openjdk- ENV HADOOP_HOME /opt/spark/hadoop- ENV MESOS_NATIVE_LIBRARY /opt/libmesos-.so ENV ...
- Loj 3058. 「HNOI2019」白兔之舞
Loj 3058. 「HNOI2019」白兔之舞 题目描述 有一张顶点数为 \((L+1)\times n\) 的有向图.这张图的每个顶点由一个二元组 \((u,v)\) 表示 \((0\le u\l ...
- java锁的种类以及辨析(一):自旋锁
作者:山鸡 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) .这些已经写好提供的锁为我们开发提供了便利,但是锁的具 ...
- 7.02-bs4_btc
import requests from bs4 import BeautifulSoup from lxml import etree import json class BtcSpider(obj ...
- SQLite 线程安全和并发
SQLite 与线程 SQLite 是线程安全的. 线程模型 SQLite 支持如下三种线程模型 单线程模型 这种模型下,所有互斥锁都被禁用,同一时间只能由一个线程访问. 多线程模型 这种模型下,一个 ...
- UVA10603-Fill(BFS)
Problem UVA10603-Fill Accept:1162 Submit:10693 Time Limit: 3000 mSec Problem Description There are ...
- BZOJ5197:[CERC2017]Gambling Guide(最短路,期望DP)
Description 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易 ...