持久化

Redis的RDB持久化(持续更新)

别等时光非礼了梦想. 提交于 2019-12-28 22:11:58
1.redis持久化的方式有两种:RDB 和 AOF RDB:类似于linux的快照,在某个时间点备份 临时文件 。 是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。 优点:1.每隔一段时间备份,全量备份 2.灾备简单,可以远程传输 3.子进程进行备份时,主线程不会有任何io操作(不会有写入修改或删除),保证备份数据的完整性 4.相对于AOF来说,当有更大文件的时候,就可以快速重启恢复 缺点:1.发生故障时,有可能会丢失最后一次的备份数据 2.子进程所占用的内存会和父进程一样,造成CPU负担 3.由于定时全量备份是重量级的操作,所以对于实时备份,就无法处理 自动触发模式: 找到: SNAPSHOTTING(快照) 接着往下找; dir:就是定义的RDB所保存的位置, 保存在磁盘的名称 就是 dump.rdb 这就是 dump.rdb 回到 redis.conf: 保存 更改时间 发生的更改次数 如果发生了 一次更改,则在15分钟后进行备份(保存快照), 如果至少发生了10次更改,则在5分钟后进行备份(保存快照) 如果在保存的过程中发生错误,yes就是停止写的操作。 no继续保存(会造成数据不一致) stop-writes-on-bgsave-error : 默认值为yes

MySQL 的 binlog 和 redo log 写入原理

巧了我就是萌 提交于 2019-12-28 16:23:25
文章目录 binlog 的写入流程 redo log 写入流程 组提交 组提交优化 总结 binlog 的写入流程 事务执行过程中,binlog 首先会被写到 binlog cache 中;事务提交的时候,再讲binlog cache 写到 binlog 文件中。一个事务的 binlog 是原子的,无论多大都需要保证完整性。 系统为每个客户端线程分配一个 binlog cache,其大小由 binlog_cache_size 控制。如果binlog cache 超过阀值,就会临时持久化到磁盘。当事务提交的时候,再将 binlog cache 中完整的事务持久化到磁盘中,并清空 binlog cache。 从上面可以看出,每个客户端线程都有自己独立的 binlog cache,但是会共享一份 binlog files。 上面的 write 是指把binlog cache 写到文件系统的 page cache,并没有写入到磁盘中,因此速度较快。 fsync 是实际的写盘操作,占用磁盘的 IOPS。 write 和 fsync 的写入时机,是由sync_binlog 控制的: sync_binlog=0:每次事务提交都只 write,不 fsync; sync_binlog=1:每次事务提交都会fsync; sync_binlog=N(N>1):每次提交事务都会 write,累计N

EMQ X 插件持久化系列 (四)PostgreSQL 数据持久化

十年热恋 提交于 2019-12-27 14:32:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本章节以在 CentOS 7.2 中的实际例子来说明如何通过 PostgreSQL 来存储相关的信息。 作为开源关系数据库重要一员,PostgreSQL 标榜自己是世界上最先进的开源数据库,相比于其他开源关系数据库如 MySQL,PostgreSQL 是完全由社区驱动的开源项目,由全世界超过 1000 名贡献者所维护。PostgreSQL 提供了单个完整功能的版本,而不像 MySQL 那样提供了多个不同的社区版、商业版与企业版。PostgreSQL 基于自由的 BSD/MIT 许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。 PostgreSQL 具有诸多特性,在 GIS 领域有较多支持,其“无锁定”特性非常突出,支持函数和条件索引,有成熟的集群方案。PostgreSQL 还具备及其强悍的 SQL 编程能力如统计函数和统计语法支持,通过 Timescaledb 插件,PostgreSQL 可以转变为功能完备的时序数据库 Timescaledb 。 功能概览 客户端在线状态存储 客户端代理订阅 持久化发布消息 Retain 消息持久化 消息确认持久化 自定义 SQL 安装与验证 PostgreSQL 服务器 读者可以参考 PostgreSQL 官方文档 或 Docker

