ããã¯ããªã«ãããããŠæžãããã®ïŒ
CockroachDBã¯ã©ã¹ã¿ãŒã§ããŒãã®å¢æžãè¡ã£ãŠããã®æåãèŠãŠã¿ããããªãšã
ããŒãã®è¿œå ãšåé€
ããŒãã®è¿œå ã¯ãcockroach start
ã³ãã³ãã§æ¢åã®ã¯ã©ã¹ã¿ãŒã«åå ããã°è¯ãããã§ããã
cockroach start | CockroachDB Docs
ã»ãã¥ã¢ãªã¯ã©ã¹ã¿ãŒã®å Žåã¯ãSANã䜿ã£ãŠãããããããŒãåãåæããŠããããã¯ã€ã«ãã«ãŒãã§ããŒãåã
ç»é²ããŠãããšè¯ãæ°ãããŸããã
cockroach cert / Node key and certificates
ããŒããã¯ã©ã¹ã¿ãŒããåãé¢ãããïŒå»æ¢ïŒããã¬ã€ã³ããæã«ã¯cockroach node
ã³ãã³ãã䜿ããŸãã
cockroach node | CockroachDB Docs
Decommission Node
Decommission Nodeãšããèšèããããã¥ã¡ã³ãã«åºãŠããŸããã
å»æ¢ãããããŒãã®ããšãDecommission Nodeãšãããå»æ¢ããŒãã«ãªãã·ãŒã±ã³ã¹äžã«å皌åãããããšã
Recommissionãšããã¿ããã§ãã
Decommission Nodeã«ã€ããŠã¯ããã¡ãã«èª¬æããããŸãã
Decommission Nodes | CockroachDB Docs
説æãèªãã§ãããšãã¯ã©ã¹ã¿ãŒããå®å šã«ããŒããåãé¢ãæã«äœ¿ããããªæããããŸãã
ããŒãã¯ã以äžã®2ã€ã®æ¡ä»¶ãæºãããšå»æ¢ãããïŒDecommision Nodeã«ãªã£ãïŒãšã¿ãªãããããã§ãã
- The node has completed the decommissioning process.
The node has been stopped and has not updated its liveness record for the duration configured via server.time_until_store_dead, which defaults to 5 minutes.
å»æ¢ããã»ã¹ãå®äºãã
- ããŒããåæ¢ããŠããŠã
server.time_until_store_dead
ã§èšå®ããæéïŒããã©ã«ã5åïŒãliveness recordãæŽæ°ããŠããªãå Žå
å»æ¢ããã»ã¹äžã¯ãããŒãå
ã®ãã¹ãŠã®ã¬ã³ãžã¬ããªã«ãä»ã®ããŒãã«è»¢éãããŸãããã®æäžããããã¯å®äºåŸã
ããŒãã¯ãå»æ¢ããšã¿ãªãããæ°ããSQLæ¥ç¶ãåãä»ããŸãã
ããŒã¿ã¯æã£ãŠããªããŠããDecommission Nodeã¯æ¥ç¶ãç®çã®ããŒã¿ã«ã«ãŒãã£ã³ã°ããã²ãŒããŠã§ã€ãšããŠ
æ©èœã§ããããã§ãã
ãã®æäžã«ã埩垰ïŒRecommissionïŒãããããšãã§ããããã§ãã
ãã¹ãŠã®ã¬ã³ãžã¬ããªã«ã転éãããåŸã§ããã°ãSIGTERM
ã·ã°ãã«ãéä¿¡ããããšã«ãã£ãŠGraceful Shutdownã
è¡ãããšãã§ããŸããGraceful Shutdownãå§ãŸããšãããŒãã¯ã¯ã©ã€ã¢ã³ããSQLããªãŒã¹ããã¬ã€ã³ããã
ãã«ã¹ãã§ãã¯ã¯503ãè¿ãããã«ãªããŸãããã¬ã€ã³å®äºåŸãliveness recordã®æŽæ°ãåæ¢ãã
server.time_until_store_dead
æéãçµéåŸãå»æ¢ãããïŒdecommissionedïŒãšèŠãªãããŸãã
Decommission Nodeã®æ³šæç¹
以äžã«ãDecommission Nodenã®æ³šæç¹ãæžãããŠããŸãã
Decommission Nodes / Considerations
Decommision Nodeã«ããããã«ã¯ãä»ã®ããŒããã¬ããªã«ãåŒãç¶ããå¿ èŠããããŸãã
äŸã¯ãã¡ãã«æžãããŠããŸãã
3ããŒãã§æ§æããã¯ã©ã¹ã¿ãŒã§ã¬ããªã±ãŒã·ã§ã³ä¿æ°ã3ã®æã«ãããŒããã²ãšã€å»æ¢ããããšãããšãã¬ã³ãžã¬ããªã«ã
ä»ã®ããŒãã«ç§»åã§ããªãããå»æ¢ããã»ã¹ã¯ãã³ã°ããŸãã
â»ã²ãšã€ã®ã¬ã³ãžã¬ããªã«ã«ãè€æ°åãããŒã¿ãæãŠãªããã
ã¬ããªã±ãŒã·ã§ã³ã®è©³çŽ°ã«ã€ããŠã¯ããã¡ãã
Replication Layer | CockroachDB Docs
ã§ã¯ãããã¥ã¡ã³ãããã®æ å ±ã¯ãããããã«ããŠãè©ŠããŠãã£ãŠã¿ãŸãããã
ãªããDecommision Nodeã®ããšã¯ãå»æ¢ããããŒãããšãã£ãæãã§æžãããšã«ããŸãâŠã
ç°å¢
ä»åã®ç°å¢ã¯ããã¡ãã
$ cockroach --version cockroach version details: Build Tag: v21.2.3 Build Time: 2021/12/14 15:23:22 Distribution: CCL Platform: linux amd64 (x86_64-unknown-linux-gnu) Go Version: go1.16.6 C Compiler: gcc 6.5.0 Build Commit ID: cb0222a1980b96ad59c181c96fab8340aa252571 Build Type: release (use 'cockroach version --build-tag' to display only the build tag)
CockroachDBã®ããŒãã¯ãå
šéšã§5ã€çšæããããšã«ããŸããããŒãåã¯ãnode1.cockroach
ãnode5.cockroach
ãŸã§ã®
5ã€ãšããŸãã
æºå
ãŸãã¯ãã»ãã¥ã¢ãªã¯ã©ã¹ã¿ãŒãæ§ç¯ããŠãããŸãã
CA蚌ææžã®äœæã
$ cockroach cert create-ca \ --certs-dir=/var/lib/cockroach/security/certs \ --ca-key=/var/lib/cockroach/security/ca/ca.key
ããŒãã®èšŒææžã¯ãDNSã¯ã€ã«ãã«ãŒãã䜿ã£ãŠç»é²ããŠããããšã«ããŸãã
cockroach cert / Node key and certificates
$ cockroach cert create-node \ localhost \ *.cockroach \ --certs-dir=/var/lib/cockroach/security/certs \ --ca-key=/var/lib/cockroach/security/ca/ca.key
root
ãŠãŒã¶ãŒãšãèªåã§äœæãããŠãŒã¶ãŒã®èšŒææžãäœæã
$ cockroach cert create-client \ root \ --certs-dir=/var/lib/cockroach/security/certs \ --ca-key=/var/lib/cockroach/security/ca/ca.key $ cockroach cert create-client \ myuser \ --certs-dir=/var/lib/cockroach/security/certs \ --ca-key=/var/lib/cockroach/security/ca/ca.key
ãã®/var/lib/cockroach/security
ãã£ã¬ã¯ããªã¯ãå
šCockroachDBããŒãã§å
±æããŠãããã®ãšããŸãã
ãšããããã3ããŒãã§ã¯ã©ã¹ã¿ãŒãæ§æããŸãããã
## node1.cockroach $ cockroach start \ --certs-dir=/var/lib/cockroach/security/certs \ --store=/var/lib/cockroach/data \ --advertise-addr=node1.cockroach \ --join=node1.cockroach \ --join=node2.cockroach \ --join=node3.cockroach ## node2.cockroach $ cockroach start \ --certs-dir=/var/lib/cockroach/security/certs \ --store=/var/lib/cockroach/data \ --advertise-addr=node2.cockroach \ --join=node1.cockroach \ --join=node2.cockroach \ --join=node3.cockroach ## node3.cockroach $ cockroach start \ --certs-dir=/var/lib/cockroach/security/certs \ --store=/var/lib/cockroach/data \ --advertise-addr=node3.cockroach \ --join=node1.cockroach \ --join=node2.cockroach \ --join=node3.cockroach
æ®ã2ã€ã®ããŒãã¯ããŸã 䜿ããŸããã
以éã/var/lib/cockroach/security/certs
ãã£ã¬ã¯ããªã$CERTS_DIR
ãšè¡šèšããŸãã
$ CERTS_DIR=/var/lib/cockroach/security/certs
node1.cockroachã§ãã¯ã©ã¹ã¿ãŒãåæåã
$ cockroach init --certs-dir=$CERTS_DIR Cluster successfully initialized
ã¯ã©ã¹ã¿ãŒãæ§æãããŸããã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 (3 rows)
ãŠãŒã¶ãŒãäœæããŠ
$ cockroach sql --certs-dir=$CERTS_DIR -e 'create user myuser password "password"; grant admin to myuser;'
ãµã³ãã«ããŒã¿ãšããŠãmovr
ã¯ãŒã¯ããŒããç»é²ããŸãã
$ cockroach workload init movr "postgresql://myuser@localhost:26257?sslcert=$CERTS_DIR/client.myuser.crt&sslkey=$CERTS_DIR/client.myuser.key&sslmode=verify-full&sslrootcert=$CERTS_DIR/ca.crt"
ããŒã¿ãšããŠã¯ãããã ãå ¥ãããã§ãã
I211219 10:36:24.783400 1 workload/workloadsql/dataload.go:146 [-] 1 imported users (0s, 50 rows) I211219 10:36:24.843771 1 workload/workloadsql/dataload.go:146 [-] 2 imported vehicles (0s, 15 rows) I211219 10:36:24.947685 1 workload/workloadsql/dataload.go:146 [-] 3 imported rides (0s, 500 rows) I211219 10:36:25.047812 1 workload/workloadsql/dataload.go:146 [-] 4 imported vehicle_location_histories (0s, 1000 rows) I211219 10:36:25.211770 1 workload/workloadsql/dataload.go:146 [-] 5 imported promo_codes (0s, 1000 rows)
cockroach node status
ã³ãã³ãã§ãåããŒãã®ç¶æ
ã確èªã
cockroach node | CockroachDB Docs
$ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.258227 | 2021-12-19 10:37:00.427624 | | true | true | 30 | 30 | 73 | 0 | 0 | 73 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.646529 | 2021-12-19 10:37:00.755195 | | true | true | 23 | 23 | 73 | 0 | 0 | 73 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:07.746837 | 2021-12-19 10:36:57.4232 | | true | true | 20 | 20 | 73 | 0 | 0 | 73 | false | active | false (3 rows)
ããŒã¿ã®ååžç¶æ ã®ç¢ºèªã
$ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 3 | {1,2,3} rides | 46 | 3 | {1,2,3} rides | 95 | 3 | {1,2,3} rides | 94 | 1 | {1,2,3} rides | 92 | 3 | {1,2,3} rides | 93 | 2 | {1,2,3} rides | 90 | 3 | {1,2,3} rides | 96 | 1 | {1,2,3} rides | 91 | 2 | {1,2,3} rides | 70 | 2 | {1,2,3} user_promo_codes | 49 | 2 | {1,2,3} users | 44 | 2 | {1,2,3} users | 53 | 3 | {1,2,3} users | 52 | 2 | {1,2,3} users | 51 | 2 | {1,2,3} users | 67 | 3 | {1,2,3} users | 50 | 2 | {1,2,3} users | 66 | 2 | {1,2,3} users | 64 | 2 | {1,2,3} users | 65 | 1 | {1,2,3} vehicle_location_histories | 47 | 2 | {1,2,3} vehicles | 45 | 3 | {1,2,3} vehicles | 88 | 2 | {1,2,3} vehicles | 87 | 2 | {1,2,3} vehicles | 86 | 2 | {1,2,3} vehicles | 68 | 1 | {1,2,3} vehicles | 84 | 3 | {1,2,3} vehicles | 89 | 2 | {1,2,3} vehicles | 85 | 2 | {1,2,3} vehicles | 69 | 2 | {1,2,3}
ãã¡ãã¯ã以äžã®SQLæã䜿ã£ãŠããŸãã
SHOW RANGES | CockroachDB Docs
ããã§ãæºåå®äºã§ãã
ãã以éãcockroach start
以å€ã® cockroach
ã³ãã³ãã¯ããã¹ãŠnode1.cockroachããŒãã§å®è¡ããŠãããã®ãšããŸãã
ããŒããè¿œå ãã
ã§ã¯ããã§ãããŒããè¿œå ããŠã¿ãŸãããã
ãã®ã¯ã©ã¹ã¿ãŒã«ãnode4.cockroachãè¿œå ããŠã¿ãŸããnode4.cockroachããŒãã§ã以äžã®ã³ãã³ããå®è¡ã
$ cockroach start \ --certs-dir=$CERTS_DIR \ --store=/var/lib/cockroach/data \ --advertise-addr=node4.cockroach \ --join=node1.cockroach \ --join=node2.cockroach \ --join=node3.cockroach
4ããŒãã«ãªããŸããã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 4 (4 rows)
cockroach node status
ãèŠããšããªãã©ã³ã¹ããŠãã£ãŠããã®ã確èªã§ããŸãã
$ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.258227 | 2021-12-19 10:38:52.871152 | | true | true | 23 | 23 | 66 | 0 | 0 | 63 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.646529 | 2021-12-19 10:38:48.748094 | | true | true | 19 | 19 | 64 | 0 | 0 | 63 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:07.746837 | 2021-12-19 10:38:49.810784 | | true | true | 17 | 17 | 65 | 0 | 0 | 64 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 10:38:12.50393 | 2021-12-19 10:38:48.61277 | | true | true | 14 | 14 | 29 | 0 | 0 | 29 | false | active | false (4 rows)
ããŒããè¿œå ãåæ¢ããæã®ãªãã©ã³ã¹ã«ã€ããŠã¯ããã¡ãã«èšèŒããããŸãã
Overview / Membership changes: rebalance/repair
è¿œå æã¯ãããã§ãããæ°ããã¹ããŒã¹ã«å¯ŸããŠãªãã©ã³ã¹ãè¡ãããšããæžãããŠããŸãããã
Nodes added: The new node communicates information about itself to other nodes, indicating that it has space available. The cluster then rebalances some replicas onto the new node.
æçµçã«ã¯ãããã§èœã¡çããŸããã
$ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.258227 | 2021-12-19 10:40:09.346323 | | true | true | 21 | 21 | 56 | 0 | 0 | 56 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.646529 | 2021-12-19 10:40:09.765978 | | true | true | 21 | 21 | 57 | 0 | 0 | 57 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:07.746837 | 2021-12-19 10:40:10.808903 | | true | true | 17 | 17 | 56 | 0 | 0 | 56 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 10:38:12.50393 | 2021-12-19 10:40:09.584081 | | true | true | 14 | 14 | 50 | 0 | 0 | 50 | false | active | false (4 rows)
ããŒã¿ã®ååžã®ç¢ºèªã
$ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 4 | {1,3,4} rides | 46 | 1 | {1,2,3} rides | 95 | 2 | {1,2,3} rides | 94 | 4 | {1,2,4} rides | 92 | 3 | {1,2,3} rides | 93 | 2 | {1,2,4} rides | 90 | 3 | {2,3,4} rides | 96 | 1 | {1,2,4} rides | 91 | 3 | {1,2,3} rides | 70 | 2 | {1,2,3} user_promo_codes | 49 | 2 | {2,3,4} users | 44 | 2 | {1,2,3} users | 53 | 3 | {2,3,4} users | 52 | 2 | {1,2,3} users | 51 | 4 | {2,3,4} users | 67 | 3 | {1,2,3} users | 50 | 2 | {2,3,4} users | 66 | 2 | {2,3,4} users | 64 | 4 | {1,3,4} users | 65 | 1 | {1,3,4} vehicle_location_histories | 47 | 2 | {1,2,3} vehicles | 45 | 3 | {1,2,3} vehicles | 88 | 4 | {2,3,4} vehicles | 87 | 3 | {1,3,4} vehicles | 86 | 3 | {1,3,4} vehicles | 68 | 1 | {1,3,4} vehicles | 84 | 1 | {1,2,3} vehicles | 89 | 2 | {1,2,4} vehicles | 85 | 4 | {1,2,4} vehicles | 69 | 2 | {1,2,4}
ããŒã蚌ææžã«DNSã¯ã€ã«ãã«ãŒãã䜿ã£ãŠãããšãããŒãè¿œå ã楜ã«ã§ããŸããã
ããŒããåæ¢ãã
次ã«ãã¯ã©ã¹ã¿ãŒããããŒãã匷å¶åæ¢ããŠåé€ããŠã¿ãŸãã
ãã®ããŒãã«ã€ããŠã¯ã1床ãã¡ãã§å°ãæ±ã£ãŠããã®ã§ããã
CockroachDBで、データがどのノードに割り当てられているか確認する - CLOVER🍀
æ¹ããŠããã1床ã
node4.cockroachã§ãcockroach
ããã»ã¹ãkill
ããŠã¿ãŸãã
$ kill `pgrep cockroach`
ã¡ãªã¿ã«ãããã ãšGraceful Shutdownã«ãªãããã§ããâŠã
initiating graceful shutdown of server server drained and shutdown completed
cockroach node status
ã§èŠããšãmembership
ãšis_draining
ãfalse
ã«ãªã£ãŠããŸããé¢è±äžãã§ããã
$ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.258227 | 2021-12-19 10:44:52.822427 | | true | true | 27 | 27 | 56 | 0 | 18 | 56 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.646529 | 2021-12-19 10:44:53.214879 | | true | true | 25 | 25 | 57 | 0 | 17 | 57 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:07.746837 | 2021-12-19 10:44:49.81032 | | true | true | 21 | 21 | 56 | 0 | 15 | 56 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 10:38:12.50393 | 2021-12-19 10:44:15.548517 | | false | false | 14 | 14 | 50 | 0 | 0 | 50 | false | active | true (4 rows)
ä»ã®ããŒãã¯ãranges_underreplicated
ãšããé
ç®ã®æ°åãå¢ããŠããŸããããã¯ãã¬ããªã«ã䜿çšã§ããªãã¬ã³ãžã®æ°ã
è¡šããŠããŸãã
ãã®æ°åã0以å€ã®å Žåã¯ãã¯ã©ã¹ã¿ãŒããŸã å®å®ããŠããªãããšãè¡šããŠããããã§ãã
ãã®æãWeb UIã§èŠããšSUSPECT
ãšããç¶æ
ã«ãªã£ãŠããŸãã
ããã«ãã°ããåŸ
ã£ãŠãããšãDEAD
ã«ãªããŸãã
ã¹ããŒã¿ã¹ã®é·ç§»ã«æéããããã®ã¯ãããŒã¿ã®ãªãã©ã³ã¹ãéå§ãããŸã§ã«5åããããããã¿ããã§ããã
Nodes going offline: If a member of a Raft group ceases to respond, after 5 minutes, the cluster begins to rebalance by replicating the data the downed node held onto other nodes.
Overview / Membership changes: rebalance/repair
DEAD
ã«ãªã£ãŠããã¯ã©ã¹ã¿ãŒã®ã¡ã³ããŒäžèŠ§ã«ã¯ãŸã æ®ã£ããŸãŸã§ãã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 4 (4 rows)
cockroach node status
ã§ã¯ãã®ããã«ãªããŸããranges_underreplicated
ã0
ã«ãªããŸããã
$ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.258227 | 2021-12-19 10:50:48.310116 | | true | true | 27 | 27 | 73 | 0 | 0 | 73 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.646529 | 2021-12-19 10:50:48.727116 | | true | true | 25 | 25 | 73 | 0 | 0 | 73 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:07.746837 | 2021-12-19 10:50:45.332459 | | true | true | 21 | 21 | 73 | 0 | 0 | 73 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 10:38:12.50393 | 2021-12-19 10:44:15.548517 | | false | false | 14 | 14 | 50 | 0 | 0 | 0 | false | active | true (4 rows)
ããŒã¿ãšããŠãããªãã©ã³ã¹ãçµãããŸãããã
$ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 3 | {1,2,3} rides | 46 | 1 | {1,2,3} rides | 95 | 2 | {1,2,3} rides | 94 | 1 | {1,2,3} rides | 92 | 3 | {1,2,3} rides | 93 | 2 | {1,2,3} rides | 90 | 3 | {1,2,3} rides | 96 | 1 | {1,2,3} rides | 91 | 3 | {1,2,3} rides | 70 | 2 | {1,2,3} user_promo_codes | 49 | 2 | {1,2,3} users | 44 | 2 | {1,2,3} users | 53 | 3 | {1,2,3} users | 52 | 2 | {1,2,3} users | 51 | 2 | {1,2,3} users | 67 | 3 | {1,2,3} users | 50 | 2 | {1,2,3} users | 66 | 2 | {1,2,3} users | 64 | 1 | {1,2,3} users | 65 | 1 | {1,2,3} vehicle_location_histories | 47 | 2 | {1,2,3} vehicles | 45 | 3 | {1,2,3} vehicles | 88 | 2 | {1,2,3} vehicles | 87 | 3 | {1,2,3} vehicles | 86 | 3 | {1,2,3} vehicles | 68 | 1 | {1,2,3} vehicles | 84 | 1 | {1,2,3} vehicles | 89 | 2 | {1,2,3} vehicles | 85 | 2 | {1,2,3} vehicles | 69 | 2 | {1,2,3}
ãšããã§ãåæ¢ããããŒãã¯äžèŠ§ããåé€ã§ããªãã®ã§ããããïŒ
ããã§cockroach node decommission
ã䜿ããŸãã
$ cockroach node decommission --certs-dir=$CERTS_DIR 4
ããã¥ã¡ã³ããšããŠã¯ããã¡ãã«èšèŒããããŸãã
Decommission Nodes / Remove a single node (dead)
ãã®ã³ãã³ãã®ã¬ã¹ãã³ã¹ã¯ããã®ããã«ãªããŸãã
id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | false | 0 | true | decommissioning | true (1 row) No more data reported on target nodes. Please verify cluster health before removing the nodes.
cockroach node status
ã®æ¹ã§ã¯äŸç¶ãšããŠè¡šç€ºãããŸããããã¡ãã¯éå»ã«ããããŒãã®æ
å ±ãå«ããŠ
衚瀺ããããã®ããã§ãã
â»--decommission
ãŸãã¯--all
ã䜿ã£ãå Žå
$ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+----------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.258227 | 2021-12-19 11:06:06.296492 | | true | true | 27 | 27 | 73 | 0 | 0 | 73 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:06.646529 | 2021-12-19 11:06:06.706032 | | true | true | 25 | 25 | 73 | 0 | 0 | 73 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 10:36:07.746837 | 2021-12-19 11:06:07.817467 | | true | true | 21 | 21 | 73 | 0 | 0 | 73 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 10:38:12.50393 | 2021-12-19 11:05:10.77051 | | false | false | NULL | NULL | NULL | NULL | NULL | 0 | true | decommissioned | true (4 rows)
ãããããŒãã®å»æ¢ãã§ããã
ããŒããå»æ¢ãã
å
ã»ã©ã¯ããã§ã«åæ¢ããããŒãã«å¯ŸããŠcockroach node decommission
ãå®è¡ããŸããã
ä»åºŠã¯ãèµ·åããŠããããŒãã«å¯ŸããŠå®è¡ããã±ãŒã¹ãèããŠã¿ãŸãããã
ã¯ã©ã¹ã¿ãŒã¯åäœæããŸãããã¯ã©ã¹ã¿ãŒããã³ããŒã¿ã®ç¶æ ã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 (3 rows) $ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:14.070428 | 2021-12-19 11:16:36.655673 | | true | true | 26 | 26 | 62 | 0 | 29 | 67 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:15.943274 | 2021-12-19 11:16:34.035422 | | true | true | 10 | 10 | 37 | 0 | 0 | 43 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:16.096537 | 2021-12-19 11:16:34.245839 | | true | true | 15 | 15 | 37 | 0 | 0 | 43 | false | active | false (3 rows) $ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 2 | {1,2,3} rides | 46 | 2 | {1,2,3} rides | 71 | 1 | {1,2,3} rides | 70 | 2 | {1,2,3} rides | 68 | 2 | {1,2,3} rides | 69 | 1 | {1,2,3} rides | 67 | 1 | {1,2,3} rides | 60 | 1 | {1,2,3} rides | 59 | 3 | {1,2,3} rides | 81 | 2 | {1,2,3} user_promo_codes | 49 | 2 | {1,2,3} users | 44 | 1 | {1,2,3} users | 53 | 3 | {1,2,3} users | 52 | 3 | {1,2,3} users | 51 | 2 | {1,2,3} users | 66 | 2 | {1,2,3} users | 50 | 2 | {1,2,3} users | 65 | 3 | {1,2,3} users | 64 | 3 | {1,2,3} users | 74 | 3 | {1,2,3} vehicle_location_histories | 47 | 2 | {1,2,3} vehicles | 45 | 3 | {1,2,3} vehicles | 80 | 1 | {1,2,3} vehicles | 79 | 2 | {1,2,3} vehicles | 55 | 3 | {1,2,3} vehicles | 78 | 2 | {1,2,3} vehicles | 54 | 3 | {1,2,3} vehicles | 77 | 3 | {1,2,3} vehicles | 75 | 3 | {1,2,3} vehicles | 76 | 2 | {1,2,3}
æ°ããããŒããè¿œå ããŸããnode4.cockroachã§ãããŒããèµ·åã
$ cockroach start \ --certs-dir=$CERTS_DIR \ --store=/var/lib/cockroach/data \ --advertise-addr=node4.cockroach \ --join=node1.cockroach \ --join=node2.cockroach \ --join=node3.cockroach
ã¯ã©ã¹ã¿ãŒãžã®åå ããã³ããŒã¿ã®ãªãã©ã³ã¹ãå®äºãããŸã§åŸ ã¡ãŸãã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 4 (4 rows) $ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:14.070428 | 2021-12-19 11:20:12.677242 | | true | true | 22 | 22 | 56 | 0 | 0 | 56 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:15.943274 | 2021-12-19 11:20:10.064974 | | true | true | 19 | 19 | 57 | 0 | 0 | 57 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:16.096537 | 2021-12-19 11:20:10.404194 | | true | true | 18 | 18 | 56 | 0 | 0 | 56 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 11:18:03.424437 | 2021-12-19 11:20:13.97675 | | true | true | 14 | 14 | 50 | 0 | 0 | 50 | false | active | false (4 rows) $ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 1 | {1,2,3} rides | 46 | 1 | {1,2,4} rides | 71 | 1 | {1,3,4} rides | 70 | 2 | {2,3,4} rides | 68 | 2 | {2,3,4} rides | 69 | 4 | {1,2,4} rides | 67 | 4 | {1,2,4} rides | 60 | 1 | {1,2,4} rides | 59 | 3 | {1,2,3} rides | 81 | 3 | {1,3,4} user_promo_codes | 49 | 2 | {2,3,4} users | 44 | 4 | {1,3,4} users | 53 | 3 | {2,3,4} users | 52 | 3 | {2,3,4} users | 51 | 1 | {1,2,3} users | 66 | 3 | {1,3,4} users | 50 | 1 | {1,3,4} users | 65 | 3 | {2,3,4} users | 64 | 3 | {2,3,4} users | 74 | 2 | {2,3,4} vehicle_location_histories | 47 | 2 | {2,3,4} vehicles | 45 | 4 | {1,3,4} vehicles | 80 | 1 | {1,2,4} vehicles | 79 | 2 | {1,2,3} vehicles | 55 | 1 | {1,2,4} vehicles | 78 | 2 | {1,2,3} vehicles | 54 | 1 | {1,2,3} vehicles | 77 | 3 | {1,3,4} vehicles | 75 | 3 | {1,2,3} vehicles | 76 | 2 | {1,2,4}
ããã§ãããŒããå»æ¢ããéã«ã¯cockroach node decommission
ããcockroach node drain
ãããããã§ãã
$ cockroach node -h List, inspect, drain or remove nodes. Usage: cockroach node [command] [flags] cockroach node [command] Available Commands: ls lists the IDs of all nodes in the cluster status shows the status of a node or all nodes decommission decommissions the node(s) recommission recommissions the node(s) drain drain a node without shutting it down ãçç¥ã
ããããåèã«ããããã¥ã¡ã³ãã¯ããã¡ãã§ãã
Decommission Nodes / Remove a single node (live)
ãŸãã¯cockroach node decommission
ãã䜿ã£ãŠã¿ãŸãããã
$ cockroach node decommission --certs-dir=$CERTS_DIR 4
ã³ãã³ããå®è¡ãããšã察象ã®ããŒãã®ã¬ããªã«ãã©ãã©ãæžã£ãŠããæ§åã衚瀺ãããŸãã
id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 50 | true | decommissioning | false (1 row) .......... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 48 | true | decommissioning | false (1 row) ... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 46 | true | decommissioning | false (1 row) ....... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 45 | true | decommissioning | false (1 row) ...... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 44 | true | decommissioning | false (1 row) ........
ãã°ããåŸ ã£ãŠãããšãæçµçã«ã¯ã¬ããªã«ã0ã«ãªã£ãŠå®äºããŸãã
....... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 3 | true | decommissioning | false (1 row) .......... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 2 | true | decommissioning | false (1 row) ........... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 1 | true | decommissioning | false (1 row) ............. id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 4 | true | 0 | true | decommissioning | false (1 row) No more data reported on target nodes. Please verify cluster health before removing the nodes.
ããŒã¿ããªãã©ã³ã¹ãããããŒããã¯ã©ã¹ã¿ãŒããåãé¢ãããŸããã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 (3 rows) $ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+----------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:14.070428 | 2021-12-19 11:26:30.621353 | | true | true | 29 | 29 | 73 | 0 | 0 | 73 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:15.943274 | 2021-12-19 11:26:32.508758 | | true | true | 22 | 22 | 73 | 0 | 0 | 73 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:16.096537 | 2021-12-19 11:26:32.685638 | | true | true | 22 | 22 | 73 | 0 | 0 | 73 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 11:18:03.424437 | 2021-12-19 11:25:09.355884 | | false | false | NULL | NULL | NULL | NULL | NULL | 0 | true | decommissioned | false (4 rows) $ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 1 | {1,2,3} rides | 46 | 1 | {1,2,3} rides | 71 | 1 | {1,2,3} rides | 70 | 2 | {1,2,3} rides | 68 | 2 | {1,2,3} rides | 69 | 2 | {1,2,3} rides | 67 | 1 | {1,2,3} rides | 60 | 1 | {1,2,3} rides | 59 | 3 | {1,2,3} rides | 81 | 3 | {1,2,3} user_promo_codes | 49 | 2 | {1,2,3} users | 44 | 3 | {1,2,3} users | 53 | 3 | {1,2,3} users | 52 | 3 | {1,2,3} users | 51 | 1 | {1,2,3} users | 66 | 3 | {1,2,3} users | 50 | 1 | {1,2,3} users | 65 | 3 | {1,2,3} users | 64 | 3 | {1,2,3} users | 74 | 2 | {1,2,3} vehicle_location_histories | 47 | 2 | {1,2,3} vehicles | 45 | 1 | {1,2,3} vehicles | 80 | 1 | {1,2,3} vehicles | 79 | 2 | {1,2,3} vehicles | 55 | 1 | {1,2,3} vehicles | 78 | 2 | {1,2,3} vehicles | 54 | 1 | {1,2,3} vehicles | 77 | 3 | {1,2,3} vehicles | 75 | 3 | {1,2,3} vehicles | 76 | 2 | {1,2,3}
ããã§ãããŒãã®å»æ¢ãã§ããŸããããšã
次ã¯ãcockroach node drain
ã®æ¹ãè©ŠããŠã¿ãããšã«ããŸãã
node5.cockroachã§èµ·åã
$ cockroach start \ --certs-dir=$CERTS_DIR \ --store=/var/lib/cockroach/data \ --advertise-addr=node5.cockroach \ --join=node1.cockroach \ --join=node2.cockroach \ --join=node3.cockroach
ã¯ã©ã¹ã¿ãŒã®ç¶æ ã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 5 (4 rows) $ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+----------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:14.070428 | 2021-12-19 11:32:53.107335 | | true | true | 24 | 24 | 57 | 0 | 0 | 57 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:15.943274 | 2021-12-19 11:32:55.006681 | | true | true | 15 | 15 | 56 | 0 | 0 | 56 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:16.096537 | 2021-12-19 11:32:55.183922 | | true | true | 18 | 18 | 56 | 0 | 0 | 56 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 11:18:03.424437 | 2021-12-19 11:25:09.355884 | | false | false | NULL | NULL | NULL | NULL | NULL | 0 | true | decommissioned | false 5 | node5.cockroach:26257 | node5.cockroach:26257 | v21.2.3 | 2021-12-19 11:31:40.591356 | 2021-12-19 11:32:57.133676 | | true | true | 16 | 16 | 49 | 0 | 0 | 50 | false | active | false (5 rows) $ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 5 | {1,2,5} rides | 46 | 1 | {1,3,5} rides | 71 | 1 | {1,2,3} rides | 70 | 5 | {2,3,5} rides | 68 | 1 | {1,3,5} rides | 69 | 2 | {1,2,5} rides | 67 | 3 | {1,3,5} rides | 60 | 3 | {1,2,3} rides | 59 | 3 | {1,2,3} rides | 81 | 5 | {1,3,5} user_promo_codes | 49 | 5 | {2,3,5} users | 44 | 3 | {1,3,5} users | 53 | 3 | {2,3,5} users | 52 | 1 | {1,2,3} users | 51 | 5 | {1,3,5} users | 66 | 5 | {1,3,5} users | 50 | 1 | {1,2,5} users | 65 | 5 | {2,3,5} users | 64 | 2 | {1,2,5} users | 74 | 2 | {2,3,5} vehicle_location_histories | 47 | 2 | {1,2,5} vehicles | 45 | 1 | {1,2,3} vehicles | 80 | 1 | {1,2,3} vehicles | 79 | 2 | {2,3,5} vehicles | 55 | 5 | {1,2,5} vehicles | 78 | 2 | {1,2,5} vehicles | 54 | 1 | {1,2,3} vehicles | 77 | 3 | {2,3,5} vehicles | 75 | 2 | {1,2,3} vehicles | 76 | 5 | {1,2,5}
ã§ã¯ãnode5.cockroachããã¬ã€ã³ããŠã¿ãŸããnode1.cockroachãããnode5.cockroachããã¬ã€ã³ã
$ cockroach node drain --certs-dir=$CERTS_DIR --host node5.cockroach node is draining... remaining: 27 node is draining... remaining: 0 (complete) ok
ã³ãã³ãèªäœã¯ãããã«å®äºããŸãã
ã¯ã©ã¹ã¿ãŒãããŒã¿ã®ç¶æ ãèŠãŠã¿ãŸãã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 5 (4 rows) $ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+----------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:14.070428 | 2021-12-19 11:37:00.616747 | | true | true | 30 | 30 | 57 | 0 | 0 | 57 | false | active | false 2 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:15.943274 | 2021-12-19 11:36:58.028884 | | true | true | 20 | 20 | 56 | 0 | 0 | 56 | false | active | false 3 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 11:16:16.096537 | 2021-12-19 11:36:58.179227 | | true | true | 23 | 23 | 56 | 0 | 0 | 56 | false | active | false 4 | node4.cockroach:26257 | node4.cockroach:26257 | v21.2.3 | 2021-12-19 11:18:03.424437 | 2021-12-19 11:25:09.355884 | | false | false | NULL | NULL | NULL | NULL | NULL | 0 | true | decommissioned | false 5 | node5.cockroach:26257 | node5.cockroach:26257 | v21.2.3 | 2021-12-19 11:31:40.591356 | 2021-12-19 11:37:00.138004 | | true | true | 0 | 0 | 50 | 0 | 0 | 50 | false | active | true (5 rows) $ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 1 | {1,2,5} rides | 46 | 1 | {1,3,5} rides | 71 | 1 | {1,2,3} rides | 70 | 2 | {2,3,5} rides | 68 | 1 | {1,3,5} rides | 69 | 2 | {1,2,5} rides | 67 | 3 | {1,3,5} rides | 60 | 3 | {1,2,3} rides | 59 | 3 | {1,2,3} rides | 81 | 3 | {1,3,5} user_promo_codes | 49 | 2 | {2,3,5} users | 44 | 3 | {1,3,5} users | 53 | 3 | {2,3,5} users | 52 | 1 | {1,2,3} users | 51 | 1 | {1,3,5} users | 66 | 3 | {1,3,5} users | 50 | 1 | {1,2,5} users | 65 | 3 | {2,3,5} users | 64 | 2 | {1,2,5} users | 74 | 2 | {2,3,5} vehicle_location_histories | 47 | 2 | {1,2,5} vehicles | 45 | 1 | {1,2,3} vehicles | 80 | 1 | {1,2,3} vehicles | 79 | 2 | {2,3,5} vehicles | 55 | 2 | {1,2,5} vehicles | 78 | 2 | {1,2,5} vehicles | 54 | 1 | {1,2,3} vehicles | 77 | 3 | {2,3,5} vehicles | 75 | 2 | {1,2,3} vehicles | 76 | 2 | {1,2,5}
ç¹ã«ãããŒã¿ããªãã©ã³ã¹ããããããããšã¯ãããŸããããis_draining
ã¯true
ã«ãªã£ãŠããŸããã
ããã§ãã1床drain
ã®èª¬æãèŠãŠã¿ãŸãããããŸã詳ããæžãããŠããªãããã§ãã
drain drain a node without shutting it down
ãã ããã®æç¹ã§node5.cockroachã«ã¯ã¢ã¯ã»ã¹ã§ããªããªãããã§ãã
$ cockroach node ls --certs-dir=$CERTS_DIR --host node5.cockroach ERROR: cannot establish secure connection to insecure server. Maybe use --insecure? pq: SSL is not enabled on the server Failed running "node ls"
ãã®åŸã¯ãcockroach node decommission
ã§ããŒãå»æ¢ãã§ããã
$ cockroach node decommission --certs-dir=$CERTS_DIR 5
å®éã®ãªãã©ã³ã¹ã¯ããã¡ããå¥æ©ã«è¡ãããããã§ãã
ãªã®ã§ãããä»åã¯éäžã§æ¢ãŸããŸããâŠããªããªãã§ãããâŠã
ãã¡ããèŠãŠãããšãcockroach node drain
ã¯ããå®å
šã«ããŒããåãé¢ãããå Žåã«äœ¿ãããããã§ããã
If you need maximum cluster availability, you can run cockroach node drain prior to node shutdown and actively monitor the draining process instead of automating it.
Decommission Nodes / Step 4. Stop the decommissioning node
ã¬ããªã±ãŒã·ã§ã³ä¿æ°ãäžåãããã«ãããŒããå»æ¢ããŠã¿ã
ãã¡ãã«æžãããŠããããã«ãã¬ããªã±ãŒã·ã§ã³ä¿æ°ãäžåãç¶æ ã«ãªãããã«ãããŒããå»æ¢ããŠã¿ãŸãããã
Decommission Nodes / Considerations
ãŸã3ããŒãã®ç¶æ ã«ããŠãããŸãã
~$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 (3 rows) $ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 12:07:53.270469 | 2021-12-19 12:13:17.318499 | | true | true | 26 | 26 | 73 | 0 | 0 | 73 | false | active | false 2 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 12:07:54.800607 | 2021-12-19 12:13:18.87348 | | true | true | 20 | 20 | 73 | 0 | 0 | 73 | false | active | false 3 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 12:07:54.994782 | 2021-12-19 12:13:19.084322 | | true | true | 27 | 27 | 73 | 0 | 0 | 73 | false | active | false (3 rows) $ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 3 | {1,2,3} rides | 46 | 3 | {1,2,3} rides | 62 | 1 | {1,2,3} rides | 60 | 3 | {1,2,3} rides | 59 | 1 | {1,2,3} rides | 87 | 3 | {1,2,3} rides | 58 | 1 | {1,2,3} rides | 88 | 1 | {1,2,3} rides | 86 | 3 | {1,2,3} rides | 61 | 2 | {1,2,3} user_promo_codes | 49 | 3 | {1,2,3} users | 44 | 2 | {1,2,3} users | 67 | 2 | {1,2,3} users | 66 | 3 | {1,2,3} users | 64 | 3 | {1,2,3} users | 53 | 1 | {1,2,3} users | 50 | 3 | {1,2,3} users | 52 | 2 | {1,2,3} users | 51 | 2 | {1,2,3} users | 65 | 1 | {1,2,3} vehicle_location_histories | 47 | 3 | {1,2,3} vehicles | 45 | 3 | {1,2,3} vehicles | 57 | 3 | {1,2,3} vehicles | 56 | 2 | {1,2,3} vehicles | 55 | 2 | {1,2,3} vehicles | 68 | 2 | {1,2,3} vehicles | 54 | 1 | {1,2,3} vehicles | 85 | 1 | {1,2,3} vehicles | 84 | 2 | {1,2,3} vehicles | 69 | 1 | {1,2,3}
ããã§node3.cockroachãå»æ¢ããããšããŠã¿ãŸãã
$ cockroach node decommission --certs-dir=$CERTS_DIR 3
ãããšã確ãã«é²ãŸãªããªããŸãã
$ cockroach node decommission --certs-dir=$CERTS_DIR 3 id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 3 | true | 73 | true | decommissioning | false (1 row) .............
æžãããŠãããšããã§ããã
If no other nodes are available, the decommissioning process will hang indefinitely.
Decommission Nodes / Considerations
ãããé²ãããã«ããã«ã¯ãæ°ããããŒããè¿œå ããå¿ èŠããããŸããä»åã¯node4.cockroachãè¿œå ããŸãããã
$ cockroach start \ --certs-dir=$CERTS_DIR \ --store=/var/lib/cockroach/data \ --advertise-addr=node4.cockroach \ --join=node1.cockroach \ --join=node2.cockroach \ --join=node3.cockroach
ããŒããè¿œå ãããšããã£ãšåæ¢ããŠããããŒãå»æ¢ããã»ã¹ãåãåºããŸãã
id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 3 | true | 73 | true | decommissioning | false (1 row) ........................... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 3 | true | 69 | true | decommissioning | false (1 row) ...... id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 3 | true | 67 | true | decommissioning | false (1 row) ......
ãããŠå®äºã
. id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 3 | true | 1 | true | decommissioning | false (1 row) id | is_live | replicas | is_decommissioning | membership | is_draining -----+---------+----------+--------------------+-----------------+-------------- 3 | true | 0 | true | decommissioning | false (1 row) No more data reported on target nodes. Please verify cluster health before removing the nodes.
æ°ããè¿œå ããããŒãã§ã¯ããªãã©ã³ã¹ãé²ãã§ãããŸãã
ãªãã±ïŒ ã¬ããªã±ãŒã·ã§ã³ä¿æ°ãäžåãããã«ãããŒãã匷å¶åæ¢ããŠã¿ã
æåŸã«ãã¬ããªã±ãŒã·ã§ã³ä¿æ°ãäžåãå Žåã®ããŒãã®å»æ¢ã¯ããŸããããŸããã§ããããããã»ã¹ã匷å¶çã«
åæ¢ããå Žåã®åããèŠãŠã¿ãŸãããã
ãŸãã¯ããŸã3ããŒãã§ã¯ã©ã¹ã¿ãŒãæ§ç¯ãããŒã¿ãããŒãã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 (3 rows) $ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated | gossiped_replicas | is_decommissioning | membership | is_draining -----+-----------------------+-----------------------+---------+----------------------------+----------------------------+----------+--------------+---------+------------------+-----------------------+--------+--------------------+------------------------+-------------------+--------------------+------------+-------------- 1 | node1.cockroach:26257 | node1.cockroach:26257 | v21.2.3 | 2021-12-19 12:32:20.252109 | 2021-12-19 12:33:23.386698 | | true | true | 30 | 30 | 73 | 0 | 0 | 73 | false | active | false 2 | node3.cockroach:26257 | node3.cockroach:26257 | v21.2.3 | 2021-12-19 12:32:20.657242 | 2021-12-19 12:33:23.784939 | | true | true | 23 | 23 | 73 | 0 | 0 | 73 | false | active | false 3 | node2.cockroach:26257 | node2.cockroach:26257 | v21.2.3 | 2021-12-19 12:32:20.705223 | 2021-12-19 12:33:23.826301 | | true | true | 20 | 20 | 73 | 0 | 0 | 73 | false | active | false (3 rows) $ cockroach sql --certs-dir=$CERTS_DIR --user myuser --database movr --format tsv -e 'show ranges from database movr' | perl -anl -F'\t' -e 'print "$F[0] | $F[3] | $F[5] | $F[7]"' table_name | range_id | lease_holder | replicas promo_codes | 48 | 3 | {1,2,3} rides | 46 | 2 | {1,2,3} rides | 86 | 1 | {1,2,3} rides | 85 | 2 | {1,2,3} rides | 83 | 2 | {1,2,3} rides | 84 | 2 | {1,2,3} rides | 81 | 2 | {1,2,3} rides | 88 | 1 | {1,2,3} rides | 82 | 2 | {1,2,3} rides | 87 | 1 | {1,2,3} user_promo_codes | 49 | 2 | {1,2,3} users | 44 | 1 | {1,2,3} users | 55 | 1 | {1,2,3} users | 54 | 2 | {1,2,3} users | 52 | 1 | {1,2,3} users | 53 | 1 | {1,2,3} users | 50 | 3 | {1,2,3} users | 66 | 3 | {1,2,3} users | 64 | 3 | {1,2,3} users | 65 | 1 | {1,2,3} vehicle_location_histories | 47 | 1 | {1,2,3} vehicles | 45 | 2 | {1,2,3} vehicles | 79 | 3 | {1,2,3} vehicles | 78 | 3 | {1,2,3} vehicles | 76 | 2 | {1,2,3} vehicles | 77 | 3 | {1,2,3} vehicles | 74 | 2 | {1,2,3} vehicles | 80 | 3 | {1,2,3} vehicles | 75 | 3 | {1,2,3} vehicles | 67 | 3 | {1,2,3}
node2.cockroachãšnode3.cockroachãåæ¢ããŠã¿ãŸãã
## node2.cockroach $ kill `pgrep cockroach` ## node3.cockroach $ kill `pgrep cockroach`
ãã®ç¶æ
ã«ãªããšãcockroach node ls
ã®ã¬ã¹ãã³ã¹ã¯è¿ã£ãŠããŸãã
$ cockroach node ls --certs-dir=$CERTS_DIR id ------ 1 2 3 (3 rows)
cockroach node status
ãªã©ã¯ãå¿çãè¿ã£ãŠããªããªããŸãã
$ cockroach node status --certs-dir=$CERTS_DIR --ranges --decommission
ããã¯ãã¬ããªã±ãŒã·ã§ã³ä¿æ°ãäžåã£ãå Žåã¯ãã³ã°ã¢ãããããšããããšã§ãããããâŠã
To be able to tolerate the failure of any 1 node, use at least 3 nodes with the default 3-way replication factor. In this case, if 1 node fails, each range retains 2 of its 3 replicas, a majority.
Deploy CockroachDB On-Premises / Requirements
ãŸãšã
CockroachDBã§ãããŒãã®å¢æžãå»æ¢ãããã觊ã£ãŠã¿ãŸããã
ããŒããåæ¢ããã ãã ãšã¯ã©ã¹ã¿ãŒããããŒããããªããªã£ãããšã«ã¯ãªããªãã£ãããšãã¡ãããšåããææ¡ããŠ
ããªããšãããªããããªãšãããããã€ãããã
å®é䜿ãããšæã£ããããã®ããããã£ããèŠãŠãããªããšã§ããã