Postgresql 中文操作指南
Description
pg_amcheck 支持对一个或多个数据库运行 amcheck 的损坏检查函数,并提供一些选项用于选择要检查的架构、表和索引、要执行的检查类型以及是否并行执行检查,如果是,则可以建立并使用多少并行连接。
当前仅支持常规且是 toast 表关系、物化视图、序列和 btree 索引。其他关系类型会悄悄被跳过。
如果指定了 dbname ,它应当是单个待检查数据库的名称,且不应存在其他数据库选择选项。否则,如果存在任何数据库选择选项,则所有相匹配的数据库都将被检查。如果没有这样的选项,则将检查默认数据库。数据库选择选项包括 —all 、 —database 和 —exclude-database 。它们还包括 —relation 、 —exclude-relation 、 —table 、 —exclude-table 、 —index 和 —exclude-index ,但只有在这些选择用于三部分模式(例如, mydb*.myschema*.myrel* )的情况下。最后,当这些选项与两部分模式(例如, mydb*.myschema* )搭配使用时,则会包括 —schema 和 —exclude-schema 。
dbname 也可以是 connection string 。
Options
以下命令行选项控制检查的内容:
-
-a_—all_
-
检查所有数据库,但通过 —​exclude-database 除外任何数据库。
-
-
-d _pattern—database=_pattern
-
检查与指定 pattern 相匹配的数据库,但通过 —​exclude-database 排除任何数据库。此选项可多次指定。
-
-
-D _pattern—exclude-database=_pattern
-
排除与给定 pattern 匹配的数据库。此选项可多次指定。
-
-
-i _pattern—index=_pattern
-
检查与指定 pattern 相匹配的索引,除非它们被排除在外。此选项可多次指定。
-
这与 —​relation 选项类似,但仅适用于索引,不适用于其他关系类型。
-
-
-I _pattern—exclude-index=_pattern
-
排除与指定 pattern 相匹配的索引。此选项可多次指定。
-
这与 —​exclude-relation 选项相似,不同的是仅对索引适用,而不对其他关系类型适用。
-
-
-r _pattern—relation=_pattern
-
检查与指定 pattern 匹配的关系,除非另有排除。该选项可以指定多次。
-
模式可以不限定,如 myrel* ,或可以根据架构进行限制,如 myschema*.myrel* 或根据数据库和架构进行限制,如 mydb*.myschema*.myrel* 。根据数据库限定的模式会向要检查的数据库列表添加匹配的数据库。
-
-
-R _pattern—exclude-relation=_pattern
-
-s _pattern—schema=_pattern
-
检查与指定 pattern 匹配的架构中的表和索引,除非另有排除。该选项可以指定多次。
-
要仅选择与特定模式匹配的架构中的表,请考虑使用类似 —​table=SCHEMAPAT.* --no-dependent-indexes 的模式。要仅选择索引,请考虑使用类似 —​index=SCHEMAPAT.* 的模式。
-
架构模式可以根据数据库限定。例如,您可以编写 —​schema=mydb*.myschema* 以选择与 myschema* 匹配的架构,这些架构在与 mydb* 匹配的数据库中。
-
-
-S _pattern—exclude-schema=_pattern
-
排除与指定 pattern 匹配的架构中的表和索引。该选项可以指定多次。
-
与 —​schema 一样,模式可以根据数据库限定。
-
-
-t _pattern—table=_pattern
-
检查与指定 pattern 匹配的表,除非另有排除。该选项可以指定多次。
-
这与 —​relation 选项相似,不同的是仅对表、物化视图和序列适用,而不适用于索引。
-
-
-T _pattern—exclude-table=_pattern
-
排除与指定 pattern 匹配的表。该选项可以指定多次。
-
这与 —​exclude-relation 选项相似,不同的是仅对表、物化视图和序列适用,而不适用于索引。
-
-
—no-dependent-indexes
-
默认情况下,如果检查表,该表的任何 btree 索引也将被检查,即使它们未通过 —​index 或 —​relation 等选项显式选择。该选项会禁止这种行为。
-
-
—no-dependent-toast
-
默认情况下,如果检查某表,该表的 toast 表(如果存在)也将被检查,即使未通过 —​table 或 —​relation 等选项显式选择。该选项会禁止这种行为。
-
-
—no-strict-names
-
默认情况下,如果 —​database 、 —​table 、 —​index 或 —​relation 的参数不匹配任何对象,则为致命错误。该选项将该错误降级为警告。
-
以下命令行选项控制表的检查:
-
—exclude-toast-pointers
-
默认情况下,每当在表中遇到 toast 指针时,会执行查找以确保它引用 toast 表中看似有效的条目。这些检查可能非常慢,该选项可用于跳过它们。
-
-
—on-error-stop
-
在发现损坏的表第一页上报告所有损坏后,停止处理该表关系,并转到下一张表或索引。
-
注意,索引检查总是在第一个损坏的页面后停止。此选项仅针对表关系有意义。
-
-
—skip=_option_
-
如果给出了 all-frozen ,表损坏检查将跳过所有表中标记为全部冻结的页面。
-
如果给出了 all-visible ,表损坏检查将跳过所有表中标记为全部可见的页面。
-
默认情况下,不跳过任何页面。这可以指定为 none ,但由于这是默认值,因此不必提及。
-
-
—startblock=_block_
-
从指定的块编号开始检查。如果正在检查的表关系的块数少于此数,将发生错误。此选项不适用于索引,并且可能仅在检查单个表关系时有用。有关更多注意事项,请参见 —​endblock 。
-
-
—endblock=_block_
-
在指定的块编号处结束检查。如果正在检查的表关系的块数少于此数,将发生错误。此选项不适用于索引,并且可能仅在检查单个表关系时有用。如果同时检查常规表和 toast 表,此选项将同时适用于两者,但仍可能在验证 toast 指针时访问更高级别的 toast 块,除非使用 —​exclude-toast-pointers 取消了对它们的访问。
-
以下命令行选项控制 B 树索引的检查:
-
—heapallindexed
-
对于每个检查的索引,使用 amcheck 的 heapallindexed 选项验证索引中所有堆元组作为索引元组的存在。
-
-
—parent-check
-
对于每个检查的 btree 索引,使用 amcheck 的 bt_index_parent_check 函数,该函数在索引检查期间执行对父/子关系的附加检查。
-
默认情况下使用 amcheck 的 bt_index_check 函数,但请注意使用 —​rootdescend 选项会隐式选择 bt_index_parent_check 。
-
-
—rootdescend
-
对于每个检查的索引,通过使用 amcheck 的 rootdescend 选项,从根页面为每个元组执行新的搜索,从而重新查找叶级别上的元组。
-
使用此选项也会隐式选择 —​parent-check 选项。
-
这种形式的验证最初是为了帮助开发 btree 索引功能而编写的。它可能用途很小,甚至在帮助检测实际发生的腐败类型方面毫无用处。它还可能导致损坏检查花费大量时间,并在服务器上消耗大量资源。
-
Warning
当指定 —parent-check 选项或 —rootdescend 选项时,对 B 树索引执行的额外检查需要相对较强的关系级别锁。这些检查是唯一会阻止来自 INSERT 、 UPDATE 和 DELETE 命令的并发数据修改的检查。
以下命令行选项控制与服务器的连接:
-
-h _hostname—host=_hostname
-
指定服务器正在运行的计算机的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字的目录。
-
-
-p _port—port=_port
-
指定服务器正在监听连接的 TCP 端口或本地 Unix 域套接字文件扩展名。
-
-
-U—username=username__
-
连接时的用户名。
-
-
-w_—no-password_
-
永不发出密码提示。如果服务器需要密码验证但其他方法(如 .pgpass 文件)无法提供密码,连接尝试将失败。此选项可在无人执行密码输入的批处理作业和脚本中使用。
-
-
-W_—password_
-
强制 pg_amcheck 在连接到数据库之前提示输入密码。
-
此选项永远不是必需的,因为如果服务器要求密码认证,pg_amcheck 将自动提示输入密码。但是,pg_amcheck 将浪费一次连接尝试,以找出服务器需要密码。在某些情况下,值得键入 -W 以避免额外的连接尝试。
-
-
—maintenance-db=_dbname_
-
指定一个数据库或 connection string 以用于发现要检查的数据库列表。如果既不使用 —​all 也不使用任何包含数据库模式的选项,则不需要此类连接,此选项将不起作用。否则,除了此选项值中包含的数据库名称以外,任何其他连接字符串参数也将用于连接到正在检查的数据库。如果省略此选项,则默认值为 postgres ,如果失败,则为 template1 。
-
还可以使用其他选项:
-
-e_—echo_
-
将发送到服务器的所有 SQL 回显到 stdout。
-
-
-j _num—jobs=_num
-
使用 num 并发连接到服务器,或按要检查的对象进行连接,以较少者为准。
-
默认情况下,使用单个连接。
-
-
-P_—progress_
-
显示进度信息。进度信息包括已完成检查的关系数及其总大小。还包括最终要检查的关系总数及其估计大小。
-
-
-v_—verbose_
-
打印更多消息。具体来说,这会针对将要检查的每个关系打印一条消息,并增加服务器错误的详细级别。
-
-
-V_—version_
-
打印 pg_amcheck 版本并退出。
-
-
—install-missing—install-missing=schema__
-
安装必需的任何缺少的扩展,以检查数据库。如果尚未安装,则每个扩展的对象将安装到给定的 schema 中,或者如果未指定,则安装到架构 pg_catalog 中。
-
目前,唯一必需的扩展是 amcheck 。
-
-
-?_—help_
-
显示有关 pg_amcheck 命令行参数的帮助,并退出。
-