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.
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.