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 : “P@$$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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir