ไม่ได้รับการบำรุงรักษา โปรดใช้ https://github.com/utilitywarehouse/streaming-mongo-burs/ แทน
เครื่องมือนี้สามารถสำรองหรือกู้คืนคอลเลกชัน MongoDB ในขณะที่ DB ทำงานไปยัง/จาก AWS S3
go get -u github.com/utilitywarehouse/mongolizer
mongolizer --help
คุณสามารถปรับใช้คอนเทนเนอร์นักเทียบท่าที่จะเรียกใช้การสำรองข้อมูลตามกำหนดเวลา (ค่าเริ่มต้นเวลา 10.30 น. ทุกวัน)
สถานะของการสำรองข้อมูลจะถูกเก็บไว้ในไฟล์ boltdb ที่ /var/data/mongolizer/state.db
จุดสิ้นสุดด้านสุขภาพพร้อมใช้งานที่ 0.0.0.0:8080/__/health
และจะรายงานผลด้านสุขภาพหากมีการสำรองข้อมูลสำเร็จในช่วง 13 ชั่วโมงที่ผ่านมา
Instrumentation endpoint พร้อมใช้งานที่ 0.0.0.0:8080/__/metrics
Prom gauge จะถูกเปิดเผยโดยที่ค่าของ mongolizer_status
gauge เป็น 1 หรือ 0 ขึ้นอยู่กับผลลัพธ์ของการสำรองข้อมูลครั้งก่อน เกจมีป้ายกำกับ database
และ labels
คอลเลกชัน
การสำรองข้อมูลครั้งแรกจะดำเนินการหากไม่พบข้อมูลสำรองในช่วง 13 ชั่วโมงที่ผ่านมา
# docker run --rm mongolizer /mongolizer scheduled-backup --help
Usage: mongolizer scheduled-backup [OPTIONS] COLLECTIONS
backup a set of mongodb collections
Arguments:
COLLECTIONS="foo/content,foo/bar" Collections to process (comma separated /) ($MONGODB_COLLECTIONS)
Options:
--cron="30 10 * * *" Cron expression for when to run ($CRON)
--dbPath="/var/data/mongolizer/state.db" Path to store boltdb file ($DBPATH)
--run=true Run backups on startup? ($RUN)
ตัวอย่างแบบเต็มของการกลิ้ง mongo พร้อมวอลุ่มถาวร + mongolizer พร้อมการขูดเมตริก
# A headless service to create DNS records
apiVersion: v1
kind: Service
metadata:
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
prometheus.io/scrape: 'true'
prometheus.io/path: /__/metrics
prometheus.io/port: '8080'
name: mongo
labels:
app: mongo
spec:
ports:
- port: 8080
targetPort: 8080
name: mongolizer
- port: 27017
targetPort: 27017
name: client
clusterIP: None
selector:
app: mongo
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mongo
spec:
replicas: 1
template:
metadata:
name: mongo
labels:
app: mongo
spec:
imagePullSecrets:
- name: dockerhub-key
containers:
- name: mongolizer
image: registry.uw.systems/system/mongolizer:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- name: data
mountPath: "/var/data/mongolizer/"
subPath: "mongolizer"
env:
- name: MONGODB_COLLECTIONS
value: "db/collection,db/collection2"
- name: MONGODB
value: "mongo:27017"
- name: AWS_ACCESS_KEY_ID
value: ""
- name: AWS_SECRET_ACCESS_KEY
value: ""
- name: S3_BUCKET
value: "backup-bucket"
- name: S3_DIR
value: "/"
- name: mongo
image: mongo
ports:
- containerPort: 27017
volumeMounts:
- name: data
mountPath: /data/db
subPath: "mongodb"
volumes:
- name: data
persistentVolumeClaim:
claimName: mongo-ebs-pvc
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mongo-ebs-pvc
annotations:
volume.beta.kubernetes.io/storage-class: ebs-gp2
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
# docker run --rm mongolizer /mongolizer restore --help
Usage: mongolizer restore [OPTIONS]
restore a set of mongodb collections
Options:
--collections="foo/content,foo/bar" Collections to process (comma separated /) ($MONGODB_COLLECTIONS)
--date="2006-01-02T15-04-05" Date to restore backup from
หากต้องการรับเมตริก คุณสามารถใช้ข้อความค้นหาที่คล้ายกันได้
1 - avg(mongolizer_status{kubernetes_namespace="default"}) by (app, database, collection) < bool 1
ตัวอย่างการแจ้งเตือน