MySQL-主备延迟原因及故障切换(一主一备)
正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。但是,MySQL 要提供高可用能力,只有最终一致性是不够的。 还得提供故障切换的能力,也就是主备切换逻辑。 主备延迟 主备切换可能是一个主动的运维动作,比如软件升级、主库所在机器按计划下线等,也可能是被动的,比如说主库…
MySQL主备一致的保障(binlog)
binlog 在 MySQL 的各种高可用方案上扮演了重要角色。今天介绍的可以说是所有 MySQL 高可用方案的基础。在这之上演化出了诸如多节点、半同步、MySQL group replication 等相对复杂的方案。 binlog 的三种格式对比 binlog有三种格式: statementrowmixed 前两种格式的混合。 为了说明binl…
【Redis】Redis的高并发
官方的bench-mark数据:测试完成了50个并发执行100000个请求。设置和获取的值是一个256字节字符串。结果:读的速度是110000次/s,写的速度是81000次/s。redis尽量少写多读,符合缓存的适用要求。单机redis支撑万级,如果10万+可以采用主从复制的模式。 原理 Redis是纯内存数据库,一般都是简单的存取操作,线程占用的…
【Redis】五种数据类型
Redis可以存储键与五种不同数据结构类型之间的映射,这五种不同的数据结构类型分别为: string(字符串),list(列表),set(集合),hash( hash ),和sorted sets(有序集合)。 简单来说,这些基本的数据类型底层数据结构一共有 6 种,分别是简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。它们和数据类型的…
【Redis】通用命令
keys [pattern] 遍历所有key 演示: 127.0.0.1:6379> mset hello world here hey php good physic newton OK 127.0.0.1:6379> keys he* 1) "hello" 2) "here" 127.0.0.…
【Redis】redis.conf详细解读及配置建议
Redis 支持很多的参数,但都有默认值。 daemonize 默认情况下, redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes。 pidfile 当 Redis 在后台运行的时候, Redis 默认会把 pid 文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个 redis 服务时,需要指定不同…
【Redis】源码编译安装
1. 第一步:下载安装包 wget -P /usr/local/src/ https://download.redis.io/releases/redis-6.0.9.tar.gz 版本说明 1. Redis2.6 1) 键的过期时间支持毫秒。 2) 节点支持只读功能。 2. Redis2.8 1) 可以用bind命令绑定多个IP地址 (即设置ip…
MySQL-MVVC实现
数据表中的一行记录,其实可能有多个版本 (row), 每个版本有自己的 row trx_id。 1. “快照”在 MVCC 里是怎么工作的? 为说明InnoDB的MVCC(Multi-Version Concurrency Control 多版本并发控制)新建表t并插入两条数据 CREATE TABLE `t` ( `id` int(11) NOT…
【Redis】简单介绍
Redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings),散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(…
【MySQL】索引“失效”的几个场景
在 MySQL 中,有很多看上去逻辑相同,但性能却差异巨大的 SQL 语句。其实我们要知道,对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能,从而导致让索引失效,不经意间导致整个数据库的压力变大。