Kubernetes MySQL Operatör Kümeleri Nasıl Yedeklenir?

 

Oracle'ın Kubernetes için MySQL Operatörü , kümeniz içinde MySQL veritabanı sağlamayı otomatikleştirmenin uygun bir yoludur. Operatörün ana özelliklerinden biri, esnekliğinizi artıran entegre uygulamalı yedekleme desteğidir. Yedeklemeler, veritabanınızı yinelenen bir zamanlamaya göre harici depolamaya kopyalar.


Kubernetes MySQL Operatör Kümeleri Nasıl Yedeklenir?



Bu makale, Amazon S3 uyumlu bir nesne depolama hizmetine yedekleme ayarlama konusunda size yol gösterecektir. Ayrıca, kümenizdeki Oracle Bulut Altyapısı (OCI) depolamasında veya yerel kalıcı birimlerde yedeklemelerin nasıl depolanacağını da göreceksiniz.


Veritabanı Kümesi Hazırlama


MySQL operatörünü Kubernetes kümenize kurun ve test amacıyla basit bir veritabanı örneği oluşturun. Aşağıdaki YAML'yi kopyalayın ve şuraya kaydedin mysql.yaml:


apiVersion : v1 

tür : Gizli 

meta veri : 

  isim : mysql-root-user 

stringData : 

  rootHost : "%" 

  rootUser : "root" 

  rootPassword : "[email protected]$$w0rd"

 

--- 


apiVersion : mysql.oracle.com/v2 

tür : InnoDBCluster 

meta verisi : 

  ad : mysql-küme 

  özelliği : 

secretName : mysql-root-user 

  örnekleri : 3 

  tlsUseSelfSigned : true 

  yönlendirici : 

    örnekler : 1

Bildirimi uygulamak için Kubectl'i kullanın:


$ kubectl -f mysql.yaml uygula

MySQL operatörü Pod'larınızı hazırlarken birkaç dakika bekleyin. get podsİlerlemeyi kontrol etmek için Kubectl'in komutunu kullanın . Çalışan dört Pod görmelisiniz: bir MySQL yönlendirici örneği ve üç MySQL sunucu kopyası.


$ kubectl bakla olsun

İSİM HAZIR DURUM YENİDEN BAŞLAR YAŞ

mysql-cluster-0 2/2 Koşu 0 2m

mysql-cluster-1 2/2 Koşu 0 2m

mysql-cluster-2 2/2 Koşu 0 2m

mysql-cluster-router-6b68f9b5cb-wbqm5 1/1 Koşu 0 2m

Yedekleme Takvimi Tanımlama

MySQL operatörü, başarılı bir şekilde yedek oluşturmak için iki bileşen gerektirir:


Yedeklemenin ne zaman çalışacağını tanımlayan bir yedekleme programı .

Depolama konumunu ve MySQL dışa aktarma seçeneklerini yapılandıran bir yedekleme profili .

Programlar ve profiller birbirinden bağımsız olarak oluşturulur . Bu, aynı profili kullanarak farklı zamanlamalarda birden fazla yedekleme çalıştırmanıza olanak tanır.


Her zamanlama ve profil, belirli bir veritabanı kümesiyle ilişkilendirilir. InnoDBClusterNesneleriniz içinde iç içe kaynaklar olarak oluşturulurlar . MySQL operatörü ile oluşturduğunuz her veritabanının kendi yedekleme yapılandırmasına ihtiyacı vardır.


spec.backupSchedulesYedekleme programları, veritabanınızın alanı tarafından tanımlanır . Her öğe, schedulebir cron ifadesi kullanarak yedeklemenin ne zaman çalıştırılacağını belirten bir alan gerektirir. İşte her saat başı bir yedekleme başlatan bir örnek:


apiVersion : mysql.oracle.com/v2 

tür : InnoDBCluster 

meta verileri : 

  ad : mysql-küme 

  özelliği : 

secretName : mysql-root-user 

  örnekleri : 3 

  tlsUseSelfSigned : true 

  yönlendirici : 

    örnekler : 1 

   backupSchedules : - 

    name : saatlik 

      etkin : gerçek 

      zamanlama "0 * * * *" 

      backupProfileName : saatlik yedekleme

