Phước

Phước

2023-12-01 13:07:05

[TiDB] Backup & Restore Database trong TiDB Cluster bằng công cụ BR

BR là một công cụ dành cho việc sao lưu và khôi phục dữ liệu phân tán của cụm TiDB.

Lưu ý: Trong bài viết sử dụng TiDB Cluster version 4.0.7

10.0.0.1, 10.0.0.2, 10.0.0.3 là 3 nodes TiKV trong TiDB Cluster

Tài liệu này mô tả cách chạy BR trong các trường hợp sử dụng sau:

  1. Sao lưu một database vào Network File System (NFS) (được khuyến nghị trong môi trường production)
  2. Khôi phục dữ liệu database từ Network File System (NFS) (được khuyến nghị trong môi trường productiont)

On Network File System Server (NFS)

Bước 1: Install NFS Server:

sudo yum install nfs-utils nfs-utils-lib -y

Sau khi cài đặt, start NFS và enable systemd của NFS:

sudo systemctl start nfs-server.service
sudo systemctl enable nfs-server.service

Bước 2: Tạo thư mục backup:

mkdir -p /data/tidb/tidb-deploy/backup
chmod 777 /data/tidb/tidb-deploy/backup

Lưu ý: Sử dụng user start tikv-server để tạo thư mục, Trong bài viết này chúng tôi sử dụng user tidb; để check user đang chạy tikv-server dùng command sau:

# ps aux | grep tikv-server | grep -v grep | awk '{print $1}'
tidb

Sử dụng chung user chạy BR tool và user chạy tikv-server sẽ giúp tránh các lỗi Permission Denied hoặc No such file... 

Bước 3: Sau khi máy chủ NFS được cài đặt và chạy, bạn có thể định cấu hình exports file để xác định thư mục nào bạn muốn chia sẻ; exports file thường nằm ở /etc/exports. Chỉnh sửa tệp này và thêm mục nhập cho các thư mục bạn muốn xuất:

sudo nano /etc/exports

Thêm các dòng sau:

/path/to/shared/folder CLIENT_IP(rw,sync,no_subtree_check)

Thay thế /path/to/shared/folder bằng đường dẫn của thư mục bạn muốn chia sẻ và thay thế IP_ADDRESS bằng địa chỉ IP hoặc dải mạng của các máy được phép truy cập vào chia sẻ NFS này.

Theo vì dụ trên ta sẽ có nội dung như sau:

/data/tidb/tidb-deploy/backup 10.0.0.2(rw,sync,no_subtree_check)
/data/tidb/tidb-deploy/backup 10.0.0.3(rw,sync,no_subtree_check)

Bước 4: Áp dung config trên bằng lệnh sau:

sudo exportfs -a
sudo systemctl restart nfs-server.service

On Network File System Client (NFS)

Bước 1: Install NFS utilize:

sudo yum install nfs-utils nfs-utils-lib -y

Bước 2: Tạo folder backup. Lưu ý cũng sử dụng user tidb 

mkdir -p /data/tidb/tidb-deploy/backup

Bước 3: Thực hiện mount file system với NFS server:

sudo mount -t nfs 10.0.0.1:/data/tidb/tidb-deploy/backup /data/tidb/tidb-deploy/backup

Sử dụng BR Tool cho backup TiDB:

Thực hiện lệnh sau để backup: 

# su - tidb
$ mkdir -p /data/tidb/tidb-deploy/backup/2023-12-01_1300  ### tạo folder theo date để lưu trữ backup
$ chmod 777 /data/tidb/tidb-deploy/backup/2023-12-01_1300
$ sudo  /root/.tiup/bin/tiup br:v4.0.7 backup db 10.0.0.1:2379 --db Example --storage "local:///data/tidb/tidb-deploy/backup/2023-12-01_1300/" --ratelimit 128 --log-file /home/tidb/br.log
Detial BR log in /home/tidb/br.log
Database backup <-----------------------------------------------------------------------------------------------------------------------------------> 100.00%
Checksum <------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2023/12/01 14:13:19.522 +07:00] [INFO] [collector.go:60] ["Database backup Success summary: total backup ranges: 401, total success: 401, total failed: 0, total take(Database backup time): 1m14.289042163s, total take(real time): 1m28.653472379s, total size(MB): 53909.15, avg speed(MB/s): 725.67, total kv: 645618222"] ["backup checksum"=13.434622121s] ["backup fast checksum"=63.366344ms] ["backup total regions"=1687] [BackupTS=446015657987276801] [Size=7917063019]

Chúng ta đã backup thành công TiDB Cluster thành các file .sst và cả 3 node TiKV đều có chung folder backup từ giao thức NFS 

Thực hiện recover database từ BR tool:

Database xem như đã bị xóa

MySQL [(none)]> drop database `Example`;
Query OK, 0 rows affected (2.03 sec)

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)

Chúng ta sử dụng BR Tool để restore như sau:

$ sudo /root/.tiup/bin/tiup br:v4.0.7 restore db 10.0.0.1:2379 --db Example --storage "local:///data/tidb/tidb-deploy/backup/2023-12-01_1300/" --ratelimit 128 --log-file /home/tidb/br.log
Detial BR log in /home/tidb/br.log
Database restore <----------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2023/12/01 14:36:50.504 +07:00] [INFO] [collector.go:60] ["Database restore Success summary: total restore files: 1655, total success: 1655, total failed: 0, total take(Database restore time): 6m34.625869245s, total take(real time): 3m58.064888894s, total kv: 645618222, total size(MB): 53909.15, avg speed(MB/s): 136.61"] ["restore checksum"=3m56.938433708s] ["split region"=49.325233623s] ["restore ranges"=1384] [Size=7916998318]

Trên đây là cách sử dụng BR Tool cho việc Backup và Restore Database trong TiDB Cluster thông qua Network File System. 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] Backup & Restore Database trong TiDB Cluster bằng công cụ BR
0 Likes0 Comments