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:
SELECTRELOADLOCK TABLESREPLICATION CLIENTSHOW VIEWPROCESS
Isi dari pencadangan otomatis meliputi:
- Struktur lengkap pembuatan tabel database
- 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 | |
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 | |
2.2 Mengimpor Data
Berikut adalah perintah referensi untuk operasi impor:
| Bash | |
|---|---|
1 | |
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=oncharacter-set-server=utf8mb4collation-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 | |
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
- Gunakan perintah
docker stack rm dataflux-funcuntuk menghentikan DataFlux Func (langkah ini mungkin memerlukan waktu) - Gunakan
docker psuntuk memastikan semua kontainer telah berhenti - Gunakan perintah
cp {direktori instalasi} {direktori instalasi baru}untuk menyalin seluruh direktori instalasi DataFlux Func ke lokasi baru. - Buka
/etc/dataflux-func, lalu ubah direktori instalasi yang tercatat di dalamnya menjadi direktori instalasi baru. - 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 | |
- Gunakan perintah
docker stack deploy dataflux-func -c {direktori instalasi}/docker-stack.yaml --resolve-image neveruntuk 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