Chuyển tới nội dung chính

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