Kubernetes Nedir ve Neden Veritabanı Yönetimi İçin Kullanılır?
MariaDB'yi Kubernetes Ortamına Nasıl Taşırız?
# MariaDB için Docker Container Oluşturma
FROM mariadb:latest
ENV MYSQL_ROOT_PASSWORD=root_password
ENV MYSQL_DATABASE=my_database
EXPOSE 3306Yukarıdaki Dockerfile, MariaDB'yi en son sürümüyle çalıştırmak için gerekli temel ayarları yapacaktır. Bu container, daha sonra Kubernetes pod’larında çalıştırılabilir.
Kubernetes ile MariaDB Yüksek Erişilebilirlik
StatefulSet, her pod’a bir benzersiz kimlik (ID) verir, bu da veritabanı bağlantılarının sürekli ve tutarlı olmasını sağlar. Bu özellik, veritabanının her zaman çalışır durumda olmasını ve herhangi bir hata durumunda hızlı bir şekilde toparlanmasını sağlar.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mariadb
spec:
serviceName: "mariadb"
replicas: 3
selector:
matchLabels:
app: mariadb
template:
metadata:
labels:
app: mariadb
spec:
containers:
- name: mariadb
image: mariadb:latest
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mariadb-secret
key: passwordBu StatefulSet, MariaDB’yi üç farklı pod üzerinde çalıştıracak ve her pod'a benzersiz bir kimlik verecek şekilde yapılandırılmıştır. Bu sayede, veritabanınız kesintisiz bir şekilde çalışmaya devam eder.
Otomatik Ölçeklenebilirlik ile MariaDB Performansını Arttırın
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: mariadb-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: StatefulSet
name: mariadb
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80Bu yapılandırma, CPU kullanımını %80 hedeflemesiyle veritabanı pod’larını otomatik olarak ölçeklendirecek ve veritabanınızın yüksek performansla çalışmasını sağlayacaktır.
MariaDB Veritabanı Yedekleme ve Kurtarma Stratejileri
Veritabanı yedekleme işlemini Kubernetes CronJobs ile otomatikleştirebilirsiniz. Aşağıdaki örnek, MariaDB için günlük yedeklemeler alacak bir CronJob yapılandırmasıdır:
apiVersion: batch/v1
kind: CronJob
metadata:
name: mariadb-backup
spec:
schedule: "0 3 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: mariadb-backup
image: mariadb:latest
command: ["mysqldump", "-u", "root", "-p$MYSQL_ROOT_PASSWORD", "--all-databases", ">", "/backup/db_backup.sql"]
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mariadb-secret
key: passwordBu CronJob, her gün saat 03:00'te MariaDB veritabanını yedekleyecek ve yedekleme dosyasını belirtilen dizine kaydedecektir.