1. postgresql架构与原理。
PostgreSQL 9.1之前,主从复制传输以WAL日志文件为单位,主库写完一个WAL日志文件后才传送到备库,这种方式导致主备延迟特别大。
9.1引入了主备流复制,传输单位是WAL日志的record,备库不断从主库同步相应的数据,并apply每个WAL record,因此9.1能够做到同步复制。同时9.1提供了Hot Standby,备库在应用WAL record的同时能够提供只读服务,大大提升了用户体验。
1.1 主备流复制架构
PG主备流复制的核心由三个进程组成:
- walsender:用于主库发送WAL日志记录至从库
- walreceiver:用于从库接收主库的WAL日志记录
- startup:用于从库apply日志
1.2 流复制的启动
1.2.1 启动过程
本节探讨流复制的启动顺序,以了解三个核心进程如何启动,以及它们之间如何建立连接
(1)启动主、备服务器
(2)备节点启动startup进程
(3)备节点启动walreceiver进程
(4)walreceiver进程向主节点发送连接请求,如果主库尚未启动,walreceiver会定期重发该请求
(5)当主节点收到连接请求时,将启动walsender进程,并建立walsender与walreceiver之间的TCP连接
(6)walreceiver发送备节点最新的LSN,这个阶段在IT领域称为握手机制
(7)如果备库最新LSN小于主库最新LSN(落后),walsender会将前一个LSN到后一个LSN之间的wal数据发送到walreceiver。这个阶段就是备库追赶主库的阶段。
(8)流复制开始工作
1.2.2 walsender状态
通过pg_stat_replication视图可以查看所有正在运行的walsender状态
SELECT client_addr,client_port,application_name,state,sync_state FROM pg_stat_replication;
walsender进程可能的状态如下:
start-up:上图(5)~(6)
catch-up:上图(7)
streaming:上图(8)
backup:由于备份发送整个数据库集群的文件,比如pg_basebackup
1.2.3 备节点长期停机再启动后,会发生什么?
9.4以前,如果备节点请求的wal段在主节点已被覆盖,那么备节点将无法追上主节点。这个问题没有什么好的解决方案,只能把wal_keep_segments参数增大,减少发生的可能性。
9.4开始,这个问题可以使用复制槽(replication slot)来预防——通过暂停walreceiver进程,将含有未发送wal段的pg_xlog保存在复制槽中。复制槽可提高wal数据发送灵活性性,主要用于逻辑复制。
2. 基于流复制完成postgresql的高可用。
流复制包含两个方面:日志传输和数据同步。
流复制是基于日志传输的,主节点会在写入日志记录时,将WAL数据发送到已连接的备节点。 同步复制需要数据库同步,主节点与多个备节点通信,从而同步整个数据库集群。
3. 实现postgresql的时间点还原。
PostgreSQL的“时间点恢复”(PITR)也称为增量数据库备份,在线备份或可能是存档备份。
PostgreSQL服务器记录所有用户的数据修改事务,例如插入,更新或删除,并将其写入文件调用预写(WAL)日志文件中。 该机制使用存储在WAL文件中的历史记录来进行自上次数据库完全备份以来所做的前滚更改。
4. 规划高可用的LAMP,要求wordpress网站放在NFS共享存储上,并且用户可以正常发布博客,上传图片。尝试更新wordpress版本,测试网站仍可用。
1.实验需求
________________________________________
(1)nfs server导出/data/application/web,在目录中提供wordpress;
(2)nfs client挂载nfs server导出的文件系统,至/var/www/html;
(3)客户端1(lamp)部署wordpress,并让其正常访问,要确保正常发文章,上传图片。
(4)客户端2(lamp),挂载nfs server导出的文件系统至/var/www/html,验证其wordpress是
否可被访问,要确保能正常发文章,上传图片。
(5)nfs server 导出/mydata/目录;
(6)nfs client挂载/mydata/至本地的/mydata目录,mysqld或mariadb服务的数据目录设置为/mydata, 要求服务能正常启动,且可正常存储数据。
2.服务器规划
________________________________________
服务器版本 角色 主机名 IP地址
centos7.2x86_64 web服务器01(apache+php)
nfs客户端 web01 172.16.52.51
centos7.2x86_64 web服务器02(apache+php)
nfs客户端 web02 172.16.52.52
centos7.2x86_64 mysqld数据库服务
nfs客户端 db 172.16.52.53
centos7.2x86_64 nfs服务端 nfs 172.16.52.54
部署NFS服务端及nfs客户端
________________________________________
3.1 配置nfs服务端
(1)安装nfs软件
[root@nfs ~]# yum -y install nfs-utils
[root@nfs ~]# rpm -qa nfs-utils
nfs-utils-1.3.0-0.21.el7.x86_64
(2)启动nfs服务
开机自启动nfs服务:
[root@nfs ~]# systemctl enable rpcbind.service
[root@nfs ~]# systemctl enable nfs-server.service
启动rpcbind和nfs服务:
注意要先启动rpcbind
[root@nfs ~]# systemctl start rpcbind.service
[root@nfs ~]# systemctl start nfs.service
查看nfs状态:
[root@nfs ~]# rpcinfo -p
(3)配置nfs服务
[root@nfs ~]# cat /etc/exports
/data/application/web 172.16.0.0/16(rw,sync,anonuid=888,anongid=888)
/mydata 172.16.0.0/16(rw,sync,anonuid=3306,anongid=3306)
重新导出:
[root@nfs ~]# exportfs -arv
exporting 172.16.0.0/16:/data
exporting 172.16.0.0/16:/data/application/web
为nfs共享文件创建授权用户(uid):
这里我们不使用默认的nfsnobody用户
[root@nfs ~]# groupadd -g 888 apache
[root@nfs ~]# useradd -u 888 -g apache -s/sbin/nologin -M apache
[root@nfs ~]# id apache
uid=888(apache) gid=888(apache) groups=888(apache)
[root@nfs ~]# chown apache.apache/data/application/web
[root@nfs ~]# ls -ld /data/application/web/
drwxr-xr-x 2 apache apache 6 Jul 20 04:27/data/application/web/
[root@nfs ~]# groupadd -g 3306 mysql
[root@nfs ~]# useradd -u 3306 -g mysql -s/sbin/nologin -M mysql
[root@nfs ~]# id mysql
uid=3306(mysql) gid=3306(mysql) groups=3306(mysql)
[root@nfs ~]# chown mysql.mysql /data
[root@nfs ~]# ls -ld /data
drwxr-xr-x 4 mysql mysql 35 Jul 20 04:27 /data
3.2 配置nfs客户端
注:3个nfs客户端配置都一样
安装软件包:
[root@db ~]# yum -y install nfs-utils
启动rpcbind:
客户端只用启动rpcbind即可。
[root@db ~]# systemctl start rpcbind
4.部署lamp环境
________________________________________
说明:本次lamp环境采用rpm包安装,数据库分离
web01 和web02 配置一样。
为了方便测试:web01域名blog.magedu.com;web02域名blog02.magedu.com
4.1 安装软件
[root@web01 ~]# yum -y install httpd php php-mysql
4.2 配置虚拟主机
[root@web01 conf.d]# cat blog.conf
<VirtualHost *:80>
ServerNameblog.magedu.com
DocumentRoot"/var/www/html"
CustomLog"/var/log/httpd/blog/access_log" combined
ErrorLog "/var/log/httpd/blog/error_log"
<Directory"/var/www/html">
OptionsNone
AllowOverrideNone
Requireall granted
</Directory>
</VirtualHost>
5. 部署mariadb数据库服务
________________________________________
mariadb采用通用二进制安装
[root@db soft]# ln -sv mariadb-5.5.46-linux-x86_64 mariadb
[root@db soft]#ls
mariadb mariadb-5.5.46-linux-x86_64
5.1 创建mysql用户
[root@db soft]# groupadd -g 3306 mysql
[root@db soft]# useradd -u 3306 -g mysql mysql
[root@db soft]# id mysql
uid=3306(mysql) gid=3306(mysql) groups=3306(mysql)
5.2 创建数据目录并授权
[root@db soft]# mkdir /mydata
[root@db soft]# chown -R mysql.mysql /mydata
[root@db soft]# ls -ld /mydata
drwxr-xr-x 2 mysql mysql 6 Jul 20 07:27 /mydata
5.3 初始化数据库
[root@db mariadb]# chown -R root.mysql /data/soft/mariadb/
[root@db mariadb]# cd /data/soft/mariadb
[root@db mariadb]# scripts/mysql_install_db--user=mysql --datadir=/mydata --basedir=/data/soft/mariadb
5.4 配置/etc/my.cnf
# cp support-files/my-large.cnf /etc/my.cnf
vim /etc/my.cnf
[mysqld]
port = 3306
basedir = /data/soft/mariadb
datadir = /data/mydata
innodb_file_per_table = 1 #让innodb表每个表一个表空间文件。
5.5 配置mysqld启动脚本
复制mysql启动脚本到/etc/init.d/mysqld
[root@db ~]# cp /data/soft/mariadb/support-files/mysql.server/etc/init.d/mysqld
[root@db ~]# chmod 755 /etc/init.d/mysqld
[root@db ~]# sed -i‘s#/usr/local/mysql#/data/soft/mariadb#g‘ /etc/init.d/mysqld
[root@db ~]# chkconfig --add mysqld
修改PATH环境变量:
[root@db mariadb]# cat /etc/profile.d/mysql.sh
export PATH=/data/soft/mariadb/bin:$PATH
配置库文件搜索路径:
[root@db mariadb]# echo"/data/soft/mariadb/lib" > /etc/ld.so.conf.d/mysqld.conf
[root@db mariadb]# ldconfig
5.6 启动mysqld服务
[root@db /]# service mysqld start
Starting MySQL.. SUCCESS!
[root@db /]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 7668mysql 15u IPv4 23521 0t0 TCP *:mysql (LISTEN)
5.7 测试php与数据库的连接
注:事先创建好相关的库和用户
在web服务器站点下创建mysql.php 文件
[root@web01 html]# cat mysql.php
<?php
$conn= mysql_connect(‘172.16.52.53‘,‘wordpress‘,‘123456‘);
if($conn)
echo‘connect 172.16.52.53 is OK‘;
else
echo‘failure‘;
?>
5.8 把nfs服务端的/mydata/目录挂载至本地的/mydata
[root@db ~]# showmount -e 172.16.52.54
Export list for 172.16.52.54:
/mydata 172.16.0.0/16
/data/application/web 172.16.0.0/16
[root@db ~]# ls -ld /mydata/
drwxr-xr-x 6 mysql mysql 4096 Jul 21 06:05 /mydata/
[root@nfs /]# ls -ld /mydata
drwxr-xr-x 6 mysql mysql 4096 Jul 21 06:05 /mydata
把本地mysql数据目录/mydata里面的文件复制到nfs服务端的/mydata目录里
[root@db ~]# scp -r /mydata/*root@172.16.52.54:/mydata
重新对nfs服务端/mydata/下面的文件授权:
chown -R mysql.mysql /mydata
挂载:
mount -t nfs 172.16.52.54:/mydata /mydata
重启mysqld测试:
[root@db ~]# service mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL.. SUCCESS!
ok,没有问题。
6.部署web服务器站点目录
________________________________________
6.1 LAMP 01部署wordpress站点
站点目录严格授权:
[root@web01 html]# chown -R root.root/var/www/html/
[root@web01 html]# find /var/www/html/ -type f|xargs chmod 644
[root@web01 html]# find /var/www/html/ -type d|xargs chmod 755
[root@web01 html]# chown -R apache.apache/var/www/html/wordpress/wp-content
6.2 把nfs服务端的/data/application/web 挂载至web01本地的/var/www/html
(1)把/var/www/html下面的文件复制到/data/application/web目录下面
[root@web01 ~]# scp -rp /var/www/html/*root@172.16.52.54:/data/application/web/
(2)授权
[root@nfs~]# chown -R apache.apache /data/application/web/wordpress/wp-content/
(3)挂载
[root@web01 ~]# showmount -e 172.16.52.54
Export list for 172.16.52.54:
/mydata 172.16.0.0/16
/data/application/web 172.16.0.0/16
[root@web01 wordpress]# mount -t nfs 172.16.52.54:/data/application/web/var/www/html
6.3 把nfs服务端的/data/application/web 挂载至web02本地的/var/www/html
(1)挂载
[root@web02 ~]# mount -t nfs172.16.52.54:/data/application/web /var/www/html
(2)访问blog02.magedu.com/wordpress/index.php
7. 总结
________________________________________
本次实验实现了web站点数据的共享,一定程度上实现session共享和负载均衡的功能。
5. redis数据类型有哪些?
Redis主要支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
5.1 String(字符串)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
常用命令:set、get、decr、incr、mget等。
注意:一个键最大能存储512MB。
5.2 Hash(哈希)
Redis hash 是一个键值(key=>value)对集合;是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
每个 hash 可以存储 232 -1 键值对(40多亿)。
常用命令:hget、hset、hgetall等。
应用场景:存储一些结构化的数据,比如用户的昵称、年龄、性别、积分等,存储一个用户信息对象数据。
5.3 List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
list类型经常会被用于消息队列的服务,以完成多程序之间的消息交换。
常用命令:lpush、rpush、lpop、rpop、lrange等。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
5.4 Set(集合)
Redis的Set是string类型的无序集合。和列表一样,在执行插入和删除和判断是否存在某元素时,效率是很高的。集合最大的优势在于可以进行交集并集差集操作。Set可包含的最大元素数量是4294967295。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
应用场景:
1、利用交集求共同好友。
2、利用唯一性,可以统计访问网站的所有独立IP。
3、好友推荐的时候根据tag求交集,大于某个threshold(临界值的)就可以推荐。
常用命令:sadd、spop、smembers、sunion等。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
5.5 zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
sorted set是插入有序的,即自动排序。
常用命令:zadd、zrange、zrem、zcard等。
当你需要一个有序的并且不重复的集合列表时,那么可以选择sorted set数据结构。
应用举例:
(1)例如存储全班同学的成绩,其集合value可以是同学的学号,而score就可以是成绩。
(2)排行榜应用,根据得分列出topN的用户等。
6. redis RDB和AOF比较?
由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入文件)。
6.1 RDB的特点
基本原理:RDB持久化主要是通过SAVE和BGSAVE两个命令对Redis数据库中当前的数据做snapshot并生成rdb文件来实现的。其中SAVE是阻塞的,BGSAVE是非阻塞的,通过fork了一个子进程来完成的。在Redis启动的时候会检测rdb文件,然后载入rdb文件中未过期的数据到服务器中
配置信息:RDB可以通过向服务器提供配置信息来自动间隔性保存。如默认情况下服务器满足以下3个条件中任意一个条件就会触发BGSAVE命令
save 900 1 // 服务器在900秒之内,对数据库进行了至少1次修改
save 300 10 // 服务器在300秒之内,对数据库进行了至少10次修改
save 60 10000 // 服务器在60秒之内,对数据库进行了至少10000次修改
6.2 AOF的特点
基本原理:AOF(Append Only File)持久化是通过将存储每次执行的客户端命令,然后由一个伪客户端来执行这些命令将数据写入到服务器中的方式实现的。一共分为命令追加(append)、文件写入、文件同步(sync)三个步骤完成的
命令追加:当有修改、删除操作时,服务器会在执行完之后以协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区的末尾
文件写入:AOF日志重写功能 :AOF日志文件过大,redis会自动重写AOF日志,append模式不断的将更新记录写入到老日志文件中,同时redis还会创建一个新的日志文件用于追加后续的记录。
6.3 RDB和AOF的比较
两者区别
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程就是有一个fork子进程,先将数据集写入到临时文件中,写入成功后,再替换之前的文件,用二进制压缩存储。
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
RDB可以理解为是一种全量数据更新机制,AOF可以理解为是一种增量的更新机制,AOF重写可以理解为是一种全量+增量的更新机制(第一次是全量,后面都是增量)
- RDB适合服务器数据库数据量小,写命令频繁的场景
- AOF适合数据量大,写命令少的场景
- AOF重写适合在AOF运行了很久的写命令之后执行
两者优缺点
RDB的优缺点:
优点:RDB持久化文件,速度比较快,而且存储的是一个二进制文件,传输起来很方便。
缺点:RDB无法保证数据的绝对安全,有时候就是1s也会有很大的数据丢失。
AOF的优缺点:
优点:AOF相对RDB更加安全,一般不会有数据的丢失或者很少,官方推荐同时开启AOF和RDB。
缺点:AOF持久化的速度,相对于RDB较慢,存储的是一个文本文件,到了后期文件会比较大,传输困难。
- redis配置文件详解。
1、replica-serve-stale-data yes # 当从库同主库失去连接或者复制正在进行,从机库有两种运行方式:
-
如果 replica serve stale data 设置为 yes( 默认设置 )),从库会继续响应客户端的 读 请求。
-
如果 replicaserve stale data 设置为 no ,除 去指定的命令之外的任何请求都会返回一个错误 "SYNC with master in progress" 。
2、replica-read-only yes # 是否设置从库只读
3、repl-diskless-sync no 是否使用 socket 方式复制数据, 目前 redis 复制提供两种方式, disk 和 socket 如果新的 slave 连上来或者重连的 slave 无法部分同步,就会执行全量同步, master 会生成 rdb 文件,有2 种方式:
1)disk 方式是 master 创建一个新的进程把 rdb 文件保存到磁盘,再把磁盘上的 rdb 文件传递给 slave socket 是 master 创建一个新的进程,
直接把 rdb 文件以 socket 的方式发给 slave disk 方式的时候,当一个 rdb 保存的过程中,多个 slave 都能共享这个 rdb 文件。
2)socket 的方式就是 一个个 slave顺序复制, 只有在磁盘速度缓慢但是 网络相对较 快的情况下才使用 socket 方式,否则使用默认的disk方式。
4、repl-diskless-sync-delay 30 #diskless 复制的延迟时间, 设置 0为关闭 一旦复制开始还没有结束之前,master 节点不会再接收新 slave 的复制请求, 直到下一次开始。
5、repl-ping-slave-period 10 #slave 根据 master 指定 的时间进行周期性的 PING 监测
6、repl-timeout 60 复制链接超时时间,需要大于 repl ping slave period 否则会 经常 报超时
7、repl-disable-tcp-nodelay no 在 socket 模式下是否在slave 套接字发送 SYNC之后禁用TCP_NODELAY
如果你选择“yes Redis 将使用更少的 TCP 包和带宽来向 slaves 发送数据。但是这 将使数据传输到 slave上有延迟, Linux 内核的默认配置会达到 40毫秒,
如果你选择了 "no" 数据传输到 salve 的延迟将会减少但要使用更多的带宽。
8、repl-backlog-size 1mb 复制缓冲区大小, 只有在 slave 连接之后 才 分配内存 。
9、repl-backlog-ttl 3600 多次时间 master 没有 slave 连接,就清空 backlog 缓冲区 。
10、replica-priority 100 当 master 不可用,Sentinel 会根据 slave 的优先级选举一个 master 。最低的优先级的 slave ,当选 master 。而配置成 0,永远不会被选举。
11、requirepass foobared 设置 redis 连接密码,配置了redis,必须设置密码,防止被入侵之后被黑客搞破坏。
12、rename-command 重命名 一些高 危命令
13、maxclients 10000 最大连接客户端
14、maxmemory 最大内存 单位为 bytes 字节 8G 内存 的 计算方式 8 G ))*1024 ( MB)*1024 ( KB)*1024 Kbyte,用bc命令可以计算;
需要注意的是 slave 的输出缓冲区是不计算在 maxmemory 内 ,此最大内存应该最大占计算机内存的一半,留一部分内存用来做快照使用。
15、appendonly no #是否开启 AOF 日志 记录 默认 redis使用的是 rdb 方式持久化,这种方式在许多应用中已经足够用了。但是 redis 如果中途宕机,会导致可能有几分钟的数据丢失,
根据 save 来策略进行持久化,Append Only File 是另一种持久化方式,可以提供更好的持久化特性。 Redis 会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时 Redis 都会先把这个文件的数据读入内存里,先忽略 RDB 文件。
16、appendfilename "appendonly.aof" #AOF文件名
17、appendfsync everysec #aof 持久化策略的配置 no 表示不执行 fsync 由操作系统保证数据同步到磁盘 ,always 表示每次写入都执行 fsync ,以保证数据同步到磁盘 ,everysec 表示每秒执行一次 fsync ,
可能会导致丢失这 1s 数据。
18、no-appendfsync-on-rewrite no(推荐为yes) 在 aof rewrite 期间 是否对 aof 新记录的 append 暂缓使用文件同步策略 主要考虑磁盘 IO 开支和请求阻塞时间。默认为 no, 表示不暂缓新的 aof 记录仍然会被立即同步
Linux 的默认fsync策略是30 秒,如果为 yes 可能丢失 30 秒数据 ,但由于yes性能较好,而且会避免出现阻塞, 因此比较推荐 。
19、auto-aof-rewrite-percentage 100 # 当 Aof log增长超过指定百分比例时,重写 logfile设置为0表示不自动重写 Aof 日志,重写是为了使 aof 体积保持最小,而确保保存最完整的数据。
20、auto-aof-rewrite -min size 64mb # 触发 aof rewrite 的最小文件大小
21、aof-load-truncated yes 是否加载 由于 其他原因 导致 的 末尾 异常 的 AOF文件主进程被 kill/ 断电等
当文件存在问题时,可以针对不同的文件进行修复操作:可以修复aof和rdb后缀的文件。
打开此功能,就会在/apps/redis/data/目录下生成appendonly.aof后缀的文件。
22、aof-use-rdb-preamble yes #r edis4.0 新增 RDB AOF 混合持久化格式,在开启了这个功能之后, AOF 重写产生的文件将同时包含 RDB 格式的内容和 AOF 格式的内容,其中 RDB 格式的内容用于记录已有的数
据,而 AOF 格式的内存则用于记录最近发生了变化的数据,这样 Redis 就可以同时兼有 RDB 持久化和AOF 持久化的优点(既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据)。
23、luatime-limit 5000 #lua 脚本 的 最大 执行时间单位为毫秒
24、cluster-enabled yes 是否开启集群模式,默认是单机模式
25、cluster-config-file-nodes 6379.conf 由 node节点自动生成的集群配置 文件
26、cluster-node-timeout 15000 集群中node节点连接 超时时间
27、cluster-replica-validity-factor 10 在 执行故障转移的时候可能有些节点和 master 断开一段时间数据比较旧 这些 节点就 不适用于选举为 master 超过这个时间的就不会被进行故障转移
28、cluster-migration-barrier 1 一个主节点拥有的至少正常工作的从节点 即如果主节点的 slave 节点故障后, 会 将多余的从节点 分配 到当前主节点 成为 其 新的 从节点。
29、cluster-require-full-coverage no 集群 槽位覆盖 如果 一个 主库宕机 且 没有备库就会出现集群槽位不全 那么 yes 情况下 redis 集群 槽位 验证不全就不再对外提供服务,
而 no 则可以继续使用但是会出现查询数据查不到的情况 (因为有数据丢失) 。
#Slow log 是 Redis 用来记录查询执行时间的日志系统 slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启slow log而损害 Redis 的速度。
30、slowlog-log-slower than 10000 以微秒 为单位 的 慢日志记录, 为 负数会禁用慢日志,为0会记录 每个命令操作。
31、slowlog-max-len 128 # 记录多少条慢日志 保存在 队列,超出后会删除最早的,以此滚动删除