Alan backupProfileName, kullanılacak yedekleme profiline başvurur. Bunu bir sonraki adımda oluşturacaksınız.


Yedekleme Profilleri Oluşturma


Profiller spec.backupProfilesalanda tanımlanır. Her profil , yedekleme işlemini yapılandıran bir nameve özelliğine sahip olmalıdır.dumpInstance


apiVersion : mysql.oracle.com/v2 

tür : InnoDBCluster 

meta verileri : 

  ad : mysql-küme 

  özelliği : 

secretName : mysql-root-user 

  örnekleri : 3 

  tlsUseSelfSigned : true 

  yönlendirici : 

    örnekler : 1 

  backupSchedules : - 

    name : saatlik 

      etkin : gerçek 

      zamanlama "0 * * * *" 

      backupProfileName : saatlik yedekleme

  backupProfiles : 

    - isim : saatlik yedekleme 

      dumpInstance : 

        depolama :

           # ...

dumpInstance.storageYedek depolama, sahada profil bazında yapılandırılır . Sağlamanız gereken özellikler, kullandığınız depolama türüne bağlıdır.


S3 Depolama

MySQL operatörü, yedeklerinizi doğrudan S3 uyumlu nesne depolama sağlayıcılarına yükleyebilir. Bu yöntemi kullanmak awsiçin kimlik bilgilerinizle birlikte bir CLI yapılandırma dosyası içeren bir Kubernetes sırrı oluşturmanız gerekir.


Aşağıdaki içeriği şuraya ekleyin s3-secret.yaml:


apiVersion : v1 

tür : Gizli 

meta veriler : 

  ad : s3-secret 

stringData : 

  kimlik bilgileri : |

    [varsayılan]

    aws_access_key_id = YOUR_S3_ACCESS_KEY

    aws_secret_access_key = YOUR_S3_SECRET_KEY

Kendi S3 erişim ve gizli anahtarlarınızı değiştirin, ardından sırrı oluşturmak için Kubectl'i kullanın:


$ kubectl -f s3-secret.yaml uygula

secret/s3-secret oluşturuldu

storage.s3Ardından, yedekleme profilinizin bölümüne aşağıdaki alanları ekleyin :


bucketName– Yedeklerinizi yüklemek için S3 paketinin adı.

prefix– Yüklediğiniz dosyalara bir önek uygulamak için bunu ayarlayın, örneğin /my-app/mysql. Ön ek, kovanız içinde klasör ağaçları oluşturmanıza olanak tanır.

endpoint– Üçüncü taraf S3 uyumlu depolamayı kullanırken bunu servis sağlayıcınızın URL'sine ayarlayın. Amazon S3 kullanıyorsanız bu alanı atlayabilirsiniz.

config– Kimlik bilgilerinizi içeren sırrın adı.

profile– Kimlik bilgileri dosyasında kullanılacak yapılandırma profilinin adı. defaultBu, yukarıdaki örnekte ayarlanmıştır .

İşte tam bir örnek:


apiVersion : mysql.oracle.com/v2 

tür : InnoDBCluster 

meta verileri : 

  ad : mysql-küme 

  özelliği : 

secretName : mysql-root-user 

  örnekleri : 3 

  tlsUseSelfSigned : true 

  yönlendirici : 

    örnekler : 1 

  backupSchedules : - 

    name : saatlik 

      etkin : gerçek 

      zamanlama "0 * * * *" 

      backupProfileName : saatlik yedekleme

  backupProfiles : 

    - ad : saatlik yedekleme 

      dumpInstance : 

        depolama : 

          s3 : 

            kovaAdı : yedekleme 

            öneki : /mysql 

            yapılandırma : s3-gizli 

            profil : varsayılan

Bu bildirimi uygulamak, S3 hesabınıza saatlik veritabanı yedeklemelerini etkinleştirir.


OCI Depolama


