我从 2011 年开始在这里找到这篇文章,并想验证它是否仍然有效,并且只要您正在捕捉所有数据,就对 ebs 卷(PostgreSQL 仍在运行)进行热快照是一个很好的建议。
PostgreSQL 文档表明只要整个数据目录(WAL 和所有表,不同的表空间可能会导致问题)都在同一个快照中拍摄,低级别快照就可以了。
我目前正在使用 PostgreSQL v9.2。
我从 2011 年开始在这里找到这篇文章,并想验证它是否仍然有效,并且只要您正在捕捉所有数据,就对 ebs 卷(PostgreSQL 仍在运行)进行热快照是一个很好的建议。
PostgreSQL 文档表明只要整个数据目录(WAL 和所有表,不同的表空间可能会导致问题)都在同一个快照中拍摄,低级别快照就可以了。
我目前正在使用 PostgreSQL v9.2。
我运行以下命令在 sql 文件中运行 2 个查询。可以是 1 个,也可以是 50 个查询。取决于部署。
psql -U <username> -h <servername> -d <databasename> -f
20140701_Queries.sql > 20140701_Results.txt
以下是查询:
select max(day) from tbl1;
select max(day) from tbl2;
这是我得到的结果:
max
------------
2014-06-02
(1 row)
max
------------
2014-06-06
(1 row)
我宁愿它出来是这样的:
select max(day) from tbl1;
max
------------
2014-06-02
(1 row)
select max(day) from tbl2;
max
------------
2014-06-06
(1 row)
但现在确切的格式并不重要。只是有人可以查找他们的查询并查看他们的结果。
提前致谢 :)
- 编辑
如果我只是将这两个查询粘贴到 psql 中,我会得到结果和我的输入的混合,如果我可以将它输出到一个文件的话:
db=# select max(day) from tbl1;
max
------------
2014-06-02
(1 row)
db=# select max(day) from tbl2;
max
------------
2014-06-06
(1 row)
我在我的服务器上运行 dbWarden 的 CheckFiles 程序。
工作从未结束,我的日志开始以每分钟 1 条的速度填满消息:2014-01-07 08:40:04.07 Server Process 58:0:0 (0x1438) Worker 0x00000000D62B41C0 appears be non-yielding on调度程序 4。线程创建时间:13033413586324。使用的大约线程 CPU:内核 46 毫秒,用户 2421 毫秒。工艺利用率 10%。系统空闲 82%。间隔:79691009 毫秒。
据我了解,这意味着 CPU 上的线程刚刚被锁定。
SSMS GUI 不再适用于该实例。在 TSQL 中,大多数事情都有效,除非它们引用快照,这会禁止大多数 dmv 和系统过程。SP_Who2 不起作用,但 SP_Who 起作用。
SP_WHO 向我展示了 58 在 ready 和 spinloop 之间交替。
58 正在运行代码以检查快照上的文件(位置、增长信息等)。
当我杀死 58 时,它说它正在回滚,但什么也没有发生,它仍然处于自旋循环中。
当我尝试 SP_Who2 时,它被 spinloop 阻止了。当我放下快照时,它被自旋循环阻止了。当我重新启动或停止/启动实例服务时,错误返回到日志并且自旋循环恢复。
有什么想法或建议吗?