Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Arc veri hizmetlerini dağıttığınızda Azure Arc Veri Denetleyicisi dağıtılan en kritik bileşenlerden biridir. Veri denetleyicisinin işlevleri şunlardır:
- Kaynakları sağlama, kaldırma ve güncelleştirme
- Azure Arc tarafından etkinleştirilen SQL Yönetilen Örnek için yükseltmeler, ölçeği genişletme gibi etkinliklerin çoğunu koordine etme.
- Arc SQL yönetilen örneklerinin faturalama ve kullanım bilgilerini yakalayın.
Yukarıdaki işlevleri gerçekleştirmek için Veri denetleyicisinin tüm geçerli Arc SQL yönetilen örneklerinin, faturalamanın, kullanımın ve tüm bu SQL yönetilen örneklerinin geçerli durumunun bir envanterini depolaması gerekir. Tüm bu veriler, controldb-0 pod'una dağıtılan SQL Server örneğindeki controller adlı bir veritabanında depolanır.
Bu makalede denetleyici veritabanını yedekleme açıklanmaktadır.
Veri denetleyicisi veritabanını yedekleme
Yerleşik özelliklerin bir parçası olarak, yedeklemeler etkinleştirildikten sonra Veri denetleyicisi veritabanı controller her 5 dakikada bir otomatik olarak yedeklenir. Yedeklemeleri etkinleştirmek için:
-
backups-controldbPersistentVolumeClaimoluşturun,ReadWriteManyerişimini destekleyen bir depolama sınıfıyla:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: backups-controldb
namespace: <namespace>
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 15Gi
storageClassName: <storage-class>
- Özel kaynak belirtimini
DataControllerbackupsbir depolama tanımını içerecek şekilde düzenleyin.
storage:
backups:
accessMode: ReadWriteMany
className: <storage-class>
size: 15Gi
data:
accessMode: ReadWriteOnce
className: managed-premium
size: 15Gi
logs:
accessMode: ReadWriteOnce
className: managed-premium
size: 10Gi
controller veritabanı için .bak dosyalar, /var/opt/backups/mssql'deki controldb podunun backups biriminde depolanır.
Denetleyici veritabanını kurtarma
İki tür kurtarma mümkündür:
-
controllerbozuk ve yalnızca veritabanını geri yüklemeniz gerekiyor - veri ve günlük dosyalarını içeren
controllertüm depolama alanı bozuk/yok ve kurtarmanız gerekiyor
Bozuk denetleyici veritabanı senaryosu
Bu senaryoda tüm podlar çalışır durumdadır, SQL Server'a controldb bağlanabilirsiniz ve veritabanında bir bozulma controller olabilir. Veritabanını yedekten geri yüklemeniz yeterlidir.
SQL Server pod üzerinde controldb çalışmaya devam ediyorsa ve buna bağlanabiliyorsanız denetleyici veritabanını yedekten geri yüklemek için şu adımları izleyin:
Veritabanını barındıran SQL Server podunun
controllerbağlantısını doğrulayın.İlk olarak, gizli anahtar için kimlik bilgilerini alın.
controller-system-secret, SQL örneğine bağlanmak içinsystemkullanılabilecek kullanıcı hesabının kimlik bilgilerini tutan gizli dizidir. Gizli içeriği elde etmek için aşağıdaki komutu çalıştırın:kubectl get secret controller-system-secret --namespace [namespace] -o yamlÖrneğin:
kubectl get secret controller-system-secret --namespace arcdataservices -o yamlbase64 kodlanmış kimlik bilgilerinin kodunu çözme. Gizli
controller-system-secretöğesinin yaml dosyasının içeriği birpasswordveusernameiçerir. içeriğinin kodunupasswordçözmek için herhangi bir base64 kod çözücü aracını kullanabilirsiniz.Bağlantıyı doğrulama: Kodu çözülen kimlik bilgileriyle, SQL Server bağlantısını doğrulamak için gibi
SELECT @@SERVERNAMEbir komut çalıştırın.kubectl exec controldb-0 -n <namespace> -c mssql-server -- /opt/mssql-tools/bin/sqlcmd -S localhost -U system -P "<password>" -Q "SELECT @@SERVERNAME"kubectl exec controldb-0 -n contosons -c mssql-server -- /opt/mssql-tools/bin/sqlcmd -S localhost -U system -P "<password>" -Q "SELECT @@SERVERNAME"
ReplicaSet denetleyicisini aşağıdaki gibi 0 çoğaltmaya ölçeklendirin:
kubectl scale --replicas=0 rs/control -n <namespace>`Örneğin:
kubectl scale --replicas=0 rs/control -n arcdataservices1. adımda açıklandığı gibi
controldbSQL Server'asystembağlanın.Bozuk denetleyici veritabanını T-SQL kullanarak silin:
DROP DATABASE controllerVeritabanını yedekten geri yükleyin, bozuk
controllerdbbırakıldıktan sonra. Örneğin:RESTORE DATABASE test FROM DISK = '/var/opt/backups/mssql/<controller backup file>.bak' WITH MOVE 'controller' to '/var/opt/mssql/data/controller.mdf ,MOVE 'controller' to '/var/opt/mssql/data/controller_log.ldf' ,RECOVERY; GOReplicaSet denetleyicisini 1 kopyaya geri ölçeklendirin.
kubectl scale --replicas=1 rs/control -n <namespace>Örneğin:
kubectl scale --replicas=1 rs/control -n arcdataservices
Bozuk depolama senaryosu
Bu senaryoda, Veri denetleyicisi verilerini ve günlük dosyalarını barındıran depolamada bozulma var ve yeni bir depolama alanı sağlandı ve denetleyici veritabanını geri yüklemeniz gerekiyor.
StatefulSet için yeni depolama alanıyla denetleyici veritabanını yedekten geri yüklemek için controldb şu adımları izleyin:
Veritabanının bilinen son iyi durumunun yedeğine sahip olduğunuzdan
controlleremin olunReplicaSet Denetleyici’yi 0 özdeş kopyaya ölçeklendirin:
kubectl scale --replicas=0 rs/control -n <namespace>Örneğin:
kubectl scale --replicas=0 rs/control -n arcdataservicesStatefulSet'i
controldb0 kopyaya aşağıdaki gibi ölçeklendirin.kubectl scale --replicas=0 sts/controldb -n <namespace>Örneğin:
kubectl scale --replicas=0 sts/controldb -n arcdataservices`controller-sa-secretadında bir kubernetes gizli nesnesi oluşturmak için aşağıdaki YAML'ı kullanın:apiVersion: v1 kind: Secret metadata: name: controller-sa-secret namespace: <namespace> type: Opaque data: password: <base64 encoded password>StatefulSet'i
controldbdüzenleyin,kubectl edit sts controldb -n <namespace>komutunu kullanarakcontroller-sa-secretbiriminin ve karşılık gelen birim bağlamasının/var/run/secrets/mounts/credentials/mssql-sa-password,mssql-serverkapsayıcıda yer almasını sağlayın.Yeni veri (
data-controldb) ve günlükler (logs-controldb) kalıcı birim talepleri oluşturmak içincontroldbpod'u aşağıdaki gibi yapılandırın:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: data-controldb namespace: <namespace> spec: accessModes: - ReadWriteOnce resources: requests: storage: 15Gi storageClassName: <storage class> --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: logs-controldb namespace: <namespace> spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: <storage class>StatefulSet'i
controldbkullanarak yeniden 1 kopyaya geri ölçeklendirin.kubectl scale --replicas=1 sts/controldb -n <namespace>SQL sunucusuna
saşeklinde bağlanmak için daha önce oluşturulancontroller-sa-secretgizli bölümündeki parolayı kullanın.Kubernetes gizli anahtarındaki
controller-system-secretparolayı kullanaraksystemsysadmin rolüne sahip bir oturum oluşturun:CREATE LOGIN [system] WITH PASSWORD = '<password-from-secret>' ALTER SERVER ROLE sysadmin ADD MEMBER [system]Aşağıdaki komutu kullanarak yedeklemeyi
RESTOREgeri yükleyin:
RESTORE DATABASE [controller] FROM DISK = N'/var/opt/backups/mssql/<controller backup file>.bak' WITH FILE = 1
controldb-rw-userGizlicontroller-db-rw-secretdizideki parolayı kullanarak bir oturum açma bilgisi oluşturun ve bunu denetleyici DBcontroldb-rw-user'deki mevcut kullanıcıyla ilişkilendirinALTER USER [controldb-rw-user] WITH LOGIN = [controldb-rw-user].saTSQL kullanarak oturum açmayı devre dışı bırakın -ALTER LOGIN [sa] DISABLE.StatefulSet'i
controldbdüzenleyerekcontroller-sa-secrethacmi ve ilgili hacim bağlamasını kaldırın.Gizli anahtarı
controller-sa-secretsilin.kubectl scalekomutunu kullanarak ReplicaSet denetleyicisini tekrar 1 çoğaltmaya ölçeklendirin.