Operatör, S3'e alternatif olarak Oracle Bulut Altyapısı (OCI) nesne depolamasını destekler. Benzer şekilde yapılandırılmıştır. Önce OCI kimlik bilgileriniz için bir sır oluşturun:


apiVersion : v1 

tür : Gizli 

meta veri : 

  isim : oci -secret 

stringData : 

  parmak izi : YOUR_OCI_FINGERPRINT 

  parola : YOUR_OCI_PASSPHRASE 

  privatekey : YOUR_OCI_RSA_PRIVATE_KEY 

  bölge : us- ashburn -1 

  kiracılık : YOUR_OCIUS_TENANCY 

  kullanıcı

Ardından yedekleme profilini bir storage.ociObjectStoragedörtlükle yapılandırın:


apiVersion : mysql.oracle.com/v2 

tür : InnoDBCluster 

meta verileri : 

  ad : mysql-küme 

  özelliği : 

secretName : mysql-root-user 

  örnekleri : 3 

  tlsUseSelfSigned : true 

  yönlendirici : 

    örnekler : 1 

  backupSchedules : - 

    name : saatlik 

      etkin : gerçek 

      zamanlama "0 * * * *" 

      backupProfileName : saatlik yedekleme

  backupProfiles : 

    - ad : saatlik yedekleme 

      dumpInstance : 

        depolama : 

          ociObjectStorage : 

            kovaAdı : yedekleme 

            öneki : /mysql 

            kimlik bilgileri : oci-secret

OCI hesabınızda yükleme konumunu ayarlamak için bucketNameve alanlarını değiştirin . prefixAlan credentials, OCI kimlik bilgilerinizi içeren gizli anahtara başvurmalıdır.


Kubernetes Birim Depolama


Yerel kalıcı birimler üçüncü bir depolama seçeneğidir. Yedekleme verileriniz Kubernetes kümenizin içinde kalmaya devam edeceğinden bu daha az sağlamdır. Ancak tek seferlik yedeklemeler ve test amaçları için faydalı olabilir.


Önce kalıcı bir birim ve beraberindeki hak talebi oluşturun:


apiVersion : v1 

türü : PersistentVolume 

meta verisi : 

  ad : backup-pv özelliği : 

storageClassName : standart 

  kapasite : 

    depolama : 

  10Gi 

  erişimModları :

     - ReadWriteOnce 

  hostPath : 

    yol : /tmp

 

--- 


apiVersion : v1 

türü : PersistentVolumeClaim 

meta verileri : 

  ad : yedekleme-pvc 

  özelliği : 

  depolamaSınıfAdı : standart 

erişimModları :

     - ReadWriteOnce 

  kaynakları : 

    istekler : 

      depolama : 10Gi

Bu örnek bildirim, üretim kullanımı için uygun değildir. Kubernetes dağıtımınız için uygun bir depolama sınıfı ve birim montaj modu seçmelisiniz.


storage.persistentVolumeClaimArdından, bir alan ekleyerek kalıcı biriminizi kullanmak için yedekleme profilinizi yapılandırın :


apiVersion : mysql.oracle.com/v2 

tür : InnoDBCluster 

meta verileri : 

  ad : mysql-küme 

  özelliği : 

secretName : mysql-root-user 

  örnekleri : 3 

  tlsUseSelfSigned : true 

  yönlendirici : 

    örnekler : 1 

  backupSchedules : - 

    name : saatlik 

      etkin : gerçek 

      zamanlama "0 * * * *" 

      backupProfileName : saatlik yedekleme

  backupProfiles : 

    - ad : saatlik yedekleme 

      dumpInstance : 

        depolama : 

          persistVolumeClaim : 

            talepAdı : backup-pvc

Daha önce oluşturulan kalıcı birim talebine alan tarafından başvurulur claimName. MySQL operatörü şimdi yedek verileri birime depolayacaktır.


Yedekleme Seçeneklerini Ayarlama


Yedeklemeler, MySQL Shell'in dumpInstanceyardımcı programı kullanılarak oluşturulur . Bu, varsayılan olarak sunucunuzun tam bir dökümünü dışa aktarmak içindir. Biçim, her tablo için yapı ve yığınlanmış veri dosyaları yazar. Çıktı zstd ile sıkıştırılır.


