集群分享-集群分析
2020-11-27 10:58:30 23 举报
AI智能生成
集群总结,分享不同的组件情况
作者其他创作
大纲/内容
redis
主从架构
模式
一主一从
一主多从
多主一从
级联模式
应用
读写分离
写主,读从
复制原理
主服务器执行bgsave命令,fork子进程生成数据文件rdb文件,然后发送文件给从服务器进行同步
主服务器继续提供服务,记录写命令在缓冲区
从服务器同步完数据文件
主服务器发送缓存去命令给从服务器,从服务器执行命令,完成同步
之后主服务器接收到的每一个写命令,都会异步发送给从服务器进行同步
哨兵模式
是主从架构的增强版。
优势
可以解决主节点宕机后无法提供写服务的问题。
故障通知
故障发送的时候可以发送通知
集群故障恢复后可以通知客户端
选举模式
cluster
hash槽思想。内部16384个槽,每个节点负责一部分的hash槽。对key做crc16算法,然后和16384取余,得到槽数。然后进行命令的执行
高可用
单个机器的宕机不会影响整体服务
只要有一半以上的机器还在提供服务,集群就可以正常运行
注意
宕机的机器没有从节点,则集群不可用
宕机的机器数高于集群总数的一半,集群不可用
zookeeper
所有的节点都是一致的,只是状态不同
特性
一致性保证
每次写操作,都需要一半以上的机器同意,才会写入成功。
任意写,任意读
Leader选举
zab协议
mysql
主从架构
主从架构
模式
一主一从
一主多从
多主一从
级联模式
应用
读写分离
写主,读从
实现
1 安装mysqlrouter,通过调用不同的接口,实现读写分离
2 修改配置文件 /etc/mysqlrouter/mysqlrouter.conf
复制原理
1)若主服务器上的数据集较大,则需要我们将主服务器数据库所有内容做备份,然后发送给从服务器,随后获取二进制日志的文件,及其坐标用于后续的数据同步
2)所谓同步,是主服务器上的二进制日志中的SQL语句,发送到从服务器上的中继日志文件中,然后把这些SQL语句重放实现同步
2)所谓同步,是主服务器上的二进制日志中的SQL语句,发送到从服务器上的中继日志文件中,然后把这些SQL语句重放实现同步
线程
从服务器
IO线程
用来连接主服务器,监控二进制日志的变化,并接受的主服务发送的同步内容
SQL线程
监控,读取并执行中继日志中的SQL语句。并把数据写入数据库中。
主服务器
DUMP线程
将slave请求的二进制日志发送过去
主从复制过程
1.主服务器数据发生修改,写入数据库中,并且记录二进制日志文件中
2.slave的IO线程复制发生变化的二进制日志,并且记录到自己的中继日志中
3.slave的SQL线程,将复制过来的中继日志做重放,保持和master上数据的一致;
2.slave的IO线程复制发生变化的二进制日志,并且记录到自己的中继日志中
3.slave的SQL线程,将复制过来的中继日志做重放,保持和master上数据的一致;
注意⚠️
1.保证每个服务器的server_id设置不同,(后面读写分离做测试方便)
2.主服务器上开启二进制日志文件
3.从服务器关闭二进制日志文件,开启中继日志文件,并且设置read_only=ON
4.主服务器设置参数sync_binlog=1(每发生一次数据变化,就将变化内容写入二进制日志中)
innodb_flush_log_at_trx_commit=1(没提交一个事务,就将事务日志保存到磁盘中)
5.记得记录二进制日志的文件名和坐标
6.在主服务器上授权一个可以用于主从复制的用户
2.主服务器上开启二进制日志文件
3.从服务器关闭二进制日志文件,开启中继日志文件,并且设置read_only=ON
4.主服务器设置参数sync_binlog=1(每发生一次数据变化,就将变化内容写入二进制日志中)
innodb_flush_log_at_trx_commit=1(没提交一个事务,就将事务日志保存到磁盘中)
5.记得记录二进制日志的文件名和坐标
6.在主服务器上授权一个可以用于主从复制的用户
配置
主服务器文件配置
从服务器文件配置
主服务器做数据备份并发给从服务器
从服务器上操作
主主架构
两个服务器,同时开启二进制日志文件和中继日志文件;并相互做change master to操作即可
0 条评论
下一页