论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
大数据
›
数据仓库与分析
›
ZooKeeper运维——数据备份与恢复(事务日记+快照日记, ...
ZooKeeper运维——数据备份与恢复(事务日记+快照日记,万字总结,你想要的 ...
东湖之滨
金牌会员
|
2024-7-22 07:50:42
|
显示全部楼层
|
阅读模式
楼主
主题
976
|
帖子
976
|
积分
2932
三、事务日记
<hr> ZooKeeper得当读多写少的场景,读操纵险些是内存级别的,这得益于ZooKeeper将数据生存在内存中。数据在内存中,就有一个问题,ZooKeeper重启了数据还会在吗?
当然在了,ZooKeeper将数据以事务日记形式持久化到文件中。每个更新请求,必须先将事务日记写到文件中,然后才把数据同步到内存数据库。
1、事务日记存放目录
事务日记文件默认存储在dataDir目录下,因为每次事务请求都是一次磁盘IO操纵,事务日记的写入性能直接影响了ZooKeeper对事务请求的吞吐,为了更高的吞吐和低耽误,发起单独为事务日记设置一个目录dataLogDir,以免受其他操纵影响。
dataLogDir下会先生成一个子目录version2,2表示ZooKeeper日记格式的版本号,同一版本的日记可以相互迁移恢复数据。version2下才是事务日记文件。
2、文件大小和后缀名
事务日记的文件有两个特点:
文件大小出奇同等:都是67108880KB,即64MB。
文件名后缀是一串看似有些规律的数字,而且随着修改时间推移呈递增状态。
(1)磁盘空间预分配
文件大小都是64MB,是因为日记文件的磁盘空间预分配。
事务日记不停追加写入文件的操纵会触发底层磁盘IO为文件开辟新的磁盘块,即磁盘Seek,为了制止频繁的文件大小增长带来的磁盘Seek开销,ZooKeeper在创建事务日记文件时就向操纵体系预分配了一块比力大的磁盘块,保证了单一事务日记文件所占用的磁盘块是一连的,以此提升事务的写入性能。默认是64MB,空闲部分用空字符(\0)添补。
假如后续检测到文件空间不足4KB,将扩容再次预分配64MB,直到创建新的事务日记文件。
(2)ZXID作为后缀名
文件名后面的一串数字是事务ID:ZXID,并且是写入事务日记文件的第一条事务ZXID。前面讲了,ZXID高32位是当前Leader任期编号,低32位是事务计数器,比如 log.1400000001、log.1400000003,都是Leader任期编号为20时产生的事务日记文件。
3、事务日记可视化
事务日记文件中存放的是二进制格式的数据,不能用vim、cat等工具直接打开,需要用apache-zookeeper-3.7.0提供的脚本bin/zkTxnLogToolkit.sh打开:
bin/zkTxnLogToolkit.sh logs/zoo-1/version-2/log.1400000003
一行就是一个事务记载,每行从左到右依次是操纵时间、客户端session ID、CXID(客户端操纵序列号)、ZXID、操纵类型(做了什么),假如操纵类型是 createSession,后面的30000就是session的超时时间。
4、相关设置项
跟事务日记有关的设置除了dataLogDir外,还有 preAllocSize。
(1)dataLogDir
zoo.cfg中默认没有显式设置dataLogDir,事务日记和快照日记共享dataDir。但是强烈发起,单独为事务日记指定dataLogDir。
事务日记记载对磁盘性能要求极高,为了保证数据同等性,ZooKeeper在返回客户端请求响应前,必须将本次请求对应的事务日记写入到磁盘中。因此,事务日记写入性能直接决定了ZooKeeper在处理事务请求时的吞吐。
针对同一块磁盘的其他并发读写操纵(如ZooKeeper运行时日记输出和操纵体系自身的读写等),尤其是数据快照操纵,会极大影响事务日记的写性能。因此只管给事务日记的输出设置一个单独的磁盘或是挂载点,极大进步ZooKeeper整体性能。
(2)preAllocSize
java 体系属性: ZooKeeper.preAllocSize,从字面意思就可以看出,preAllocSize是用来设置事务日记文件预先分配文件大小的参数。默认65536,单元KB,即64MB。
5、什么时间创建新日记文件
在举行事务日记写入前,ZooKeeper会判断是否正在关联一个可写的事务日记文件,假如有则继承追加到该文件中,假如没有就需要创建新的日记文件并关联上。
什么时间ZooKeeper没有关联上一个可写的事务日记文件呢?有两种情况:
ZooKeeper停止会导致之前关联的事务日记文件断开,重启后第一次事务日记写入,需要创建新的日记文件。
上一个事务日记文件写满了(到达阈值,触发了快照之后),需要创建新的日记文件。
需要注意ZooKeeper服务不要频繁重启,否则会产生许多日记文件,并且有些文件还没有写满,非常浪费磁盘空间。
四、快照日记
<hr> 快照日记是将ZooKeeper服务器上某个时间的全量内存数据,写入到指定磁盘文件中。可以如许明白,快照日记文件是存量数据,事务日记文件是增量数据,二者加起来就是最大限度的全量数据。
1、文件存储
和事务日记类似,快照日记存放在dataDir子目录version2中,文件名为snapshot.ZXID,不需要像事务日记文件一样预分配空间。
需要夸大快照文件名后缀 ZXID是触发快照的刹时,提交的
末了一个事务ID
。假如是事务ZXID5触发快照,那么快照文件名就是snapshot.ZXID5,快照之后的下一个事务的ID是ZXID6&
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
东湖之滨
金牌会员
这个人很懒什么都没写!
楼主热帖
《HarmonyOS开发 - 小凌派-RK2206开发 ...
当我们在聊「开源大数据调度系统Taier ...
VMware虚拟机安装黑群晖7.1
从0到1实现一套CICD流程之CD
ABP Framework 7.0 RC 新增功能简介 ...
dotnet 6 为什么网络请求不跟随系统网 ...
大二C#实现酒店管理系统(C端展示、前 ...
MySQL视图
2023年2月苹果最新屏蔽系统更新描述文 ...
MySQL8.0 优化器介绍(二)
标签云
存储
服务器
快速回复
返回顶部
返回列表