Managed PostgreSQL στο Dockup: Πλήρης οδηγός
Managed PostgreSQL στο Dockup: δημιουργία βάσης δεδομένων, ασφαλής σύνδεση υπηρεσίας, έλεγχος μεγέθους και logs, δημιουργία αντιγράφων ασφαλείας, ασφαλής επαναφορά και προσθήκη χρηστών μόνο για ανάγνωση.
Το Managed PostgreSQL παρέχει σε μια εφαρμογή μια provisioned βάση δεδομένων, με λειτουργίες lifecycle ανεξάρτητες από το service container. Το Dockup υποστηρίζει δημιουργία, εκκίνηση και διακοπή, logs, έλεγχο μεγέθους, backups, restore μέσω της πλατφόρμας, χρήστες μόνο για ανάγνωση, μεταφορά node και private networking.
Η βασική αρχή λειτουργίας είναι ο διαχωρισμός: το application image είναι αναλώσιμο, τα δεδομένα PostgreSQL είναι ανθεκτικά, τα credentials είναι secrets και η ανάκτηση της βάσης δεδομένων πρέπει να δοκιμάζεται ανεξάρτητα από το application rollback.
Πώς δημιουργείτε μια managed PostgreSQL βάση δεδομένων;
Επιλέξτε το workspace που θέλετε και, στη συνέχεια, δημιουργήστε τη βάση δεδομένων:
dockup db create \
--name main-db \
--type postgresql \
--json
Εμφανίστε τη λίστα των βάσεων δεδομένων για να επιβεβαιώσετε το ακριβές slug και το status:
dockup db list --json
Οι λειτουργίες βάσεων δεδομένων χρησιμοποιούν targets της μορφής project/db:
dockup db size production/main-db --json
Περιμένετε να ολοκληρωθεί το provisioning πριν συνδέσετε μια εφαρμογή. Μην προσπαθείτε να μαντέψετε το hostname, τη θύρα, το username ή το password από το όνομα της βάσης δεδομένων.
Το Free plan επιτρέπει τρεις βάσεις δεδομένων σε ένα workspace και περιλαμβάνει αρχικό credit $10. Τα επί πληρωμή plans—Hobby στα $5, Pro στα $20 τον μήνα—επιτρέπουν απεριόριστες βάσεις δεδομένων, workspaces και deployments. Η κατανάλωση CPU, RAM και disk υπολογίζεται ανά λεπτό και αφαιρείται από το διαθέσιμο υπόλοιπο χρήσης.
Πώς συνδέετε μια εφαρμογή με ασφάλεια;
Ανακτήστε τα στοιχεία σύνδεσης της βάσης δεδομένων από το database interface του Dockup και αντιμετωπίστε το connection string ως secret. Μην το επικολλάτε στο repository ή στο agent transcript.
Ορίστε το στην υπηρεσία:
dockup env set DATABASE_URL="$DATABASE_URL" \
--secret \
-s production/api \
--json
dockup deploy production/api --wait --json
Το redeploy είναι απαραίτητο, επειδή η running process έλαβε το environment της κατά την εκκίνηση. Η αποθηκευμένη τιμή εμφανίζεται masked κατά την ανάγνωση της διαμόρφωσης του environment.
Ρυθμίστε σκόπιμα το connection pooling της εφαρμογής. Πάρα πολλοί application workers με μεγάλα pools μπορούν να εξαντλήσουν τις database connections, ακόμη κι όταν η χρήση CPU και μνήμης φαίνεται φυσιολογική. Ορίστε το μέγεθος του pool με βάση το workload και τη χωρητικότητα της βάσης δεδομένων, όχι με βάση τον μέγιστο αριθμό που αποδέχεται ένα framework.
Ελέγξτε μια νέα σύνδεση μετά το deployment. Ένα health endpoint μπορεί να επιβεβαιώνει ότι η HTTP process είναι ενεργή, χωρίς να αποδεικνύει ότι μπορεί να δημιουργηθεί νέο database session.
Ο οδηγός environment variables και secrets καλύπτει το credential rotation και το masked output.
Πώς προστατεύει το private networking την κίνηση PostgreSQL;
Ενεργοποιήστε ένα project-private network:
dockup network enable production --json
Οι υπηρεσίες και οι managed databases του project λαμβάνουν stable hostnames της μορφής <slug>.internal. Κάντε redeploy την εφαρμογή για να λάβει τις injected internal connection variables.
Για να καταργήσετε τον public listener της βάσης δεδομένων και να την κάνετε διαθέσιμη μόνο ιδιωτικά:
dockup db private production/main-db --json
Επαναφέρετε την πρόσβαση μέσω public και private δικτύου όταν απαιτείται:
dockup db private production/main-db --off --json
Η μετατροπή της βάσης σε private-only δημιουργεί ξανά το container της, διατηρώντας όμως τα δεδομένα. Προγραμματίστε και επαληθεύστε την αλλαγή ως database operation και όχι ως μια harmless αλλαγή DNS.
Το private networking ελέγχει τη διαδρομή, ενώ τα PostgreSQL credentials ελέγχουν την ταυτότητα και την εξουσιοδότηση. Διατηρήστε και τα δύο. Διαφορετικά projects δεν μπορούν να επικοινωνήσουν μεταξύ τους, επειδή κάθε project έχει το δικό του network.
Το άρθρο private networking και internal domains παρουσιάζει ολόκληρη την τοπολογία.
Πώς λειτουργούν τα PostgreSQL backups και το restore;
Εμφανίστε τα υπάρχοντα backups:
dockup db backups production/main-db --json
Ξεκινήστε ένα server-side backup:
dockup db backup production/main-db --json
Η εντολή backup δημιουργεί ένα database-aware backup και όχι ένα hot αντίγραφο του raw volume. Καταγράψτε το backup ID, την ώρα δημιουργίας, την έκδοση της βάσης δεδομένων και την αιτία.
Το Dockup υποστηρίζει την επαναφορά managed database backups μέσω της πλατφόρμας. Η τρέχουσα CLI reference δεν τεκμηριώνει εντολή dockup db restore, επομένως ο οδηγός αυτός δεν επινοεί κάποια. Εκτελέστε το restore από το υποστηριζόμενο Dockup interface, επιλέξτε το ακριβές backup, λάβετε έγκριση για production και επαληθεύστε το αποτέλεσμα.
Ένα restore plan πρέπει να περιλαμβάνει:
- Recovery point και το αναμενόμενο χρονικό παράθυρο απώλειας εγγραφών.
- Πάγωμα των writes της εφαρμογής ή συμπεριφορά maintenance.
- Συμβατότητα βάσης δεδομένων και extensions.
- Νέο backup της τρέχουσας κατάστασης, όταν είναι χρήσιμο.
- Υπεύθυνο restore και έγκριση.
- Reconnection της εφαρμογής και smoke test.
- Audit και καταγραφή incident.
Τα backups δεν θεωρούνται αποδεδειγμένα μέχρι να ολοκληρωθεί επιτυχώς ένα restore drill. Χρησιμοποιήστε μια non-production βάση δεδομένων ή ένα εγκεκριμένο recovery environment για να δοκιμάσετε τη διαδικασία.
Διατηρείτε τα backups σύμφωνα με εγκεκριμένη πολιτική. Αφαιρείτε παρωχημένα recovery points μόνο μέσω του υποστηριζόμενου database interface, αφού επαληθεύσετε ότι καμία απαίτηση ανάκτησης ή συμμόρφωσης δεν εξαρτάται πλέον από αυτά.
Πώς λειτουργούν οι PostgreSQL users μόνο για ανάγνωση;
Οι πρόσθετοι χρήστες μόνο για ανάγνωση είναι χρήσιμοι για analytics, διερεύνηση από την υποστήριξη, preview deployments και εργαλεία που πρέπει να εκτελούν queries χωρίς writes.
Εμφανίστε τους χρήστες:
dockup db users production/main-db --json
Δημιουργήστε έναν με label:
dockup db user-add production/main-db \
--label analytics \
--json
Αποθηκεύστε με ασφάλεια το credential που δημιουργείται κατά τη διαδικασία και μην το αναπαράγετε σε agent response. Ανακαλέστε τον πρόσθετο χρήστη μέσω του υποστηριζόμενου database user-management interface όταν ολοκληρωθεί ο σκοπός του.
Η πρόσβαση μόνο για ανάγνωση στο επίπεδο permissions της βάσης δεδομένων είναι ισχυρότερη από το να πείτε σε ένα query tool «μην κάνεις writes». Ωστόσο, εξακολουθεί να επιτρέπει πρόσβαση σε readable production data, επομένως ισχύουν οι κανόνες privacy και least privilege.
Το Dockup δημιουργεί αυτόματα έναν read-only database user για ένα PR ή branch preview σε project με private networking. Το preview μπορεί να συνδεθεί στην ίδια production database μέσω του <slug>.internal και να διαβάσει δεδομένα χωρίς write permission.
Πώς παρακολουθείτε το μέγεθος, τα logs και το placement;
Ελέγξτε το μέγεθος στον δίσκο:
dockup db size production/main-db --json
Εξετάστε τα application runtime logs για αποτυχίες σύνδεσης, χωρίς να εκθέσετε passwords ή πλήρη connection strings:
dockup logs production/api --json
Το database maintenance μπορεί να καταστήσει μη διαθέσιμες τις εξαρτώμενες υπηρεσίες. Προγραμματίστε τις state-changing operations, απαιτήστε ρητή operational approval και ενημερώστε για τις επιπτώσεις πριν ενεργήσετε.
Μεταφέρετε μια βάση δεδομένων μεταξύ nodes, καθορίζοντας το ID του target node:
dockup db migrate production/main-db \
--node <nodeId> \
--json
Η migration είναι stateful operation. Επιβεβαιώστε την κατάσταση των backups, τις απαιτήσεις maintenance, τις private-network connections και τους ελέγχους της εφαρμογής μετά τη μεταφορά.
Production checklist για Managed PostgreSQL
Ένα πλήρες runbook καταγράφει:
| Περιοχή | Απαιτούμενα στοιχεία |
|---|---|
| Ταυτότητα | Ακριβές project/db target |
| Συνδεσιμότητα | Secret connection string και δοκιμασμένο νέο session |
| Network | Πολιτική public, private ή private-only |
| Πρόσβαση | Application role και labeled read-only users |
| Χωρητικότητα | Τρέχον μέγεθος και έλεγχος αύξησης |
| Backups | Πρόσφατα backup IDs και retention |
| Ανάκτηση | Επιτυχές restore drill |
| Operations | Έγκριση για start, stop, restart και migration |
| Audit | Database mutations που μπορούν να αποδοθούν σε actor |
Το application deployment rollback δεν επαναφέρει την PostgreSQL. Το database restore δεν κάνει αυτόματα rollback στον application code. Συντονίστε τα δύο μόνο όταν η συμβατότητα του schema το απαιτεί.
Για ευρύτερες αποφάσεις scaling, διαβάστε τις στρατηγικές scaling βάσεων δεδομένων. Για ακριβείς εντολές, χρησιμοποιήστε την Dockup CLI reference.
Σχεδιάστε τα schema migrations για deploy και rollback
Το application deployment και η αλλαγή του database schema πραγματοποιούνται σε διαφορετικά timelines. Ένα ασφαλές migration είναι συνήθως backward compatible για τουλάχιστον ένα release window: προσθέστε πρώτα μια nullable column, κάντε deploy κώδικα που μπορεί να χειριστεί και τα δύο schemas, εκτελέστε backfill με ελεγχόμενο τρόπο και αφαιρέστε την παλιά δομή αργότερα.
Μην κάνετε ένα health check να εκτελεί ένα long-running migration. Αν η εφαρμογή ξεκινά πολλά replicas, βεβαιωθείτε ότι μόνο ένας migration runner μπορεί να αναλάβει την αλλαγή. Η εντολή exec του PRO container μπορεί να εκτελέσει μια one-shot εντολή και να μεταφέρει το πραγματικό exit code:
dockup exec "npm run migrate" \
-s production/api \
--json
Χρησιμοποιήστε την μόνο όταν η migration command έχει ελεγχθεί και η υπηρεσία εκτελείται στον υποστηριζόμενο main server. Καταγράψτε stdout, stderr και exit code. Ένα επιτυχημένο application deploy δεν σημαίνει ότι μπορεί να αγνοηθεί ένα failed migration.
Κάντε rotation στα database credentials χωρίς outage
Δημιουργήστε το νέο credential ή read-only user, ενημερώστε το secret της υπηρεσίας που το χρησιμοποιεί, κάντε redeploy και επαληθεύστε μια νέα σύνδεση πριν ανακαλέσετε το παλιό credential. Τα υπάρχοντα connection pools μπορεί να αποκρύψουν έναν λανθασμένο νέο κωδικό μέχρι να γίνει reconnect.
Για το primary application credential, χρησιμοποιήστε το υποστηριζόμενο Dockup interface και την πολιτική της βάσης δεδομένων. Για έναν πρόσθετο analytical user, δημιουργήστε έναν labeled read-only account και διανείμετέ τον μόνο στον εγκεκριμένο consumer.
Η καταγραφή του rotation πρέπει να περιλαμβάνει το user label, τις consuming services, τα deployment IDs, το verification query, την ώρα ανάκλησης και το audit event—ποτέ το password.
Παρακολουθήστε την αύξηση πριν κάνετε scaling
Το μέγεθος της βάσης δεδομένων είναι ένα από τα signals:
dockup db size production/main-db --json
Συνδυάστε το με το application query latency, το connection count, τη συμπεριφορά του cache, τη διάρκεια των backups και την αύξηση του storage. Μια μεγαλύτερη κατανομή CPU ή μνήμης μπορεί να μην διορθώσει missing indexes ή unbounded queries.
Εξετάστε τις στρατηγικές scaling βάσεων δεδομένων πριν μεταφέρετε nodes ή αυξήσετε resources. Το Managed PostgreSQL μειώνει την εργασία provisioning, όμως ο σχεδιασμός του schema και των queries παραμένει ευθύνη της εφαρμογής.
Διαχωρίστε τη διαθεσιμότητα από την ορθότητα
Ένα running database container αποδεικνύει ότι η PostgreSQL είναι διαθέσιμη, όχι ότι τα application queries είναι σωστά. Συμπεριλάβετε στη verification μετά το deploy μια ασφαλή νέα σύνδεση και ένα αντιπροσωπευτικό read. Για write test, χρησιμοποιήστε ένα dedicated transaction ή test record που μπορεί να διαγραφεί με ασφάλεια.
Το runbook για managed PostgreSQL πρέπει επίσης να αναφέρει αν τα replicas, οι analytics users, τα previews ή οι background workers δημιουργούν πρόσθετη πίεση στις connections.
Επανεξετάζετε τακτικά την πρόσβαση PostgreSQL
Εμφανίστε τους επιπλέον users, επιβεβαιώστε ότι κάθε label έχει ενεργό owner και αφαιρέστε τους παρωχημένους accounts. Αυτός ο απλός έλεγχος αποτρέπει τη συσσώρευση read access στο managed PostgreSQL μετά την ολοκλήρωση previews, analytics projects ή investigations από την υποστήριξη.
Ξεκινήστε με ένα deployment που μπορεί να επαληθευτεί
Δημιουργήστε μια non-production PostgreSQL database, συνδέστε μια test service μέσω masked secret, πάρτε ένα backup και ολοκληρώστε ένα restore drill πριν από το production cutover.
Ξεκινήστε δωρεάν στο app.dockup.ai. Το Free plan κοστίζει $0 τον μήνα, περιλαμβάνει αρχικό credit $10 και υποστηρίζει ένα workspace, τρεις βάσεις δεδομένων και τρία deployments.
FAQ
Ποιους τύπους managed databases υποστηρίζει το Dockup;
Το Dockup υποστηρίζει managed databases PostgreSQL, MySQL, MongoDB και Redis.
Πώς πρέπει να λαμβάνει μια εφαρμογή το PostgreSQL connection string;
Αντιμετωπίστε το connection string ως secret environment variable, ορίστε το στην ακριβή υπηρεσία και κάντε redeploy, ώστε το νέο container να το λάβει.
Μπορεί το Dockup να δημιουργήσει PostgreSQL user μόνο για ανάγνωση;
Ναι. Η εντολή database user-add δημιουργεί έναν πρόσθετο read-only user και επιστρέφει το password του μία φορά, κατά τη δημιουργία.
Υπάρχει τεκμηριωμένη CLI εντολή dockup db restore;
Η τρέχουσα CLI reference δεν τεκμηριώνει κάποια. Το Dockup υποστηρίζει backup restore μέσω του platform interface, επομένως χρησιμοποιήστε αυτή την υποστηριζόμενη διαδρομή αντί να επινοήσετε flag ή command.
Επαναφέρει το application rollback τη PostgreSQL database;
Όχι. Το ιστορικό των application deployments και το ιστορικό των database backups είναι ξεχωριστά recovery systems και πρέπει να συντονίζονται όταν οι αλλαγές στο schema απαιτούν και τα δύο.
