hashbucket系统函数
- gs_redis_get_plan(origin_group_id OID,target_group_id OID)
描述:获取完整的迁移计划。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
参数说明:
名称
类型
描述
origin_group_id
OID
源节点的node group。
target_group_id
OID
新节点的node group。
返回值说明:
名称
类型
描述
sender_id
OID
源节点的node oid。
sender_name
CSTRING
源节点的节点名称。
receiver_id
OID
新节点的node oid。
receiver_name
CSTRING
新节点的节点名称。
bucket_number
INT4
bucket_list中包含的bucket个数。
bucket_list
OIDVECTOR_EXTEND
迁移计划涉及的bucket列表。
示例:
gaussdb=# SELECT * FROM gs_redis_get_plan(16388, 16417); sender_id | sender_name | receiver_id | receiver_name | bucket_number | bucket_list -----------+-------------+-------------+---------------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 16385 | datanode1 | 16415 | datanode3 | 256 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 18 8 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 2 48 249 250 251 252 253 254 255 16386 | datanode2 | 16416 | datanode4 | 256 | 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 55 3 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 6 13 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 (2 rows)
- gs_redis_get_bucket_statistics
描述:获取日志流传输状态。只支持在扩容期间调用;只支持管理员权限用户查询。
参数:void
返回值说明:
名称
类型
描述
bucket_id
OID
bucket id
redis_state
INT1
bucket的扩容状态,0表示扩容未开始,1表示扩容基线数据已完成。
xlog_count
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)在原DN产生的xlog数量。
sndr_latest_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)在原DN产生的最新LSN。
parser_latest_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被原DN的扩容相关线程解析到的最新LSN。
parser_latest_lsn_new
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被原DN的扩容相关线程解析到bucketxlog的最新LSN。
rcvr_redo_latest_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被新DN的扩容相关线程回放到的最新LSN。
rcvr_redo_latest_lsn_new
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被原DN的扩容相关线程解析到bucketxlog的最新LSN。
rcvr_checkpoint
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)的checkpoint点。
rcvr_redo_start_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)回放开始的原始LSN。
rcvr_redo_end_lsn
INT8
bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)回放结束的原始LSN。
示例:
gaussdb=# SELECT * FROM gs_redis_get_bucket_statistics(); bucket_id | redis_state | xlog_count | sndr_latest_lsn | parser_latest_lsn | parser_latest_lsn_new | rcvr_redo_latest_lsn | rcvr_redo_latest_lsn_new | rcvr_checkpoint | rcvr_redo_start_lsn | rcvr_redo_end_lsn -----------+-------------+------------+-----------------+-------------------+-----------------------+----------------------+--------------------------+-----------------+ --------------------+------------------- 0 | 1 | 1 | 79303808 | 79303808 | 16777352 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 1 | 1 | 1 | 79303896 | 79303896 | 16777448 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 2 | 1 | 1 | 79303984 | 79303984 | 16777544 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 3 | 1 | 1 | 79304072 | 79304072 | 16777640 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 4 | 1 | 1 | 79304160 | 79304160 | 16777736 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 ...(数据较多,仅展示部分)
- gs_redis_set_distributed_db(db_name CSTRING)
描述:设置当前正在hashbucket重分布的数据库。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
参数说明:
- db_name:本次要重分布的数据库库名。
返回值说明:void
示例:
gaussdb=# SELECT gs_redis_set_distributed_db('gaussdb'); gs_redis_set_distributed_db ----------------------------- 0 (1 row)
- gs_redis_hashbucket_update_segment_header(origin_group_id OID,target_group_id OID)
描述:更新当前数据库所有hashbucket表的header。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
参数说明:
名称
类型
描述
origin_group_id
OID
源节点的node group。
target_group_id
OID
新节点的node group。
返回值类型:Boolean
示例:
gaussdb=# SELECT * FROM gs_redis_hashbucket_update_segment_header(16388, 16417); gs_redis_hashbucket_update_segment_header ------------------------------------------- t (1 row)
- gs_redis_local_get_segment_header(table_name REGCLASS,bucketlist OIDVECTOR_EXTEND)
参数说明:
名称
类型
描述
table_name
REGCLASS
表名
bucketlist
OIDVECTOR_EXTEND
bucket列表。
返回值类型:header_info
示例:
gaussdb=# SELECT * FROM gs_redis_local_get_segment_header('mytable', '256'); gs_redis_local_get_segment_header ---------------------------------------------------------------------------------------------------------------------------- 4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,...(数据较多,仅展示部分) (1 row)
- gs_redis_local_update_segment_header(table_name REGCLASS,header_info CSTRING)
参数说明:
名称
类型
描述
table_name
REGCLASS
表名
header_info
CSTRING
段页式表header。
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_local_update_segment_header('mytable', '4294967295,4294967295,4294967295,4294967295,....'); (数据较多,仅展示部分) gs_redis_local_update_segment_header ------------------------------------------- 0 (1 row)
- gs_redis_hashbucket_update_inverse_pointer(buckets TEXT, origin_dn_name TEXT, new_dn_name TEXT)
描述:更新当前db所有hashbucket表本批次bucket的反向指针。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
参数说明:
名称
类型
描述
buckets
TEXT
本次上线的bucket列表。
origin_dn_name
TEXT
源节点名称。
new_dn_name
TEXT
新节点名称。
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_hashbucket_update_inverse_pointer('0,1,2,3,4,5,6,7,8,9,10','datanode1','datanode3'); gs_redis_hashbucket_update_inverse_pointer ------------------------------------------- 0 (1 row)
- gs_redis_local_get_inverse_pointer(buckets TEXT,origin_dn_name TEXT, new_dn_name TEXT)
描述:获取反向指针。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
参数说明:
名称
类型
描述
buckets
TEXT
本次上线的bucket列表。
origin_dn_name
TEXT
源节点名称。
new_dn_name
TEXT
新节点名称。
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_hashbucket_update_inverse_pointer('0,1,2,3,4,5,6,7,8,9,10','datanode1','datanode3'); gs_redis_hashbucket_update_inverse_pointer ------------------------------------------- 0 (1 row)
- gs_redis_local_update_inverse_pointer(table_name TEXT,header_info TEXT, bucketlist TEXT)
描述:记录更新反向指针的XLOG。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
参数说明:
名称
类型
描述
table_name
REGCLASS
表名。
header_info
TEXT
段页式表header。
bucketlist
TEXT
bucket列表。
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_local_update_inverse_pointer('mytable', '4294967295,4294967295,4294967295,4294967295,....','1 2 3'); (数据较多,仅展示部分) gs_redis_local_update_inverse_pointer ------------------------------------------- 0 (1 row)
- gs_redis_local_set_hashbucket_frozenxid
描述:修改hashbucket表在系统表中的relfrozenxid64值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
参数说明:void
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_local_set_hashbucket_frozenxid(); gs_redis_local_set_hashbucket_frozenxid ------------------------------------------- 0 (1 row)
- gs_redis_set_hashbucket_frozenxid(origin_group_id OID,target_group_id OID)
描述:修改新DN节点hashbucket表在系统表中的relfrozenxid64值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
参数说明:
名称
类型
描述
origin_group_id
OID
源节点的node group。
target_group_id
OID
新节点的node group。
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_set_hashbucket_frozenxid(16388, 16417); gs_redis_set_hashbucket_frozenxid ------------------------------------------- 0 (1 row)
- gs_redis_set_nextxid(xid BIGINT)
描述:修改DN节点next_xid值。只支持在扩容期间调用。只支持管理员权限用户查询;只支持DN上调用。
参数说明:xid:预期next_xid的值
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_set_nextxid('15268817'); gs_redis_set_nextxid ------------------------------------------- 0 (1 row)
-
描述:修改DN节点next_csn值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用;只支持在GTM_FREE模式下调用。
参数说明:
- csn:预期next_csn的值。
返回值类型:void
示例:
gaussdb=# SELECT * FROM gs_redis_set_csn('15268817'); gs_redis_set_csn ------------------------------------------- 0 (1 row)
-
gs_redis_check_bucket_flush(dn_array NAME[])
描述:查询RTO回放私有buffer是否全部刷下去。只支持在扩容期间调用;只支持管理员权限用户查询。
参数说明:
- dn_array:DN节点名称列表
返回值类型:Boolean
示例:
gaussdb=# SELECT * FROM gs_redis_check_bucket_flush('{datanode1, datanode2}'); gs_redis_check_bucket_flush ----------------------------- f (1 row)
- gs_redis_get_flush_page_lsn(isclean bool)
权限:只支持debug版本调用,只支持在扩容期间调用;只支持管理员权限用户查询。
参数说明:isclean:BOOLEAN类型,是否清理刷页信息。
返回值说明:
名称
类型
描述
node_name
TEXT
页面所在dn名
space_id
OID
表空间id
db_id
OID
数据库id
file_id
OID
数据文件编号,取值范围1-5
bucket_id
OID
bucket分区id,取值范围0-1023
forknum
OID
数据文件分支,取值范围0-2
blocknum
OID
物理页面在数据文件中的偏移页面号
latest_flush_lsn
UINT8
刷脏页面最新的lsn
示例:
gaussdb=# SELECT * FROM gs_redis_get_flush_page_lsn(false); node_name | space_id | db_id | file_id | bucket_id | forknum | blocknum | last_flush_lsn ------------------------------------------------------------------------------------------- datanode2 | 1633 | 16387 | 1 | 66 | 0 | 20 | 1571838992 (1 row)
-
gs_redis_show_bucketxid(bucketid_list OIDVECTOR_EXTEND)
描述:查询指定bucket对应的bucketxid。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
参数说明:
- bucketid_list:bucket列表。
返回值类型:CSTRING
示例:
gaussdb=# SELECT * FROM gs_redis_show_bucketxid('1 2 3'); gs_redis_show_bucketxid ---------------------------- 88880001 88880001 88880001 (1 row)
-
gs_redis_drop_bucket_files(origin_group_id OID,target_group_id OID)
描述:删除源节点已经物理搬迁的文件。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。
参数说明:
名称
类型
描述
origin_group_id
OID
源节点的node group
target_group_id
OID
新节点的node group
返回值类型:BOOLEAN
示例:
gaussdb=# SELECT * FROM gs_redis_drop_bucket_files(16388, 16417); gs_redis_drop_bucket_files ------------------------------------------- t (1 row)
-
gs_redis_local_drop_bucket_files(bucketlist CSTRING,bucketnum SMALLINT)
描述:删除对应的bucket list。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。
参数说明:
名称
类型
描述
bucketlist
CSTRING
指定bucket列表
bucketnum
SMALLINT
bucket的个数
返回值类型:Boolean
示例:
gaussdb=# SELECT * FROM gs_redis_local_drop_bucket_files('1 2 3', 3); gs_redis_local_drop_bucket_files ------------------------------------------- t (1 row)