redis 持久化选择 rdb和aof

天大地大妈咪最大 提交于 2019-12-26 22:57:04
redis有两个方案 rdb和aof,默认是rdb Aof 的配置 appendonly no # 是否打开 aof日志功能 appendfsync always # 每1个命令,都立即同步到aof. 安全,速度慢 appendfsync everysec # 折衷方案,每秒写1次 appendfsync no # 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快, no-appendfsync-on-rewrite yes: # 正在导出rdb快照的过程中,要不要停止同步aof auto-aof-rewrite-percentage 100 #aof文件大小比起上次重写时的大小,增长率100%时,重写 auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M时,重写 注: 在dump rdb过程中,aof如果停止同步,会不会丢失? 答: 不会,所有的操作缓存在内存的队列里, dump完成后,统一操作. 注: aof重写是指什么? 答: aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里. 以解决 aof日志过大的问题. 问: 如果rdb文件,和aof文件都存在,优先用谁来恢复数据? 答: aof 问: 2种是否可以同时用? 答: 可以,而且推荐这么做 问: 恢复时rdb和aof哪个恢复的快 答:

Hibernate级联删除

蓝咒 提交于 2019-12-26 15:08:08
如果cascade属性是默认值"none",当hibernate删除一个持久化对象的时候,不会自动删除与它关联的其他持久化对象。如果希望自动删除它关联的其他持久化对象,可以把casacde属性设为"delete"; <set name="students" cascade="delete" inverse="true"> <key column="school_id"/> <one-to-many class="Student"/> </set> 那么hibernate在删除一个Shool对象时,实际执行的SQL是: delete from students where school_id =1; delete from school where id=1; 来源: https://www.cnblogs.com/pangblog/p/3348059.html

redis参数与持久化原理

本秂侑毒 提交于 2019-12-25 17:07:21
[root@JR hx]# redis-cli info # Server redis_version:2.8.19 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:3f46a0c12d2b66a6 redis_mode:standalone 模式:是否做主从同步了 os:Linux 2.6.32-431.23.3.el6.x86_64 x86_64 #linux 版本 arch_bits:64 # 架构 multiplexing_api:epoll gcc_version:4.4.7 process_id:20848 run_id:c77b9becd5a017913d778ac23ad7ea2032741b2d tcp_port:6379 uptime_in_seconds:18308503 自 Redis 服务器启动以来,经过的秒数 uptime_in_days:211 自 Redis 服务器启动以来,经过的天数 hz:10 lru_clock:3570345 以分钟为单位进行自增的时钟,用于 LRU 管理 config_file: # Clients connected_clients:47 已连接客户端的数量(不包括通过从属服务器连接的客户端) client_longest_output_list:0

Python 持久化-文件

僤鯓⒐⒋嵵緔 提交于 2019-12-23 05:49:12
文件 长久保存信息的一种数据信息集合 常用操作 打开关闭(文件一旦打开,需要关闭操作) 读写内容 查找 open函数 open函数负责打开文件,带有很多参数 第一个参数: 必须有,文件的路径和名称 mode:表明文件用什么方式打开 r:以只读方式打开 w:写方式打开,会覆盖以前的内容 x:创建方式打开,如文件已经存在,报错 a:append方式,以追加的方式对文件内容进行写入 b: binary方式,二进制方式写入 t: 文本方式打开 +: 可读写 # 打开文件,用写的方式 # r表示后面字符串内容不需要转义 # f称之为文件句柄 f = open ( r "test01.txt" , 'w' ) # 文件打开后必须关闭 f . close ( ) # 此案例说明,以写方式打开文件,默认是如果没有文件,则创建 with语句 with语句使用的技术是一种成为上下文管理协议的技术(ContextManagementProtocal) 自动判断文件的 作用域, 自动关闭不在使用的打开的文件句柄 # with语句案例 with open ( r "test01.txt" , 'r' ) as f : pass # 下面语句块开始对文件f进行操作 # 在本模块中不需要在使用close关闭文件f # with案例 with open ( r 'test01.txt' , 'r' ) as f

