Lewati ke isi

Penerapan dan Pemeliharaan / Cadangan dan Migrasi

Artikel ini terutama menjelaskan cara melakukan pencadangan dan migrasi data DataFlux Func.

1. Cadangan Database

DataFlux Func akan secara otomatis melakukan pencadangan database secara berkala ke file .sql, dan menyimpannya di direktori cadangan database DataFlux Func.

Fitur ini menggunakan mysqldump untuk mencadangkan database. Pengguna MySQL yang terhubung ke database perlu memiliki izin yang cukup agar dapat mencadangkan dengan benar, termasuk:

  • SELECT
  • RELOAD
  • LOCK TABLES
  • REPLICATION CLIENT
  • SHOW VIEW
  • PROCESS

Isi dari pencadangan otomatis meliputi:

  1. Struktur lengkap pembuatan tabel database
  2. Semua data kecuali log dan catatan operasi

Secara default, lokasi penyimpanan file cadangan database adalah sebagai berikut:

Lingkungan Lokasi
Di dalam kontainer /data/sqldump/
Di dalam host {direktori instalasi}/data/sqldump/

Secara default, pencadangan file database dilakukan setiap jam (tepat pada jam penuh) dan file disimpan maksimal 7 hari (total 168 file). Aturan penamaan file adalah sebagai berikut:

Text Only
1
dataflux-func-sqldump-YYYYMMDD-hhmmss.sql

2. Ekspor / Impor Database

Selain pencadangan database berkala bawaan DataFlux Func, Anda juga dapat langsung menggunakan mysqldump untuk mengekspor dan mengimpor data.

2.1 Mengekspor Data

Berikut adalah perintah referensi untuk operasi ekspor:

Bash
1
docker exec {ID Kontainer MySQL} sh -c 'exec mysqldump --user=root --password="$MYSQL_ROOT_PASSWORD" --hex-blob --default-character-set=utf8mb4 --skip-extended-insert --databases dataflux_func' > {file cadangan di host}

2.2 Mengimpor Data

Berikut adalah perintah referensi untuk operasi impor:

Bash
1
docker exec -i {ID Kontainer MySQL} sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < {file cadangan di host}

3. Migrasi Database

Jika sistem telah melewati tahap verifikasi awal pada mesin tunggal setelah instalasi, dan Anda perlu mengalihkan database ke database eksternal (misalnya: Alibaba Cloud RDS, Redis), Anda dapat mengikuti langkah-langkah di bawah ini:

Saat menggunakan database eksternal, pastikan versi MySQL adalah 5.7 ke atas, dan versi Redis adalah 5.0 ke atas

DataFlux Func tidak mendukung Redis dengan deployment klaster

3.1 Memverifikasi Lingkungan

Buat database di dalam instance database eksternal, dan pastikan item konfigurasi berikut:

  • innodb-large-prefix=on
  • character-set-server=utf8mb4
  • collation-server=utf8mb4_unicode_ci

3.2 Mengimpor Data

Mengacu pada bagian "Cadangan Database" di atas, temukan file cadangan database MySQL terbaru, lalu impor ke database eksternal.

3.3 Mengubah Konfigurasi DataFlux Func

Temukan konfigurasi DataFlux Func user-config.yaml, lalu tambahkan / ubah konten field berikut sesuai dengan kondisi aktual:

YAML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Konfigurasi koneksi MySQL
MYSQL_HOST    : '127.0.0.1'    # Alamat koneksi MySQL
MYSQL_PORT    : 3306           # Nomor port MySQL
MYSQL_USER    : root           # Nama pengguna MySQL
MYSQL_PASSWORD: ''             # Kata sandi MySQL
MYSQL_DATABASE: dataflux_func  # Nama database MySQL

# Konfigurasi koneksi Redis
REDIS_HOST    : '127.0.0.1'    # Alamat koneksi Redis
REDIS_PORT    : 6379           # Nomor port Redis
REDIS_DATABASE: 5              # Nomor database Redis (saran: untuk menghindari konflik dengan aplikasi lain, jangan gunakan database default 0)
REDIS_PASSWORD: ''             # Kata sandi Redis (kosongkan jika tidak ada kata sandi)
REDIS_USE_TLS : false          # Dukungan TLS koneksi Redis (true / false)

3.4 Mengubah Konfigurasi Docker Stack

Temukan konfigurasi Docker Stack docker-stack.yaml, lalu hapus bagian yang terkait dengan MySQL dan Redis (cukup jadikan komentar)

3.5 Restart DataFlux Func

Restart seluruh DataFlux Func sesuai dengan Penerapan dan Pemeliharaan / Peningkatan dan Restart

4. Mengganti Direktori Instalasi

Dalam beberapa kasus, kapasitas disk tempat DataFlux Func awalnya diinstal mungkin tidak mencukupi, sehingga perlu memindahkan direktori instalasi ke disk baru yang berkapasitas besar.

Untuk itu, Anda dapat mengganti direktori instalasi dengan mengikuti langkah-langkah di bawah ini.

4.1 Menghentikan DataFlux Func

  1. Gunakan perintah docker stack rm dataflux-func untuk menghentikan DataFlux Func (langkah ini mungkin memerlukan waktu)
  2. Gunakan docker ps untuk memastikan semua kontainer telah berhenti
  3. Gunakan perintah cp {direktori instalasi} {direktori instalasi baru} untuk menyalin seluruh direktori instalasi DataFlux Func ke lokasi baru.
  4. Buka /etc/dataflux-func, lalu ubah direktori instalasi yang tercatat di dalamnya menjadi direktori instalasi baru.
  5. Mengubah konfigurasi Docker Stack

Temukan konfigurasi Docker Stack docker-stack.yaml, lalu ubah semua konten volumes yang berkaitan dengan direktori instalasi menjadi direktori instalasi baru, contoh:

Diff
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
 version: '3.1'

 services:
   # Konten lainnya dihilangkan
   server:
     image: dataflux-func.com/dataflux-func:x.y.z
     labels:
       - server
     volumes:
-      - "/usr/local/dataflux-func/data:/data"
+      - "/my-workspace/dataflux-func/data:/data"
     networks:
       - datafluxfunc
       - default
     ports:
       - "8088:8088"
     command: ./run-server.sh

 # Konten lainnya dihilangkan
  1. Gunakan perintah docker stack deploy dataflux-func -c {direktori instalasi}/docker-stack.yaml --resolve-image never untuk me-restart semua layanan

Karena file image dalam paket instalasi sudah diimpor ke lokal, menambahkan parameter --resolve-image never dapat menghindari Docker melakukan pemeriksaan image yang tidak berguna saat memulai kontainer