通俗易懂:MySQL中如何设置只读实例并确保数据一致性?
在MySQL中设置只读实例主要应用于构建高可用性和扩展性的数据库环境,通常是为了分担读取负载或者用于备份和灾难恢复。以下是创建MySQL只读实例并确保数据一致性的基本步骤:
1. 创建并配置只读实例
-
主从复制设置
- 首先,你需要有一个主数据库实例(Master)负责接收所有的写操作。
- 创建一个或多个从数据库实例(Slave),并将它们配置为主数据库的复制品。这通常通过设置主从复制(Replication)来实现,其中从库会接收到主库binlog(二进制日志)并通过I/O线程和SQL线程将其应用到自己的数据库中,从而保持数据同步。
-
只读设置
- 在从库上,可以设置全局变量 `read_only` 为1,使实例变为只读模式。这可以防止任何非特权用户的写入操作:
SET GLOBAL read_only = 1;
- 对于更严格的只读控制,MySQL 5.7.8及更高版本引入了 `super_read_only` 变量,即使有超级用户也不能在该实例上执行写操作,除非禁用此变量。
-
同步延迟设置
(可选):
- 在某些场景下,你可以配置只读实例延时复制,这样从库会在一段时间后才应用主库的更改,这可以用于数据分析或回溯查询等目的。
2. 确保数据一致性
-
主从复制机制
MySQL通过二进制日志和基于GTID(全局事务标识符)的复制技术(从MySQL 5.6开始推荐使用)来保证主从之间的数据一致性。
- 主库上的每一次事务提交都会被记录到binlog中,从库按照相同的顺序和事务边界来执行这些操作,从而维持与主库相同的数据状态。
-
监控与故障转移
- 应持续监控主从复制的状态,确保从库跟主库没有复制滞后或错误。
- 如果主库出现问题,可以将某个最新的从库提升为主库,但在此之前需要确保其数据是最新的,并且已经停止了只读设置。
-
应用层处理
- 在应用程序设计时,应当考虑到只读实例可能存在的延迟,并确保在读写分离的架构中正确路由读写请求。
对于云服务商提供的RDS(如阿里云RDS、AWS RDS、华为云RDS等),通常会提供便捷的方式来创建和管理只读实例,包括自动化的主从切换、只读实例的读取延迟设置等功能。在设置只读实例时,平台会自动处理大部分复制配置工作,同时提供监控和告警工具来帮助管理员确保数据的一致性。【电影院排片选择】
假设光头强是一位影院经理,而熊二是他的助手。他们每天的工作之一是为电影安排放映场次及影厅。有两部电影《动画总动员》和《科幻大片》,观众反响都很热烈。
情况一:
- 《动画总动员》已经有一份详细的观众年龄与喜好调查报告(相当于索引),可以根据这份报告快速定位到目标观众群体;
- 《科幻大片》虽然受欢迎但没有具体观众数据,只能逐一通知所有会员(相当于全表扫描)。
光头强作为“查询优化器”,他需要决定是利用《动画总动员》的观众报告精准排片,还是对《科幻大片》进行全面宣传推送。
决策过程:
光头强评估发现,《动画总动员》的报告能高效锁定潜在观众,节省宣传成本,因此优先考虑在黄金时段为其安排影厅。而对于《科幻大片》,由于缺乏有效数据,可能会采取大面积宣传并在多个时间段试播,观察上座率后调整策略。
在这个例子中,光头强就如同MySQL查询优化器,他会基于现有信息(统计数据)来判断哪种“执行计划”(排片策略)能够更高效地达到预期效果(吸引更多观众观影),从而做出最佳决策。
相关文章:
通俗易懂:MySQL中如何设置只读实例并确保数据一致性?
在MySQL中设置只读实例主要应用于构建高可用性和扩展性的数据库环境,通常是为了分担读取负载或者用于备份和灾难恢复。以下是创建MySQL只读实例并确保数据一致性的基本步骤: 1. 创建并配置只读实例 - 主从复制设置 - 首先,你需要有一个主数…...
一文了解Java核心知识——线程池
介绍 什么是线程池? 管理一系列线程的资源池。当有任务要处理时,直接从线程池中获取线程来处理,处理完之后线程并不会立即被销毁,而是等待下一个任务。 为什么要使用线程池? 池化技术的思想主要是为了减少每次获取资…...
Redis热点Key问题分析与解决
目录 一、问题现象描述 二、什么是热点Key 三、热点Key的危害 3.1 Redis节点负载过高 3.2 Redis集群负载不均 3.3 Redis集群性能下降 3.4 数据不一致 3.5 缓存击穿 四、热点Key产生的原因分析 4.1 热点数据 4.2 业务高峰期 4.3 代码逻辑问题 五、如何检测热点Key …...
深度学习armv8/armv9 cache的原理
快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 1、为什么要用cache? ARM 架构刚开始开发时,处理器的时钟速度和内存的访问速度大致相似。今天的处理器内核要复杂得多,并且时钟频率可以快几个数量级。然…...
Python基础之pandas:文件读取与数据处理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、文件读取1.以pd.read_csv()为例:2.数据查看 二、数据离散化、排序1.pd.cut()离散化,以按范围加标签为例2. pd.qcut()实现离散化3.排序4.…...
基于Springboot旅游网站管理系统设计和实现
基于Springboot旅游网站管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…...
深度解析C语言——预处理详解
对C语言有一定了解的同学,相信对预处理一定不会陌生。今天我们就来聊一聊一些预处理的相关知识。预处理是在编译之前对源文件进行简单加工的过程,主要是处理以#开头的命令,例如#include <stdio.h>、#define等。预处理是C语言的一个重要…...
idea2023.2.1 java项目-web项目创建-servlet类得创建
如何创建Java项目 1.1 方式1: 1.2 方式: 1.3 方式 如何创建web项目 方式 ----- 推荐 如何创建servlet类 复制6 中得代码 给servlet 配置一个路径 启动tomcat 成功了...
Ollama教程——入门:开启本地大型语言模型开发之旅
Ollama教程——入门:开启本地大型语言模型开发之旅 引言安装ollamamacOSWindows预览版LinuxDocker ollama的库和工具ollama-pythonollama-js 快速开始运行模型访问模型库 自定义模型从GGUF导入模型自定义提示 CLI参考创建模型拉取模型删除模型复制模型多行输入多模态…...
基于PHP的新闻管理系统(用户发布版)
有需要请加文章底部Q哦 可远程调试 基于PHP的新闻管理系统(用户发布版) 一 介绍 此新闻管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。本新闻管理系统采用用户发布新闻,管理员审核后展示模式。 技术栈&am…...
基础篇3 浅试Python爬虫爬取视频,m3u8标准的切片视频
浅试Python爬取视频 1.页面分析 使用虾米视频在线解析使用方式:https://jx.xmflv.cc/?url目标网站视频链接例如某艺的视频 原视频链接 解析结果: 1.1 F12查看页面结构 我们发现页面内容中什么都没有,video标签中的src路径也不是视频的数据。 1.2 …...
Adaboost集成学习 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测)
目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测) 模型设计 股票价格预测是一个具有挑战性的时间序列预测问题,可以使用深度学习模型如双向长短期记忆…...
MySQL两表联查之分组成绩第几问题
MySQL 数据库操作实践:两表联查之分组成绩第几问题 在本篇博客中,我将展示MySQL 从创建表、到插入数据,并进行一些复杂的查询操作。 1. 建立表格 首先,我们创建两个表:department(部门)和 em…...
每日一题(leetcode2952):添加硬币最小数量 初识贪心算法
这道题如果整体去思考,情况会比较复杂。因此我们考虑使用贪心算法。 1 我们可以假定一个X,认为[1,X-1]区间的金额都可以取到,不断去扩张X直到大于target。(这里为什么要用[1,X-1]而不是[1,X],总的来说是方便,潜在思想…...
[Errno 2] No such file or directory: ‘g++‘
报错解释: 这个错误表明系统试图访问名为g++的文件或目录,但没有找到。g++是GNU编译器集合(GNU Compiler Collection)中的C++编译器。如果系统中没有安装g++或者g++不在环境变量的路径中,就会出现这个错误。 解决方法: 确认g++是否已安装: 在Linux上,可以尝试运行g+…...
go的通信Channel
一、channel是什么 1.一种通信机制 channel是goroutine与goroutine之间数据通信的一种通信机制。一般都是2个g及以上一起工作。 channel与关键字range和select紧密相关。 二、channel的结构 go源码:GitHub - golang/go: The Go programming language src/runt…...
手写红黑树【数据结构】
手写红黑树【数据结构】 前言版权推荐手写红黑树一、理论知识红黑树的特征增加删除 二、手写代码初始-树结点初始-红黑树初始-遍历初始-判断红黑树是否有效查找增加-1.父为黑,直接插入增加-2. 父叔为红,颜色调换增加-3. 父红叔黑,颜色调换&am…...
[蓝桥杯练习]通电
kruskal做法(加边) #include <bits/stdc.h> using namespace std; int x[10005],y[10005],z[10005];//存储i点的x与y坐标 int bcj[10005];//并查集 struct Edge{//边 int v1,v2; double w; }edge[2000005]; int cmp(Edge a, Edge b){return a.w < b.w;} int find(i…...
安全算法 - 摘要算法
摘要算法是一种将任意长度的数据转换为固定长度字节串的算法。它具有以下特点和应用。 首先,摘要算法能够生成一个唯一且固定长度的摘要值,用于验证数据的完整性和一致性。无论输入数据有多长,生成的摘要值始终是固定长度的,且即…...
操作系统:动静态库
目录 1.动静态库 1.1.如何制作一个库 1.2.静态库的使用和管理 1.3.安装和使用库 1.4.动态库 1.4.1.动态库的实现 1.4.2.动态库与静态库的区别 1.4.3.共享动态库给系统的方法 2.动态链接 2.1.操作系统层面的动态链接 1.动静态库 静态库(.a)&…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
前端开发者常用网站
Can I use网站:一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use:Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站:MDN JavaScript权威网站:JavaScript | MDN...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...