BZOJ 3166 可持久化Trie

心不动则不痛 提交于 2019-12-21 11:44:00
Description Welcome to ALO ( Arithmetic and Logistic Online)。这是一个VR MMORPG , 如名字所见,到处充满了数学的谜题。 现在你拥有n颗宝石,每颗宝石有一个能量密度,记为ai,这些宝石的能量 密度两两不同。现在你可以选取连续的一些宝石(必须多于一个)进行融合,设为 ai, ai+1, …, a j,则融合而成的宝石的能量密度为这些宝石中能量密度的次大值 与其他任意一颗宝石的能量密度按位异或的值,即,设该段宝石能量密度次大值 为k,则生成的宝石的能量密度为max{k xor ap | ap ≠ k , i ≤ p ≤ j}。 现在你需要知道你怎么选取需要融合的宝石,才能使生成的宝石能量密度最大。 Input 第一行,一个整数 n,表示宝石个数。 第二行, n个整数,分别表示a1至an,表示每颗宝石的能量密度,保证对于i ≠ j有 ai ≠ aj。 Output 输出一行一个整数,表示最大能生成的宝石能量密度。 Sample Input 5 9 2 1 4 7 Sample Output 14 可以枚举次大值,那么它能覆盖的范围如图。 红色为枚举到的次大值,黑色为大于它的值,其余为小于它的值。 它做多能覆盖的两个区间如图。 这要在这些区间中查询即可。 对权值排序完后用set维护就好了。 #include <stdio

Redis的11种Web应用场景

…衆ロ難τιáo~ 提交于 2019-12-20 00:29:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在 “怎样让Redis在你的系统中发挥作用”一文 中,Salvatore 'antirez’ Sanfilippo告诉我们如何利用Redis独有的数据结构处理能力来解决一些常见问题。一些Redis原语命令比如LPUSH、LTRIM和LREM等等能够用来帮助开发者完成需要的任务——这些任务在传统的数据库存储中非常困难或缓慢。这是一篇非常有用并且实际的文章。那么要如何在你的框架中完成这些任务呢? 下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率。 1.在主页中显示最新的项目列表。 Redis使用的是常驻内存的缓存,速度非常快。LPUSH用来插入一个内容ID,作为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为5000。如果用户需要的检索的数据量超越这个缓存容量,这时才需要把请求发送到数据库。 2.删除和过滤。 如果一篇文章被删除,可以使用LREM从缓存中彻底清除掉。 3.排行榜及相关问题。 排行榜(leader board)按照得分进行排序。ZADD命令可以直接实现这个功能,而ZREVRANGE命令可以用来按照得分来获取前100名的用户,ZRANK可以用来获取用户排名,非常直接而且操作容易。 4.按照用户投票和时间排序。 这就像Reddit的排行榜

K8S使用Ceph做持久化存储

大城市里の小女人 提交于 2019-12-19 19:30:40
一、概述 Cephfs 是一个基于 ceph 集群且兼容POSIX标准的文件系统。 创建 cephfs 文件系统时需要在 ceph 集群中添加 mds 服务,该服务负责处理 POSIX 文件系统中的 metadata 部分,实际的数据部分交由 ceph 集群中的 OSDs 处理。 cephfs 支持以内核模块方式加载也支持 fuse 方式加载。无论是内核模式还是 fuse 模式,都是通过调用 libcephfs 库来实现 cephfs 文件系统的加载,而 libcephfs 库又调用 librados 库与 ceph 集群进行通信,从而实现 cephfs 的加载。 来源: 51CTO 作者: 思考_ 链接: https://blog.51cto.com/10880347/2309877