API Data Backup and Recovery
Sao lưu dữ liệu APIM
APIM có thể khôi phục tất cả dữ liệu thông qua sao lưu/khôi phục DB.
Sao lưu SQL MariaDB
- Sử dụng: DB APIM
- Mô tả: DB của tất cả dữ liệu liên quan đến APIM như GW, API, Chính sách, Tài liệu, Cổng thông tin Nhà phát triển, v.v.
- Thông tin tài nguyên K8s:
- StatefulSets : apim-mariadb-master
- Pod: apim-mariadb-master-0
- Tác động khi thất bại: Khi MariaDB gặp sự cố
- Chức năng bảng điều khiển APIM trở nên bất thường
- Chức năng Cổng thông tin Nhà phát triển APIM trở nên bất thường
# Truy cập Pod MariaDB
kubectl -n apim-prd exec -it apim-mariadb-master-0 -c mariadb /bin/bash
# Thực hiện sao lưu SQL đầy đủ của MariaDB và lưu tệp trong thư mục /tmp của Pod
mysqldump -uapim -papim apim > /tmp/apim-maria-dump.sql
# Sao chép tệp sao lưu SQL vào thư mục /tmp của môi trường cục bộ
kubectl -n apim-prd cp apim-mariadb-master-0:/tmp/apim-maria-dump.sql -c mariadb ./apim-maria-dump.sql
Postgresql
- Sử dụng : DB Người dùng APIM
- Mô tả: DB của tất cả dữ liệu liên quan đến Người dùng trong APIM, chẳng hạn như Người dùng, Vai trò, Dự án, v.v.
- Về tài nguyên K8s
- StatefulSets : statefulset-pgauth
- Pod: statefulset-pgauth-0
- Tác động khi thất bại: Khi MariaDB gặp sự cố
- Lỗi đăng nhập bảng điều khiển APIM
- Lỗi đăng nhập bảng điều khiển Quản lý Thuê bao APIM
- Lỗi đăng nhập Cổng thông tin Nhà phát triển APIM
# Truy cập vào Pod PostgreSQL nội bộ và tạo một tệp sao lưu sơ đồ SQL bên trong thư mục /tmp của Pod, sau đó chuyển nó đến thư mục /tmp cục bộ
kubectl -n apim-prd exec -it statefulset-pgauth-0 -c pgauth > ./apim-pg-schema.sql -- pg_dump --create -s -U apim -d apim
# Truy cập vào Pod PostgreSQL nội bộ và tạo một tệp sao lưu dữ liệu SQL bên trong thư mục /tmp của Pod, sau đó chuyển nó đến thư mục /tmp cục bộ
kubectl -n apim-prd exec -it statefulset-pgauth-0 -c pgauth > ./apim-pg-data.sql -- pg_dump --insert --data-only -U apim -d apim
Kiểm tra tệp sao lưu MariaDB, Postgresql
# Xem danh sách tệp bao gồm kích thước tệp
cd /tmp
ls -alh
# (Tùy chọn) Xem nội dung tệp
cat apim-maria-dump.sql
cat apim-pg-schema.sql
cat apim-pg-data.sql
Tệp Nội Dung Tĩnh Cổng Phát Triển APIM
- Sử dụng: Tệp nội dung tĩnh Cổng phát triển APIM
- Mô tả: Tất cả các tệp tùy chỉnh của Cổng phát triển APIM, bao gồm Hình ảnh, Logo, Favicon, v.v.
- Thông tin về K8s
- Triển khai: deploy-apim-developers-portal-backend
- Pod: deploy-apim-developers-portal-backend-xxxxxx-xxxx
- Tác động của sự cố: Khi tệp nội dung tĩnh của cổng phát triển bị xóa
- Hình ảnh, logo, v.v. của Cổng phát triển APIM không thể hiển thị (Chức năng của Cổng phát triển hoạt động bình thường)
# Sao chép thư mục chứa toàn bộ tệp nội dung tĩnh của cổng phát triển vào máy cục bộ.
kubectl -n apim-prd cp deploy-apim-developers-portal-backend-xxxxxx-xxxx:/app/src/public ./public-prd
Khôi phục Dữ liệu APIM
MariaDB
# Sao chép SQL Dump MariaDB từ đường dẫn /tmp cục bộ vào đường dẫn /tmp của Pod MariaDB
kubectl -n apim-dev cp /tmp/apim-maria-dump.sql apim-mariadb-master-0:/tmp/apim-maria-dump.sql -c mariadb
# Truy cập vào nội bộ Pod MariaDB
kubectl -n apim-dev exec apim-mariadb-master-0 -c mariadb /bash
# Khôi phục DB thông qua SQL Dump của Pod MariaDB
mysql -u apim -p apim < /tmp/apim-maria-dump.sql
Postgresql
# Truy cập Pod PostgreSQL
kubectl -n apim-dev exec -it statefulset-pgauth-0 -c pgauth bash
# Xóa cơ sở dữ liệu "APIM" của Postgresql
dropdb -U postgres apim
# Truy cập psql của Postgresql
psql -U postgres
# Tạo cơ sở dữ liệu "apim" trong Postgresql
CREATE DATABASE apim WITH OWNER apim ENCODING 'UTF8';
# Cấp quyền cho người dùng "apim" trên cơ sở dữ liệu "apim" của Postgresql
GRANT ALL PRIVILEGES ON DATABASE apim TO apim;
# Thoát khỏi Postgresql
\q
# Khôi phục cơ sở dữ liệu từ các tệp dump của PostgreSQL
psql -U apim -d apim -f /tmp/apim-pg-schema.sql
psql -U apim -d apim -f /tmp/apim-pg-data.sql
Tiến hành các nhiệm vụ khôi phục khác
Khởi Tạo Dữ Liệu Cho Kong
# Truy Cập Pod Kong
kubectl exec --it {gateway pod name} -c proxy /bin/bash -n apim
kong migrations bootstrap
Cài Đặt Plugin Prometheus cho Giám Sát Kong
kubectl -n apim-dev exec --it {gateway pod name} -c fluent-bit /bin/bash
curl -i -X POST localhost:8001/plugins --data '{"name":"prometheus"}' -H "content-type: application/json"
Các Hành Động Cập Nhật Gateway Kong
Các hành động tiếp theo cho Gateway Kong do khởi động lại Pod lưu trữ Redis (Thêm: 4 tháng 4, 2024)
# Môi Trường Phát Triển
kubectl rollout restart deploy/nsmall-gw-kong -n apim
# Môi Trường Sản Xuất
kubectl rollout restart deploy/nsmall-prd-gw-kong -n apim