Ketika meminta dukungan Gitlab tentang cara melakukan pencadangan 3TB pada Gitlab lokal, mereka membalas menggunakan alat kami yang menghasilkan tarball.
Ini hanya keliru bagi saya di semua tingkatan. Tarbal ini berisi dump postgres, gambar buruh pelabuhan, data repo, GIT LFS, dll konfigurasi dan sebagainya. Mencadangkan TB data statis bersama-sama dengan KB data yang sangat dinamis tidak benar. Dan kemudian muncul masalah, kami ingin melakukan backup setiap jam.
Pertanyaan
Saya benar-benar ingin tahu dari orang lain bagaimana mereka melakukannya, untuk mendapatkan cadangan yang konsisten.
ZFS di Linux akan baik-baik saja dengan saya, jika itu adalah bagian dari solusi.
If your GitLab server contains a lot of Git repository data you may find the GitLab backup script to be too slow. In this case you can consider using filesystem snapshots as part of your backup strategy.
saya tidak bisa berbicara dari pengalaman. Tapi saya mungkin harus memasukkan sesuatu seperti ini segera ...Jawaban:
Untuk waktu yang singkat antara cadangan (1 jam), taruhan terbaik Anda adalah mengandalkan snapshot dan
send/recv
dukungan tingkat sistem file .Jika menggunakan Zool tidak menjadi masalah di lingkungan Anda, saya akan sangat menyarankan untuk menggunakannya. ZFS adalah sistem file yang sangat kuat dan Anda akan sangat menyukai semua ekstra (mis: kompresi) yang ditawarkannya. Ketika digabungkan dengan
sanoid/syncoid
, itu dapat memberikan strategi cadangan yang sangat kuat. Kerugian utama adalah tidak dimasukkan ke dalam kernel mainline, jadi Anda perlu menginstal / memperbaruinya secara terpisah.Atau, jika Anda benar-benar perlu membatasi diri pada hal-hal yang termasuk dalam arus utama, Anda dapat menggunakan BTRFS. Tapi pastikan untuk memahami kelemahan dan pita (banyak) .
Akhirnya, solusi alternatif adalah dengan menggunakan
lvmthin
untuk mengambil backup secara teratur (misalnya: dengansnapper
), mengandalkan alat pihak ketiga (misalnya:bdsync
,blocksync
, dll) untuk menyalin / delta kapal saja.Pendekatan yang berbeda adalah dengan memiliki dua mesin yang direplikasi (via
DRBD
) di mana Anda mengambil snapshot indipenden melaluilvmthin
.sumber
Saya akan meninjau apa yang Anda cadangkan dan mungkin menggunakan pendekatan "multi-path". Misalnya, Anda dapat membuat cadangan repositori Git dengan terus-menerus menjalankan tarikan Git pada server cadangan. Itu hanya akan menyalin perbedaan dan meninggalkan Anda dengan salinan kedua dari semua repositori Git. Agaknya Anda bisa mendeteksi repo baru dengan API.
Dan gunakan prosedur pencadangan "bawaan" untuk mencadangkan masalah, dll. Saya ragu bahwa 3TB berasal dari bagian ini sehingga Anda dapat melakukan pencadangan sangat sering dengan biaya yang sangat sedikit. Anda juga bisa mengatur database PostgreSQL dengan siaga hangat dengan replikasi.
Kemungkinan 3TB Anda berasal dari gambar kontainer di registri Docker. Apakah Anda perlu mendukungnya? Jika demikian, maka mungkin ada pendekatan yang lebih baik hanya untuk itu.
Pada dasarnya, saya akan merekomendasikan benar-benar melihat apa yang membuat cadangan Anda dan membuat cadangan data di berbagai bagian.
Bahkan alat cadangan dari GitLab memiliki opsi untuk memasukkan / mengecualikan bagian-bagian tertentu dari sistem seperti Docker Registry.
sumber
git push --force
akan memecah cadangan atau menghapus riwayat dari mereka, tergantung pada bagaimana itu diterapkan.