问题标签 [wal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 按模式分隔 Postgres WAL?
我似乎找不到与我正在尝试做的事情相关的任何事情。是否可以按模式分隔 Postgres WAL 文件?
sqlite - SQLITE wal 文件大小不断增长
我正在不断地写入一个具有 PRAGMA journal_mode=WAL、PRAGMA journal_size_limit=0 的 db 文件。我的 C++ 程序有两个线程,一个读取器(以 15 秒间隔查询)和一个写入器(以 5 秒间隔插入)。
每隔 3 分钟,我将暂停插入以从编写器线程运行 sqlite3_wal_checkpoint_v2(),模式参数为 SQLITE_CHECKPOINT_RESTART。为了确保此时没有活动的读取操作正在进行,我设置了一个标志,表明检查点即将发生,并在运行检查点之前等待阅读器完成(连接仍然打开)。检查点完成后,我再次向读者表明可以恢复查询。
sqlite3_wal_checkpoint_v2() 返回 SQLITE_OK,并且 pnLog 和 Ckpt 相等(大约 4000),表明完整的 wal 文件已与主 db 文件同步。所以下一次写应该根据文档从头开始。然而,这似乎并没有发生,因为随后的写入会导致 WAL 文件无限增长,最终达到几 GB。
我做了一些搜索,发现读取器可能会由于打开事务而导致检查点失败。但是,我使用的唯一阅读器是在检查点开始之前结束其事务。还有什么可以阻止 WAL 文件不增长?
sqlite - SQLite API 确定 WAL 文件的大小
SQLite 中是否有任何 api 可以返回 WAL 日志文件的当前大小?我需要定期检查它的大小,如果它超过一定的限制,就执行一些操作。我目前正在使用我的 c++ 程序中的 stat() 之类的系统调用来实现这一点,但只是想知道是否有任何内置的独立于平台的方法可用。
sqlite - SQLite WAL 模式,内存中,带有私有缓存的数据库?
我正在开发一个依赖于 WAL 日志模式在 Sqlite 中提供的读取快照隔离的项目。它使用到同一个数据库的多个连接来允许并发读取器和单个写入器。
对于测试,我想使用内存数据库,但据我所知,这需要SQLITE_OPEN_SHAREDCACHE
(这使 WAL 模式提供的读取快照隔离保证无效)。
有没有办法在私有缓存模式下打开到内存中、WAL 模式、SQLite 数据库的多个连接?
这个问题是否有(预先存在的)VFS 解决方案?
postgresql - Postgresql:查找散列索引
我正在使用 Postgresql 9.1 将 WAL 归档和流式复制设置到热备用服务器。
Postgresql 文档指出:
哈希索引上的操作目前没有 WAL 记录,因此重播不会更新这些索引。这将意味着索引将忽略任何新插入,更新的行将明显消失,而删除的行仍将保留指针。换句话说,如果您修改带有哈希索引的表,那么您将在备用服务器上得到不正确的查询结果。恢复完成后,建议您在完成恢复操作后手动 REINDEX 每个此类索引。
如何确定特定数据库是否包含哈希索引?
c++ - 如果我为多个写入器使用额外的互斥锁,我可以在 SQLite3 中使用 WAL 模式吗?
为 N 个读取器和一个写入器指定 WAL 模式。作家的身份可以互换吗?例如,我有 N 个作者和一个额外的互斥体。每个写入者都必须获得这个互斥体才能写入,因此永远不会有两个写入者同时写入。这可能吗?如果是这样,为什么这不是 SQLite 的一部分,因为对我来说,它似乎是 WAL 模式的自然扩展。
c++ - 做检查点失败
返回 iReturn = 5 (SQLITE_BUSY)。编写器不时醒来,向数据库添加或删除许多行,执行检查点并再次进入睡眠状态。
问题 1:如果我使用 WAL 模式并且有 4 个读卡器和一个写卡器,这怎么可能?
问题 2:在日志消息中,我看到检查点通常有效,但有时只报告 SQLITE_BUSY。如果它有时但并非总是有效,我应该担心吗?这会破坏数据库吗?
问题 3:我应该不使用 sqlite3_wal_checkpoint_v2 或 SQLITE_CHECKPOINT_FULL 吗?
postgresql - Postgresql 自动归档清除未发生
我阅读了几篇关于 postgresql 存档恢复和清理的文档,但我的 postgresql 服务器仍然没有清除存档,或者我并不真正了解它是如何工作的。
简单地说,我为 WAL 归档清理编写了一个 shell 脚本。当我从命令行运行脚本时,它会工作并清除我的存档(我只留下三天后的存档)。我的脚本名为pg_archive_cleanup,可执行并放在这里:/usr/sbin/
我像这样配置我的/etc/postgresql/9.3/main/recovery.conf:
你可以看到线
我的清理脚本:
但是 4 天后磁盘空间增加了。我在文档中看到recovery.conf文件是在check_point 和restart_point读取的......所以我想知道为什么存档没有自动清除?我在哪里设置发生率?postgresl 什么时候应该进行清除?我希望每天都发生这种情况,我有义务将我的清理脚本放在 crontab 中吗?或者别的地方?而且我的 postgresql 日志文件中也没有任何痕迹。清理日志写在哪里?
感谢您的回复。
spark-streaming - 当接收器失败并且 WAL 存储在 s3 中时,Spark 流无法从预写日志记录中读取数据
这是错误日志 -
org.apache.spark.SparkException:无法从 org.apache 的预写日志记录 FileBasedWriteAheadLogSegment(s3n://*****/checkpoint/receivedData/20/log-1439298698600-1439298758600,13678,5069) 中读取数据。 spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:144) at org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD$$anonfun$compute$1.apply (WriteAheadLogBackedBlockRDD.scala:168) at org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD$$anonfun$compute$1.apply(WriteAheadLogBackedBlockRDD.scala:168) at scala.Option.getOrElse(Option.scala:120) at org. org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.compute(WriteAheadLogBackedBlockRDD.scala:168)。apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277) 在 org.apache.spark.rdd.RDD.iterator(RDD.scala:244) 在 org.apache.spark.rdd.UnionRDD.compute(UnionRDD. scala:87) at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277) at org.apache.spark.rdd.RDD.iterator(RDD.scala:244) at org.apache.spark.rdd .MapPartitionsRDD.compute(MapPartitionsRDD.scala:35) at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277) at org.apache.spark.rdd.RDD.iterator(RDD.scala:244) at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:35) at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277) at org.apache.spark.rdd.RDD.iterator( RDD.scala:244) 在 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:70) at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) at org.apache.spark.scheduler.Task.run(Task.scala:70) at org.apache.spark.executor .Executor$TaskRunner.run(Executor.scala:213) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 由:org.apache.spark.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 中的 java.lang.NullPointerException 引起。 streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 22 更多70) 在 org.apache.spark.scheduler.Task.run(Task.scala:70) 在 org.apache.spark.executor.Executor 的 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) $TaskRunner.run(Executor.scala:213) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java. lang.Thread.run(Thread.java:745) 由:org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 中 org.apache.spark.streaming 中的 java.lang.NullPointerException 引起。 rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 22 更多70) 在 org.apache.spark.scheduler.Task.run(Task.scala:70) 在 org.apache.spark.executor.Executor 的 org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) $TaskRunner.run(Executor.scala:213) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java. lang.Thread.run(Thread.java:745) 由:org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 中 org.apache.spark.streaming 中的 java.lang.NullPointerException 引起。 rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 22 更多还有 22 个还有 22 个spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) at org.apache.spark.scheduler.Task.run(Task.scala:70) at org.apache.spark.executor.Executor$TaskRunner.run(Executor. scala:213) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread .java:745) 引起:org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache 的 org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 的 java.lang.NullPointerException $spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 22 更多spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) at org.apache.spark.scheduler.Task.run(Task.scala:70) at org.apache.spark.executor.Executor$TaskRunner.run(Executor. scala:213) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread .java:745) 引起:org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache 的 org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 的 java.lang.NullPointerException $spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 22 更多runTask(ShuffleMapTask.scala:41) at org.apache.spark.scheduler.Task.run(Task.scala:70) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213) at java .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 引起作者:org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd 的 org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 的 java.lang.NullPointerException $WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 还有 22 个runTask(ShuffleMapTask.scala:41) at org.apache.spark.scheduler.Task.run(Task.scala:70) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213) at java .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 引起作者:org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd 的 org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 的 java.lang.NullPointerException $WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 还有 22 个scala:70) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 原因:org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog 的 java.lang.NullPointerException .scala:106) 在 org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 还有 22 个scala:70) at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 原因:org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog 的 java.lang.NullPointerException .scala:106) 在 org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 还有 22 个runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 原因:java.lang.NullPointerException在 org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 在 org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$$getBlockFromWriteAheadLog$1( WriteAheadLogBackedBlockRDD.scala:141) ... 22 更多runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 原因:java.lang.NullPointerException在 org.apache.spark.streaming.util.FileBasedWriteAheadLog.read(FileBasedWriteAheadLog.scala:106) 在 org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$$getBlockFromWriteAheadLog$1( WriteAheadLogBackedBlockRDD.scala:141) ... 22 更多scala:106) 在 org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 还有 22 个scala:106) 在 org.apache.spark.streaming.rdd.WriteAheadLogBackedBlockRDD.org$apache$spark$streaming$rdd$WriteAheadLogBackedBlockRDD$$getBlockFromWriteAheadLog$1(WriteAheadLogBackedBlockRDD.scala:141) ... 还有 22 个
注意:如果 HDFS 用作存储,从 WAL 读取工作正常。
非常感谢任何帮助。
postgresql - Postgres:pg_base_backup 失败
Pg_base_backup 将失败并出现错误
pg_basebackup:无法从服务器获取 WAL 结束位置:致命:请求的 WAL 段 000000010000000300000068 已被删除
我猜这是因为数据库正在接收大量数据(限制:我们使用的是 postgres-9.1)