PostgreSQL写前日志(细胞膜)Postgres集群内的记录位置,捕捉所有修改集群的数据文件被写入到堆之前。在崩溃恢复,Postgres的细胞膜含有足够的数据来恢复其状态的最后提交的事务。
用例
有可能出现的情况下,有必要确定数值差异WAL文件。例如,当恢复显著延迟或配置复制在一个庞大的数据库,恢复过程可以作为新的耗时WAL文件重播。最初,当设置复制,服务器可能不允许登录访问。在这种情况下,计算差异的WAL文件可以提供一个估计的数量的恢复时间,允许评估滞后。
另一个实际应用计算之间的区别的WAL文件是在文档的上下文的过程。决定细胞膜文件之间的方差可以估计剩余的数量尚未归档文件。
计算两个犯下文件之间的区别,让我们理解WAL文件名格式。
PostgreSQL的名字格式写前日志(细胞膜)文件TTTTTTTTXXXXXXXXYYYYYYYY, 24种人格十六进制表示的LSN(日志序列号)与细胞膜相关记录。每个细胞膜的LSN是一个独特的标识符记录。
在格式TTTTTTTTXXXXXXXXYYYYYYYY,“T”的时间表,“X”是高32位的LSN(段数),和“Y”是低32位的LSN。
例如,WAL文件名可能像这样:“0000000100001234000000 ab”。
这是一个故障组件的例子:
——“00000001”:这是时间轴ID。它通常是1为默认时间表。
——“00012340”:这代表了WAL档案编号,显示的顺序顺序WAL文件内的时间表。
——“000000 ab”:这是段的十六进制表示文件号码。
我们可以确定的数值差别两个犯下与下面的sql文件:
|
1
2
3
4
|
选择
腹肌
(
(
“x”
| |
子字符串
(
current_wal
,
1
,
8
)
)
::
位
(
32
)
::
int
- - - - - -
(
“x”
| |
子字符串
(
old_wal
,
1
,
8
)
)
::
位
(
32
)
::
int
)
+
腹肌
(
(
“x”
| |
子字符串
(
current_wal
,
9
,
8
)
)
::
位
(
32
)
::
int
*
256年
- - - - - -
(
“x”
| |
子字符串
(
old_wal
,
9
,
8
)
)
::
位
(
32
)
::
int
*
256年
)
+
腹肌
(
(
“x”
| |
子字符串
(
current_wal
,
17
)
)
::
位
(
32
)
::
int
- - - - - -
(
“x”
| |
子字符串
(
old_wal
,
17
)
)
::
位
(
32
)
::
int
)
从
(
选择
“000000330000006900000047”
current_wal
,
“0000003200000069000000 ab”
old_wal
)
作为
wal_segs
;
|
让我们创建一个PostgreSQL函数,便于数值计算的区别两个犯下文件,使其更方便使用来确定它们之间的差异。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
创建
或
取代
函数
公共
。
get_walfile_diff
(
current_wal
文本
,
old_wal
文本
)
返回
数字
语言
plpgsql
作为
美元
函数
美元
声明
v_wal_diff
数字
;
开始
如果
长度
(
current_wal
)
! =
24
或
长度
(
old_wal
)
! =
24
然后
提高
异常
无效的wal文件长度的
;
结束
如果
;
v_wal_diff
:
=
(
腹肌
(
(
“x”
| |
子字符串
(
current_wal
,
1
,
8
)
)
::
位
(
32
)
::
int
- - - - - -
(
“x”
| |
子字符串
(
old_wal
,
1
,
8
)
)
::
位
(
32
)
::
int
)
+
腹肌
(
(
“x”
| |
子字符串
(
current_wal
,
9
,
8
)
)
::
位
(
32
)
::
int
*
256年
- - - - - -
(
“x”
| |
子字符串
(
old_wal
,
9
,
8
)
)
::
位
(
32
)
::
int
*
256年
)
+
腹肌
(
(
“x”
| |
子字符串
(
current_wal
,
17
)
)
::
位
(
32
)
::
int
- - - - - -
(
“x”
| |
子字符串
(
old_wal
,
17
)
)
::
位
(
32
)
::
int
)
)
;
返回
v_wal_diff
;
结束
;
美元
函数
美元
;
|
例子
|
1
2
3
4
5
6
7
8
9
10
|
postgres
=
#选择public.get_walfile_diff (' 000000330000006900000047 ', ' 000000330000006900000048 ');
get_walfile_diff
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
1
(
1
行
)
postgres
=
#选择public.get_walfile_diff (' 000000330000006900000047 ', ' 0000003300000069000000 ab ');
get_walfile_diff
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
One hundred.
(
1
行
)
|
总的来说,能够计算出数值差异文件有助于有效管理和理解Postgres数据库恢复/文档流程。
雷竞技下载官网Percona分布PostgreSQL提供最好的和最关键的企业组件从开源社区在一个分布,设计和测试一起工作。





