Phước

Phước

2023-11-28 13:19:43

[TiDB] Xử lý TiKV nodes khi bị down (version < 6.1)

Việc xử lý khi một TiKV node không thể start (ngưng hoạt động) là một phần quan trọng của quản lý hệ thống để đảm bảo tính sẵn sàng và ổn định của hệ thống TiDB.

Lưu ý: Version TiDB trong bài viết là 4.0.7

Dưới đây là một cách có thể xử lý khi một TiKV node bị down:

- Trạng thái đầu tiên là Disconnected thường là các lỗi liên quan .sst file.

-  Sau 30 phút ở trạng thái Disconnected , TiKV node đi vào trạng thái Down (lúc này leader đã được move sang các nodes UP). Thời gian cấu hình chuyển trạng thái nằm trong config của pd mặc dịnh là 30 phút:

"max-store-down-time": "30m0s"

Sau đó dùng pd-ctl delete store {storeID} của tikv node có trạng thái Down => status của node lúc này chuyển sang trạng thái Offline (bắt đầu migrate region)

» store delete 1
Success!

- Tiếp theo tiến hành scale-out một node mới vào cluster, lúc này TiKV Offline đã trong trạng thái migrate region sang node mới.

tiup cluster scale-out {clusterName} tikv-scale-out.yml --user root

- Với nội dung file .yml ví dụ như sau:

tikv_servers:
- host: 1.1.1.121
  ssh_port: 234
  port: 20161
  status_port: 20181
  deploy_dir: /data/tidb/tidb-deploy/tikv-20161
  data_dir: /data/tidb/tidb-data/tikv-20161
  config:
    server.labels: {host: "host121-20161"}

- Dùng pd-ctl tăng limit  add-peer cho store mới và remove-peer cho store offline để tăng tốc độ migrate region bằng command sau:

» store limit 1 100000000000000000 remove-peer
Success!
» store limit 10001 100000000000000000 add-peer
Success!

- Cuối cùng theo dõi tiến độ region migrate, sau khi đã migrate xong và node Offline không còn region nào thì node này chuyển status sang Tombstone thì điều chỉnh lại store limit như default và tiến hành scale-in node này ra khỏi cluster.

Trên dây là các step thực hiện xử lý 1 node TiKV bị lỗi và không thể start. Tiếp theo, chúng ta sẽ thực hiện xử lý 2 node TiKV node bị down:

Đặt trường hợp 1 node TiKV đã vào trạng thái Offline và đang migrate region sang node khác, đột ngột có thêm 1 node TiKV gặp lỗi .sst file và không thể start đúng cách và đi vào trạng thái Disconnected; dẫn đến lúc này cluster mất 2/3 bản replicate và báo lỗi Region is unvailable tại một số table trong TiDBChúng ta thực hiện các bước sau:

- Dùng pd-ctl liệt kê các region bị mất 2/3 replicate:

region --jq='.regions[] | {id: .id, peer_stores: [.peers[].store_id] | select(length as $total | map(if .==({storeID_offline_1},{storeID_offline_2}) then . else empty end) | length>=$total-length) }'

- Set config scheduler của PD sang trạng thái Pause:

» config set region-schedule-limit 0
Success!
» config set replica-schedule-limit 0
Success!
» config set leader-schedule-limit 0
Success!
» config set merge-schedule-limit 0
Success!

- Stop TiKV node có đầy đủ replicate region của 2 node bị Down:

- Thao tác lệnh unsafe-recover để remove các store lỗi:

tiup ctl:v4.0.7 tikv --db /data/tidb/tidb-data/tikv-20160/db unsafe-recover remove-fail-stores -s {storeID_offline_1},{storeID_offline_2} --all-regions

- Nếu lệnh trên xuất log như bên dưới, đồng nghĩa đã khôi phục thành công Region bị lỗi:

removing stores [1, 2] from configurations...
success

- Tiếp theo tiến hành start lại TiKV node đã stop trước đó. Kiểm tra các table có lỗi Region is unvailable đã được recover không.

- Sau đó tiến hành setup lại scheduler của PD:

» config set region-schedule-limit 2048
Success!
» config set replica-schedule-limit 64
Success!
» config set leader-schedule-limit 4
Success!
» config set merge-schedule-limit 8
Success!

Trên là các giải pháp để xử lý và khôi phục TiDB Cluster khi xảy ra trường hợp 1 hoặc 2 TiKV node có sự cố và không thể start đúng cách. Lưu ý rằng cụ thể cách xử lý có thể phụ thuộc vào môi trường cụ thể của bạn đang sử dụng. Đảm bảo tuân thủ các nguyên tắc quản lý hệ thống và thực hiện các biện pháp an toàn để bảo vệ dữ liệu quan trọng của bạn.

[TiDB] Xử lý TiKV nodes khi bị down (version < 6.1)
0 Likes0 Comments