Seçenekleri bir MySQL operatörü yedekleme profilindeki alan dumpInstancearacılığıyla iletebilirsiniz :dumpOptions


apiVersion : mysql.oracle.com/v2 

tür : InnoDBCluster 

meta verileri : 

  ad : mysql-kümesi 

belirtimi :

   # ... 

  backupProfiles : 

    - ad : saatlik yedekleme 

      dumpInstance : 

        dumpOptions : 

          parçalama : yanlış 

          sıkıştırma : gzip 

        depolama :

           # ...

Bu örnek, kümelenmiş çıktıyı devre dışı bırakır, tablo başına bir veri dosyası oluşturur ve zstd yerine gzip sıkıştırmasına geçer. Kullanılabilir seçenekler için eksiksiz bir referansı MySQL belgelerinde bulabilirsiniz .


Yedeklemeyi Geri Yükleme


MySQL operatörü, önceden oluşturulmuş dosyaları kullanarak yeni veritabanı kümelerini başlatabilir dumpInstance. Bu, yedeklerinizi doğrudan Kubernetes kümenize geri yüklemenize olanak tanır. Kurtarma durumlarında veya mevcut bir veritabanını Kubernetes'e taşırken kullanışlıdır.


Veritabanı başlatma, nesnelerinizdeki spec.initDBalan tarafından kontrol edilir . InnoDBClusterBu stanza içinde, dump.storagedaha önce kullandığınız yedekleme konumuna başvurmak için nesneyi kullanın. Biçim dumpInstance.storage, yedek profil nesnelerindeki eşdeğer alanla eşleşir.


apiVersion : v1 

tür : Gizli 

meta veriler : 

  ad : s3-secret 

stringData : 

  kimlik bilgileri : |

    [varsayılan]

    aws_access_key_id = YOUR_S3_ACCESS_KEY

    aws_secret_access_key = YOUR_S3_SECRET_KEY


--- 


apiVersion : mysql.oracle.com/v2 

tür : InnoDBCluster 

meta verileri : 

  ad : mysql-cluster-kurtarılan 

  özellik : 

secretName : mysql-root-user 

  örnekleri : 3 

  tlsUseSelfSigned : true 

  yönlendirici : 

    örnekler : 1 

  initDB : 

    dökümü : 

      depolama : 

        s3 : 

          kovaAdı : yedekler 

          öneki :/mysql/mysql20221031220000 

          yapılandırma : s3-gizli 

          profil : varsayılan

dumpInstanceBu YAML dosyasının uygulanması , belirtilen S3 kovasındaki çıktıyla başlatılan yeni bir veritabanı kümesi oluşturacaktır . Alan prefix, paket içindeki döküm dosyalarının tam yolunu içermelidir. Operatör tarafından oluşturulan yedeklemeler otomatik olarak zaman damgalı klasörlerde depolanacaktır; öneki ayarlayarak hangisinin kurtarılacağını belirtmeniz gerekir. Kalıcı bir birimden geri yükleme yapıyorsanız, pathyerine alanı kullanın prefix.


Özet


Oracle'ın MySQL operatörü, Kubernetes kümeleri içinde MySQL veritabanı yönetimini otomatikleştirir. Bu makalede, tam veritabanı dökümlerini kalıcı bir birim veya nesne depolama kovasında depolamak için operatörün yedekleme sistemini nasıl yapılandıracağınızı öğrendiniz.


MySQL'i yatay olarak ölçeklendirmek için Kubernetes kullanmak esneklik sağlar, ancak kümenizin güvenliğinin ihlal edilmesi veya verilerin yanlışlıkla silinmesi durumunda harici yedeklemeler hala hayati önem taşır. MySQL operatörü , ihtiyaç duyarsanız, yedeklemenizden yeni bir veritabanı örneğini geri yükleyebilir , bu da olağanüstü durum sonrası kurtarma prosedürünü basitleştirir.


Yorum Gönder

Daha yeni Daha eski