Εντολές και σενάρια Postgres. Εντολές και σενάρια Postgres Μέγεθος βάσης δεδομένων

Εντοπίστηκε μια ευπάθεια (CVE-2019-18634) στο βοηθητικό πρόγραμμα sudo, το οποίο χρησιμοποιείται για την οργάνωση της εκτέλεσης εντολών για λογαριασμό άλλων χρηστών, το οποίο σας επιτρέπει να αυξήσετε τα προνόμιά σας στο σύστημα. Πρόβλημα […]

Η κυκλοφορία του WordPress 5.3 βελτιώνει και διευρύνει τον επεξεργαστή μπλοκ που εισήχθη στο WordPress 5.0 με ένα νέο μπλοκ, πιο διαισθητικές αλληλεπιδράσεις και βελτιωμένη προσβασιμότητα. Νέες δυνατότητες στον επεξεργαστή [...]

Μετά από εννέα μήνες ανάπτυξης, είναι διαθέσιμο το πακέτο πολυμέσων FFmpeg 4.2, το οποίο περιλαμβάνει ένα σύνολο εφαρμογών και μια συλλογή βιβλιοθηκών για λειτουργίες σε διάφορες μορφές πολυμέσων (εγγραφή, μετατροπή και [...]

  • Νέες δυνατότητες στο Linux Mint 19.2 Cinnamon

    Το Linux Mint 19.2 είναι μια έκδοση μακροπρόθεσμης υποστήριξης που θα υποστηρίζεται μέχρι το 2023. Έρχεται με ενημερωμένο λογισμικό και περιέχει βελτιώσεις και πολλά νέα [...]

  • Κυκλοφόρησε η διανομή Linux Mint 19.2

    Παρουσιάζεται η κυκλοφορία του κιτ διανομής Linux Mint 19.2, η δεύτερη ενημέρωση του υποκαταστήματος Linux Mint 19.x, που δημιουργήθηκε στο πακέτο βάσης Ubuntu 18.04 LTS και υποστηρίζεται μέχρι το 2023. Η διανομή είναι πλήρως συμβατή [...]

  • Διατίθενται νέες εκδόσεις υπηρεσιών BIND που περιλαμβάνουν διορθώσεις σφαλμάτων και βελτιώσεις χαρακτηριστικών. Μπορείτε να κατεβάσετε νέες εκδόσεις από τη σελίδα λήψεων στον ιστότοπο του προγραμματιστή: [...]

    Το Exim είναι ένας πράκτορας μεταφοράς μηνυμάτων (MTA) που αναπτύχθηκε στο Πανεπιστήμιο του Cambridge για χρήση σε συστήματα Unix που είναι συνδεδεμένα στο Διαδίκτυο. Είναι ελεύθερα διαθέσιμο σύμφωνα με [...]

    Μετά από σχεδόν δύο χρόνια ανάπτυξης, κυκλοφόρησε το ZFS στο Linux 0.8.0, μια υλοποίηση του συστήματος αρχείων ZFS που έχει συσκευαστεί ως μονάδα για τον πυρήνα του Linux. Η ενότητα έχει δοκιμαστεί με πυρήνες Linux 2.6.32 σε [...]

    Η Internet Engineering Task Force (IETF), η οποία ασχολείται με την ανάπτυξη πρωτοκόλλων και αρχιτεκτονικής Διαδικτύου, ολοκλήρωσε τον σχηματισμό ενός RFC για το πρωτόκολλο Automatic Certificate Management Environment (ACME) [...]

    Το Let's Encrypt, ένα μη κερδοσκοπικό κέντρο πιστοποίησης που ελέγχεται από την κοινότητα και παρέχει δωρεάν πιστοποιητικά σε όλους, συνόψισε τα αποτελέσματα του περασμένου έτους και μίλησε για σχέδια για το 2019. […]

    15 χρήσιμες εντολές PostgreSQL

    Υπάρχουν πολλά μαθήματα PostgreSQL στο διαδίκτυο που περιγράφουν τις βασικές εντολές. Όταν όμως βουτάτε βαθύτερα στη δουλειά, προκύπτουν πρακτικά ζητήματα που απαιτούν προηγμένες ομάδες.

    Τέτοιες εντολές ή αποσπάσματα σπάνια τεκμηριώνονται. Ας δούμε μερικά παραδείγματα, χρήσιμα τόσο για προγραμματιστές όσο και για διαχειριστές βάσεων δεδομένων.

    Λήψη πληροφοριών σχετικά με μια βάση δεδομένων

    Μέγεθος βάσης δεδομένων

    Για να λάβουμε το φυσικό μέγεθος των αρχείων (αποθήκευση) της βάσης δεδομένων, χρησιμοποιούμε το ακόλουθο ερώτημα:

    SELECT pg_database_size (current_database ());

    Το αποτέλεσμα θα παρουσιαστεί ως αριθμός όπως 41809016.

    current_database () είναι μια συνάρτηση που επιστρέφει το όνομα της τρέχουσας βάσης δεδομένων. Αντ 'αυτού, μπορείτε να εισαγάγετε ένα όνομα στο κείμενο:

    SELECT pg_database_size ("my_database");

    Για να λάβουμε πληροφορίες σε αναγνώσιμη μορφή από τον άνθρωπο, χρησιμοποιούμε τη συνάρτηση pg_size_pretty:

    SELECT pg_size_pretty (pg_database_size (current_database ()));

    Ως αποτέλεσμα, λαμβάνουμε πληροφορίες της φόρμας 40 Mb.

    Λίστα πινάκων

    Μερικές φορές θέλετε να λάβετε μια λίστα με πίνακες βάσης δεδομένων. Για να γίνει αυτό, χρησιμοποιούμε το ακόλουθο ερώτημα:

    SELECT table_name FROM information_schema.tables WHERE table_schema NOT IN ("information_schema", "pg_catalog");

    Το information_schema είναι ένα τυπικό σχήμα βάσης δεδομένων που περιέχει συλλογές προβολών, όπως πίνακες, πεδία κ. Οι προβολές πίνακα περιέχουν πληροφορίες για όλους τους πίνακες σε μια βάση δεδομένων.

    Το ερώτημα που περιγράφεται παρακάτω θα επιλέξει όλους τους πίνακες από το καθορισμένο σχήμα της τρέχουσας βάσης δεδομένων:

    ΕΠΙΛΟΓΗ ονόματος πίνακα ΑΠΟ information_schema.tables ΠΟΥ ΠΙΝΑΚΑΣ table_schema ΔΕΝ ΕΙΝΑΙ ("information_schema", "pg_catalog") AND table_schema IN ("public", "myschema")?

    Στην τελευταία ρήτρα IN, μπορείτε να καθορίσετε το όνομα ενός συγκεκριμένου σχήματος.

    Μέγεθος τραπεζιού

    Κατ 'αναλογία με το μέγεθος της βάσης δεδομένων, το μέγεθος των δεδομένων του πίνακα μπορεί να υπολογιστεί χρησιμοποιώντας την αντίστοιχη συνάρτηση:

    SELECT pg_relation_size ("λογαριασμοί");

    Η συνάρτηση pg_relation_size επιστρέφει τον χώρο που καταλαμβάνει το καθορισμένο επίπεδο του καθορισμένου πίνακα ή ευρετηρίου στο δίσκο.

    Το όνομα του μεγαλύτερου πίνακα

    Για να εμφανίσετε μια λίστα πινάκων στην τρέχουσα βάση δεδομένων ταξινομημένη κατά μέγεθος πίνακα, εκτελέστε το ακόλουθο ερώτημα:

    SELECT relname, relpages FROM pg_class ORDER BY relpages DESC?

    Προκειμένου να εμφανιστούν πληροφορίες σχετικά με τον μεγαλύτερο πίνακα, περιορίζουμε το ερώτημα χρησιμοποιώντας το LIMIT:

    ΕΠΙΛΟΓΗ μετονομασίας, μετατοπίσεις ΑΠΟ pg_class ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ μετατοπίσεις DESC LIMIT 1;

    Το relname είναι το όνομα του πίνακα, του ευρετηρίου, της προβολής κ.λπ.
    relpages - το μέγεθος της προβολής αυτού του πίνακα στο δίσκο στον αριθμό των σελίδων (από προεπιλογή, μία σελίδα είναι 8 KB).
    Το pg_class είναι ένας πίνακας συστήματος που περιέχει πληροφορίες σχετικά με τις σχέσεις μεταξύ των πινάκων βάσης δεδομένων.

    Λίστα συνδεδεμένων χρηστών

    Για να μάθετε το όνομα, τη διεύθυνση IP και τη θύρα που χρησιμοποιούν οι συνδεδεμένοι χρήστες, εκτελέστε το ακόλουθο ερώτημα:

    SELECT dataname, usename, client_addr, client_port FROM pg_stat_activity?

    Δραστηριότητα χρήστη

    Για να μάθετε τη δραστηριότητα της σύνδεσης ενός συγκεκριμένου χρήστη, χρησιμοποιούμε το ακόλουθο ερώτημα:

    ΕΠΙΛΟΓΗ ονόματος δεδομένων ΑΠΟ pg_stat_activity WHERE usename = "devuser";

    Εργασία με πεδία δεδομένων και πίνακα

    Κατάργηση διπλών γραμμών

    Εάν συμβεί έτσι ώστε ο πίνακας να μην έχει ένα πρωτεύον κλειδί, τότε πιθανόν να υπάρχουν διπλότυπα μεταξύ των εγγραφών. Εάν για έναν τέτοιο πίνακα, ειδικά έναν μεγάλο, είναι απαραίτητο να θέσουμε περιορισμούς για τον έλεγχο της ακεραιότητας, τότε θα αφαιρέσουμε τα ακόλουθα στοιχεία:

    • διπλές γραμμές,
    • καταστάσεις όταν μία ή περισσότερες στήλες αντιγράφονται (εάν υποτίθεται ότι αυτές οι στήλες θα χρησιμοποιηθούν ως κύριο κλειδί).

    Εξετάστε έναν πίνακα με δεδομένα πελατών, όπου μια ολόκληρη σειρά αντιγράφεται (η δεύτερη στη σειρά).

    Το ακόλουθο ερώτημα θα βοηθήσει στην κατάργηση όλων των διπλότυπων:

    ΔΙΑΓΡΑΦΗ ΑΠΟ πελατες ΟΠΟΥ ΔΕΝ ΕΙΝΑΙ ΕΠΙΛΟΓΗ (ΕΠΙΛΟΓΗ μέγ.

    Το πεδίο ctid, το οποίο είναι μοναδικό για κάθε εγγραφή, είναι κρυφό από προεπιλογή, αλλά υπάρχει σε κάθε πίνακα.

    Το τελευταίο αίτημα απαιτεί πόρους, οπότε προσέξτε όταν το εκτελείτε σε ένα έργο παραγωγής.

    Τώρα εξετάστε την περίπτωση όπου οι τιμές πεδίου επαναλαμβάνονται.

    Εάν είναι δυνατή η διαγραφή διπλότυπων χωρίς αποθήκευση όλων των δεδομένων, θα εκτελέσουμε το ακόλουθο ερώτημα:

    ΔΙΑΓΡΑΦΗ ΑΠΟ πελάτες ΠΟΥ ΔΕΝ ΕΙΝΑΙ ΕΠΙΛΟΓΗ (ΕΠΙΛΟΓΗ μέγ.

    Εάν τα δεδομένα είναι σημαντικά, τότε πρώτα πρέπει να βρείτε εγγραφές με διπλότυπα:

    ΕΠΙΛΟΓΗ * ΑΠΟ πελάτες ΠΟΥ ΔΕΝ ΕΙΝΑΙ ΕΠΙΛΟΓΗ (ΕΠΙΛΟΓΗ μέγ.

    Πριν διαγράψετε τέτοιες εγγραφές, μπορείτε να μετακινηθείτε σε έναν προσωρινό πίνακα ή να αντικαταστήσετε την τιμή πελάτη_ιδίου σε αυτές με άλλη.

    Η γενική μορφή αιτήματος διαγραφής των εγγραφών που περιγράφονται παραπάνω έχει ως εξής:

    ΔΙΑΓΡΑΦΗ ΑΠΟ ΤΟ ΠΙΝΑΚΑ ΠΟΥ ΔΕΝ ΕΙΝΑΙ ΕΠΙΛΟΓΗ (ΕΠΙΛΟΓΗ μέγ.

    Αλλάξτε με ασφάλεια τον τύπο πεδίου

    Μπορεί να προκύψει το ερώτημα σχετικά με τη συμπερίληψη μιας τέτοιας εργασίας σε αυτόν τον κατάλογο. Άλλωστε, στο PostgreSQL είναι πολύ εύκολο να αλλάξετε τον τύπο ενός πεδίου χρησιμοποιώντας την εντολή ALTER. Ας ρίξουμε μια ματιά ξανά στο τραπέζι των πελατών ως παράδειγμα.

    Το πεδίο customer_id χρησιμοποιεί τον τύπο δεδομένων varchar string. Αυτό είναι ένα σφάλμα επειδή αυτό το πεδίο υποτίθεται ότι αποθηκεύει αναγνωριστικά πελατών, τα οποία είναι σε ακέραιη μορφή. Η χρήση του varchar δεν δικαιολογείται. Ας προσπαθήσουμε να διορθώσουμε αυτήν την παρεξήγηση χρησιμοποιώντας την εντολή ALTER:

    ΑΛΛΑΓΗ ΠΙΝΑΚΑΣ πελατών ΑΛΛΑΓΗ ΣΤΗΛΗΣ πελάτης_id Τύπος ακέραιος?

    Αλλά ως αποτέλεσμα της εκτέλεσης, θα λάβουμε ένα σφάλμα:

    ΣΦΑΛΜΑ: η στήλη "client_id" δεν μπορεί να μεταδοθεί αυτόματα στον τύπο ακέραιου αριθμού
    Κατάσταση SQL: 42804
    Συμβουλή: Καθορίστε μια έκφραση ΧΡΗΣΗ για να πραγματοποιήσετε τη μετατροπή.

    Αυτό σημαίνει ότι δεν μπορείτε απλά να πάρετε και να αλλάξετε τον τύπο ενός πεδίου εάν υπάρχουν δεδομένα στον πίνακα. Δεδομένου ότι χρησιμοποιήθηκε ο τύπος varchar, το DBMS δεν μπορεί να καθορίσει εάν η τιμή είναι ακέραιος. Αν και τα δεδομένα αντιστοιχούν ακριβώς σε αυτόν τον τύπο. Για να διευκρινιστεί αυτό το σημείο, το μήνυμα σφάλματος προτείνει τη χρήση της έκφρασης USING για τη σωστή μετατροπή των δεδομένων μας σε ακέραιο αριθμό:

    ΑΛΛΑΓΗ ΠΙΝΑΚΑΣ πελατών ΑΛΛΑΓΗ ΣΤΗΛΗΣ client_id Τύπος ακέραιος ΧΡΗΣΗ (customer_id :: ακέραιος);

    Ως αποτέλεσμα, όλα πήγαν χωρίς σφάλματα:

    Λάβετε υπόψη ότι όταν χρησιμοποιείτε το USING, εκτός από μια συγκεκριμένη έκφραση, είναι δυνατή η χρήση συναρτήσεων, άλλων πεδίων και τελεστών.

    Για παράδειγμα, ας μετατρέψουμε το πεδίο customer_id ξανά σε varchar, αλλά με τη μετατροπή της μορφής δεδομένων:

    ΑΛΛΑΓΗ ΠΙΝΑΚΑΣ πελατών ΑΛΛΑΓΗ ΣΤΗΛΗΣ πελατών_id ΤΡΥΠΟΣ ΧΡΗΣΗ (client_id || "-" || first_name);

    Ως αποτέλεσμα, ο πίνακας θα μοιάζει με αυτόν:

    Εύρεση «χαμένων» τιμών

    Να είστε προσεκτικοί όταν χρησιμοποιείτε ακολουθίες ως κύριο κλειδί: κατά την εκχώρηση, ορισμένα στοιχεία της ακολουθίας παραλείπονται κατά λάθος και ως αποτέλεσμα της εργασίας με τον πίνακα, ορισμένες εγγραφές διαγράφονται. Αυτές οι τιμές μπορούν να χρησιμοποιηθούν ξανά, αλλά είναι δύσκολο να βρεθούν σε μεγάλους πίνακες.

    Ας εξετάσουμε δύο επιλογές αναζήτησης.

    Ο πρώτος τρόπος
    Ας εκτελέσουμε το ακόλουθο ερώτημα για να βρούμε την αρχή του διαστήματος με την "χαμένη" τιμή:

    ΕΠΙΛΟΓΗ customer_id + 1 ΑΠΟ πελάτες mo ΠΟΥ ΔΕΝ ΥΠΑΡΧΕΙ (ΕΠΙΛΕΞΤΕ ΑΠΟΣΤΟΛΗ ΑΠΟ ΤΟΥΣ πελάτες mi WHERE mi.customer_id = mo.customer_id + 1) ΠΑΡΑΓΓΕΛΙΑ ΜΕ customer_id;

    Ως αποτέλεσμα, παίρνουμε τις τιμές: 5, 9 και 11.

    Εάν πρέπει να βρείτε όχι μόνο την πρώτη εμφάνιση, αλλά όλες τις τιμές που λείπουν, χρησιμοποιούμε το ακόλουθο ερώτημα (εντατικό σε πόρους!):

    ΜΕ seq_max AS (SELECT max (customer_id) FROM πελάτες), seq_min AS (SELECT min (customer_id) FROM customers) SELECT * FROM generate_series ((SELECT min FROM seq_min), (SELECT max FROM seq_max)) ΕΚΤΟΣ SELECT πελάτης_id FROM

    Ως αποτέλεσμα, βλέπουμε το ακόλουθο αποτέλεσμα: 5, 9 και 6.

    Δεύτερος τρόπος
    Λαμβάνουμε το όνομα της ακολουθίας που σχετίζεται με το αναγνωριστικό πελάτη:

    ΕΠΙΛΟΓΗ pg_get_serial_sequence ("πελάτες", "customer_id");

    Και βρίσκουμε όλα τα αναγνωριστικά που λείπουν:

    ΜΕ sequence_info AS (ΕΠΙΛΟΓΗ αρχικής_τιμής, τελευταίας_αξίας ΑΠΟ "Όνομα σχήματος". "Όνομα αλληλουχίας") ΕΠΙΛΟΓΗ generate_series ((sequence_info.start_value), (sequence_info.last_value)) FROM sequence_info ΕΚΤΟΣ ΕΠΙΛΕΞΤΕ πελάτη_ΑΠΟ ΤΟΥΣ πελάτες?

    Μετρώντας τον αριθμό των σειρών σε έναν πίνακα

    Ο αριθμός των γραμμών υπολογίζεται από την τυπική συνάρτηση καταμέτρησης, αλλά μπορεί να χρησιμοποιηθεί με πρόσθετες συνθήκες.

    Ο συνολικός αριθμός των γραμμών στον πίνακα:

    SELECT count (*) FROM table;

    Αριθμός σειρών με την προϋπόθεση ότι το καθορισμένο πεδίο δεν περιέχει NULL:

    ΕΠΙΛΟΓΗ αριθμού (col_name) ΑΠΟ πίνακα.

    Ο αριθμός των μοναδικών γραμμών για το καθορισμένο πεδίο:

    ΕΠΙΛΟΓΗ αριθμού (διακριτό όνομα_συλλογής) ΑΠΟ πίνακα.

    Χρήση συναλλαγών

    Μια συναλλαγή συνδυάζει μια ακολουθία ενεργειών σε μία πράξη. Η ιδιαιτερότητά του είναι ότι εάν υπάρχει σφάλμα στην εκτέλεση μιας συναλλαγής, κανένα από τα αποτελέσματα των ενεργειών δεν θα αποθηκευτεί στη βάση δεδομένων.

    Ας ξεκινήσουμε μια συναλλαγή χρησιμοποιώντας την εντολή BEGIN.

    Για να επαναφέρετε όλες τις λειτουργίες μετά την ΑΡΧΗ, χρησιμοποιήστε την εντολή ROLLBACK.

    Και για να εφαρμόσετε - η εντολή COMMIT.

    Προβολή και συμπλήρωση εκτελέσιμων αιτημάτων

    Για να λάβετε πληροφορίες σχετικά με τα αιτήματα, εκτελέστε την ακόλουθη εντολή:

    SELECT pid, age (query_start, clock_timestamp ()), usename, query FROM pg_stat_activity WHERE query! = " "ΚΑΙ ΕΡΩΤΗΣΗ ΔΕΝ ΜΟΥ ΑΡΕΣΕΙ"% pg_stat_activity% "ΠΑΡΑΓΓΕΛΙΑ ΜΕ query_start desc.

    Για να σταματήσετε ένα συγκεκριμένο αίτημα, εκτελέστε την ακόλουθη εντολή, καθορίζοντας το αναγνωριστικό διεργασίας (pid):

    ΕΠΙΛΟΓΗ pg_cancel_backend (προμηθευτής);

    Για να τερματίσετε το αίτημα, εκτελέστε:

    ΕΠΙΛΟΓΗ pg_terminate_backend (procpid);

    Εργασία με διαμόρφωση

    Εύρεση και αλλαγή της τοποθεσίας μιας παρουσίας συμπλέγματος

    Μια κατάσταση είναι δυνατή όταν πολλές παρουσίες PostgreSQL έχουν ρυθμιστεί στο ίδιο λειτουργικό σύστημα, το οποίο "κάθεται" σε διαφορετικές θύρες. Σε αυτή την περίπτωση, η εύρεση μιας διαδρομής προς τη φυσική τοποθεσία κάθε περιπτώσεως είναι μια μάλλον νευρική δουλειά. Για να λάβουμε αυτές τις πληροφορίες, θα εκτελέσουμε το ακόλουθο ερώτημα για οποιαδήποτε βάση δεδομένων του συμπλέγματος ενδιαφέροντος:

    SHOW data_directory;

    Ας αλλάξουμε την τοποθεσία σε κάτι άλλο χρησιμοποιώντας την εντολή:

    SET data_directory στο new_directory_path.

    Αλλά απαιτείται επανεκκίνηση για να ισχύσουν οι αλλαγές.

    Λήψη λίστας διαθέσιμων τύπων δεδομένων

    Ας πάρουμε μια λίστα με τους διαθέσιμους τύπους δεδομένων χρησιμοποιώντας την εντολή:

    SELECT typname, typlen από pg_type όπου typtype = "b";

    typname είναι το όνομα του τύπου δεδομένων.
    typlen είναι το μέγεθος του τύπου δεδομένων.

    Αλλαγή ρυθμίσεων DBMS χωρίς επανεκκίνηση

    Οι ρυθμίσεις PostgreSQL βρίσκονται σε ειδικά αρχεία όπως το postgresql.conf και το pg_hba.conf. Μετά την αλλαγή αυτών των αρχείων, είναι απαραίτητο το DBMS να λάβει ξανά τις ρυθμίσεις. Για να γίνει αυτό, ο διακομιστής βάσης δεδομένων επανεκκινείται. Είναι σαφές ότι πρέπει να το κάνετε αυτό, αλλά στην έκδοση παραγωγής του έργου, που χρησιμοποιείται από χιλιάδες χρήστες, αυτό είναι πολύ ανεπιθύμητο. Επομένως, η PostgreSQL έχει μια λειτουργία με την οποία μπορείτε να εφαρμόσετε αλλαγές χωρίς επανεκκίνηση του διακομιστή:

    SELECT pg_reload_conf ();

    Αλλά, δυστυχώς, δεν ισχύει για όλες τις παραμέτρους. Σε ορισμένες περιπτώσεις, απαιτείται επανεκκίνηση για την εφαρμογή των ρυθμίσεων.

    Καλύψαμε εντολές για να διευκολύνουμε τα πράγματα για προγραμματιστές και DBA χρησιμοποιώντας PostgreSQL. Αλλά αυτές δεν είναι όλες οι πιθανές τεχνικές. Εάν αντιμετωπίσατε ενδιαφέροντα προβλήματα, γράψτε για αυτά στα σχόλια. Ας μοιραστούμε τη χρήσιμη εμπειρία μας!

    Σε αυτό το άρθρο, θα σας δείξω 15 από τις πιο χρήσιμες εντολές για τη διαχείριση postgreSQL.

    1. Πώς μπορώ να αλλάξω τον κωδικό πρόσβασης ρίζας στο PostgreSQL;

    $ / usr / local / pgsql / bin / psql postgres postgresΚωδικός πρόσβασης: (oldpassword) # ΑΛΛΑΞΤΕ ΧΡΗΣΤΗ postgres ΜΕ ΚΩΔΙΚΟΣ ΛΟΓΟΥ «tmppassword». $ / usr / local / pgsql / bin / psql postgres postgresΚωδικός πρόσβασης: (tmppassword)

    Η αλλαγή του κωδικού πρόσβασης για έναν κανονικό χρήστη είναι η ίδια. Ο χρήστης root μπορεί να αλλάξει τον κωδικό πρόσβασης για οποιονδήποτε χρήστη.

    # ΑΛΛΑΞΤΕ το όνομα χρήστη του χρήστη με κωδικό πρόσβασης 'tmppassword'.

    2. Πώς μπορώ να ορίσω το PostgreSQL σε autorun;

    $ su-root # tar xvfz postgresql-8.3.7.tar.gz # cd postgresql-8.3.7 # cp contrib /start-scripts /linux /etc/rc.d/init.d/postgresql # chmod a + x / etc / rc.d / init.d / postgresql

    3. Έλεγχος της κατάστασης του διακομιστή

    $ /etc/init.d/postgresql κατάστασηΚωδικός πρόσβασης: pg_ctl: ο διακομιστής εκτελείται (PID: 6171) / usr / local / pgsql / bin / postgres “-D” “ / usr / local / pgsql / data” [ Σχόλιο: Αυτό το μήνυμα υποδεικνύει ότι ο διακομιστής λειτουργεί κανονικά] $ /etc/init.d/postgresql κατάστασηΚωδικός πρόσβασης: pg_ctl: δεν εκτελείται διακομιστής [ Σχόλιο: Αυτό το μήνυμα προετοιμάζει ότι ο διακομιστής δεν εκτελείται]

    4. Πώς να ξεκινήσετε, να σταματήσετε, να επανεκκινήσετε το PostgreSQL;

    # στάση postgresql υπηρεσίαςΔιακοπή PostgreSQL: ο διακομιστής σταμάτησε εντάξει # υπηρεσία εκκίνησης postgresqlΈναρξη PostgreSQL: εντάξει # επανεκκίνηση της υπηρεσίας postgresqlΕπανεκκίνηση PostgreSQL: ο διακομιστής σταμάτησε εντάξει

    5. Πώς μπορώ να δω ποια έκδοση του PostgreSQL εκτελείται;

    $ / usr / local / pgsql / bin / psql testΚαλώς ορίσατε στο psql 8.3.7, το διαδραστικό τερματικό PostgreSQL. Τύπος: \ πνευματικά δικαιώματα για όρους διανομής \ h για βοήθεια με εντολές SQL \? για βοήθεια με εντολές psql \ g ή τερματισμό με ερωτηματικό για εκτέλεση ερωτήματος \ q διακοπή δοκιμής = # επιλέξτε έκδοση ();έκδοση ———————————————————————————————————- PostgreSQL 8.3.7 στο i686-pc-linux-gnu, που έχει συνταχθεί από GCC gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42) (1 σειρά) δοκιμή = #

    5. Πώς μπορώ να δημιουργήσω έναν χρήστη στο PostgreSQL;

    Υπάρχουν δύο μέθοδοι για αυτό ..

    Μέθοδος 1:Δημιουργήστε έναν χρήστη μέσω του κελύφους PSQL χρησιμοποιώντας την εντολή ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ.

    # ΔΗΜΙΟΥΡΓΙΑ ramesh ΧΡΗΣΤΗ ΜΕ κωδικό πρόσβασης 'tmppassword'.ΔΗΜΙΟΥΡΓΙΑ ΡΟΛΟΥ

    Μέθοδος2: Δημιουργούμε έναν χρήστη στην εντολή createuser μέσω του κελύφους.

    $ / usr / local / pgsql / bin / createuser sathiyaΘα είναι ο νέος ρόλος superuser; (y / n) n Θα επιτρέπεται στον νέο ρόλο να δημιουργεί βάσεις δεδομένων; (y / n) n Θα επιτρέπεται στον νέο ρόλο να δημιουργεί περισσότερους νέους ρόλους; (y / n) n ΔΗΜΙΟΥΡΓΙΑ ΡΟΛΟΥ

    6. Πώς να δημιουργήσετε μια βάση δεδομένων στο PostgreSQL;

    Υπάρχουν 2 μέθοδοι για αυτό.

    Μέθοδος1: Δημιουργήστε μια βάση δεδομένων μέσω του κελύφους PSQL χρησιμοποιώντας την εντολή CREATE DATABASE.

    # ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ mydb ΜΕ ΙΔΙΟΤΗΤΑ ramesh?ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΒΑΣΩΝ

    Μέθοδος2: Χρησιμοποιούμε την εντολή createdb.

    $ / usr / local / pgsql / bin / createdb mydb -O rameshΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΒΑΣΩΝ

    7. Λήψη λίστας όλων των βάσεων δεδομένων στο Postgresql;

    # \ lΚατάλογος βάσεων δεδομένων Όνομα | Ιδιοκτήτης | Κωδικοποίηση ———- + ———- + + ———- αντίγραφο ασφαλείας | postgres | UTF8 mydb | ramesh | UTF8 postgres | postgres | Πρότυπο UTF80 | postgres | Πρότυπο UTF81 | postgres | UTF8

    8. Πώς μπορώ να διαγράψω μια βάση δεδομένων στο PostgreSQL;

    # \ lΚατάλογος βάσεων δεδομένων Όνομα | Ιδιοκτήτης | Κωδικοποίηση ———- + ———- + + ———- αντίγραφο ασφαλείας | postgres | UTF8 mydb | ramesh | UTF8 postgres | postgres | Πρότυπο UTF80 | postgres | Πρότυπο UTF81 | postgres | UTF8 # DROP DATABASE mydb; DROP DATABASE

    9. Χρήση της ενσωματωμένης βοήθειας για εντολές

    Εντολή \? θα εμφανίσει τη γραμμή βοήθειας για την εντολή PSQL. \ h Η ΔΗΜΙΟΥΡΓΙΑ θα εμφανίσει βοήθεια για όλες τις εντολές που ξεκινούν με τη ΔΗΜΙΟΥΡΓΙΑ.

    # \? # \ h ΔΗΜΙΟΥΡΓΙΑ # \ h ΔΗΜΙΟΥΡΓΙΑ ΕΥΡΕΤΗΡΙΟΥ

    10. Πώς να αποκτήσετε μια λίστα με όλους τους πίνακες σε μια βάση δεδομένων στο Postgresql;

    # \ δ

    Για μια κενή βάση, θα λάβετε το μήνυμα "Δεν βρέθηκαν σχέσεις".

    11. Πώς μπορώ να μάθω τον χρόνο εκτέλεσης ενός αιτήματος;

    # \ timing - μετά την εκτέλεση αυτής της εντολής, κάθε επόμενο αίτημα θα δείχνει τον χρόνο εκτέλεσης.

    # \ χρονισμόςΟ χρονισμός είναι ενεργοποιημένος. # SELECT * από το pg_catalog.pg_attribute;Χρόνος: 9.583 ms

    12. Πώς να δημιουργήσετε αντίγραφα ασφαλείας και να επαναφέρετε βάσεις δεδομένων και πίνακες στο PostgreSQL;

    Αυτή η ερώτηση είναι αρκετά μεγάλη και θα την δημοσιεύσω αργότερα σε ξεχωριστό άρθρο.

    13. Πώς μπορώ να δω τη λίστα με τις διαθέσιμες λειτουργίες στο PostgreSQL;

    Για μια λίστα με τις διαθέσιμες λειτουργίες, πείτε \ df +

    # \ df # \ df +

    14. Πώς να επεξεργαστείτε ένα ερώτημα PostgreSQL στον επεξεργαστή;

    # \ ε

    \ θα ανοίξει ένας επεξεργαστής όπου μπορείτε να επεξεργαστείτε το ερώτημα και να το αποθηκεύσετε.

    15. Πού μπορώ να βρω το αρχείο ιστορικού postgreSQL;

    Όπως το αρχείο ~ / .bash_history, το postgreSQL αποθηκεύει όλες τις εντολές sql στο αρχείο ~ / .psql_history.

    $ γάτα ~ / .psql_historyΑλλάξτε τα postgres των χρηστών με κωδικό πρόσβασης 'tmppassword'. \ h αλλαγή της επιλεγμένης έκδοσης χρήστη (); δημιουργία ramesh χρήστη με κωδικό πρόσβασης 'tmppassword'. \ timing select * από το pg_catalog.pg_attribute;

    Γεια σας, σήμερα θέλω να κάνω ένα μικρό σημείωμα σχετικά με τις βασικές εντολές PostgreSQL. Μπορείτε να εργαστείτε με το PosgreSQL τόσο διαδραστικά όσο και από τη γραμμή εντολών. Το πρόγραμμα είναι psql. Είμαι βέβαιος ότι αυτή η λίστα θα σας φανεί πολύ χρήσιμη και θα σας εξοικονομήσει χρόνο στην αναζήτηση διαφόρων πόρων. Επιτρέψτε μου να σας υπενθυμίσω ότι πρόκειται για ένα έργο ανοιχτού κώδικα, βασισμένο στο Postgres DBMS, που κυκλοφόρησε το 1986, αναπτύσσεται από μια παγκόσμια ομάδα προγραμματιστών PGDG, στην ουσία είναι 5-8 άτομα, αλλά παρόλα αυτά, αναπτύσσεται πολύ εντατικά, εισάγοντας όλες τις νέες λειτουργίες και διορθώνοντας παλιά σφάλματα και σφάλματα.

    Βασικές εντολές PostgreSQL σε διαδραστική λειτουργία:

    • \ connect db_name - σύνδεση σε μια βάση δεδομένων με όνομα db_name
    • \ du - λίστα χρηστών
    • \ dp (ή \ z) - λίστα πινάκων, προβολών, ακολουθιών, δικαιώματα πρόσβασης σε αυτά
    • \ di - δείκτες
    • \ ds - ακολουθίες
    • \ dt - λίστα πινάκων
    • \ dt + - λίστα όλων των πινάκων με περιγραφή
    • \ dt * s * - λίστα με όλους τους πίνακες που περιέχουν s στο όνομα
    • \ dv - προβολές
    • \ dS - πίνακες συστήματος
    • \ d + - περιγραφή πίνακα
    • \ o - αποστολή αποτελεσμάτων ερωτήματος σε ένα αρχείο
    • \ l - λίστα βάσεων δεδομένων
    • \ i - διαβάζω τα εισερχόμενα δεδομένα από ένα αρχείο
    • \ e - ανοίγει το τρέχον περιεχόμενο του buffer αιτήματος στον επεξεργαστή (εκτός εάν ορίζεται διαφορετικά στο περιβάλλον της μεταβλητής EDITOR, το vi θα χρησιμοποιηθεί από προεπιλογή)
    • \ d "table_name" - περιγραφή πίνακα
    • \ τρέχω εντολή από εξωτερικό αρχείο όπως \ i /my/directory/my.sql
    • \ pset - εντολή για τη ρύθμιση παραμέτρων μορφοποίησης
    • \ echo - εμφανίζει ένα μήνυμα
    • \ set - ορίζει την τιμή μιας μεταβλητής περιβάλλοντος. Χωρίς παραμέτρους, εμφανίζει μια λίστα με τις τρέχουσες μεταβλητές (\ unset - καταργεί).
    • \? - αναφορά psql
    • \ help - αναφορά SQL
    • \ q (ή Ctrl + D) - βγείτε από το πρόγραμμα

    Εργασία με PostgreSQL από τη γραμμή εντολών:

    • -c (ή -εντολή) -Εκτελέστε την εντολή SQL χωρίς να μεταβείτε σε διαδραστική λειτουργία
    • -f file.sql - εκτέλεση εντολών από το αρχείο file.sql
    • -l (ή -list) -παραθέτει διαθέσιμες βάσεις δεδομένων
    • -U (ή -username) -καθορίστε το όνομα χρήστη (για παράδειγμα postgres)
    • -W (ή -password) -προτροπή κωδικού πρόσβασης
    • -d dbname - σύνδεση με βάση δεδομένων dbname
    • -h - όνομα κεντρικού υπολογιστή (διακομιστής)
    • -s - λειτουργία βήμα προς βήμα, δηλαδή θα χρειαστεί να επιβεβαιώσετε όλες τις εντολές
    • –S - λειτουργία μονής γραμμής, δηλαδή μια νέα γραμμή θα εκτελέσει το ερώτημα (απαλλάσσεται, στο τέλος της δήλωσης SQL)
    • -V - έκδοση PostgreSQL χωρίς είσοδο σε διαδραστική λειτουργία

    Παραδείγματα:

    psql -U postgres -d dbname -c "ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ my (some_id serial PRIMARY KEY, some_text text);" - εκτέλεση εντολών στη βάση δεδομένων dbname.

    psql -d dbname -H -c "SELECT * FROM my" -o my.html -εξάγετε το αποτέλεσμα του ερωτήματος σε ένα αρχείο html.

    Βοηθητικά προγράμματα (προγράμματα) PosgreSQL:

    • createdb και dropdb - δημιουργία και απόθεση βάσης δεδομένων (αντίστοιχα)
    • createuser και dropuser - δημιουργία και χρήστης (αντίστοιχα)
    • pg_ctl - ένα πρόγραμμα που έχει σχεδιαστεί για την επίλυση γενικών εργασιών ελέγχου (εκκίνηση, διακοπή, ρύθμιση παραμέτρων κλπ.)
    • postmaster - Ενότητα διακομιστή πολλαπλών χρηστών PostgreSQL (διαμόρφωση επιπέδων εντοπισμού σφαλμάτων, θυρών, καταλόγων δεδομένων)
    • initdb - δημιουργία νέων συμπλεγμάτων PostgreSQL
    • initlocation - ένα πρόγραμμα για τη δημιουργία καταλόγων για δευτερεύουσα αποθήκευση βάσεων δεδομένων
    • vacuumdb - συντήρηση φυσικής και αναλυτικής βάσης δεδομένων
    • pg_dump - δημιουργία αντιγράφων ασφαλείας και επαναφορά δεδομένων
    • pg_dumpall - δημιουργήστε αντίγραφα ασφαλείας ολόκληρου του συμπλέγματος PostgreSQL
    • pg_restore - επαναφορά βάσης δεδομένων από αρχεία (.tar, .tar.gz)

    Παραδείγματα δημιουργίας αντιγράφων ασφαλείας:

    Δημιουργία αντιγράφου ασφαλείας της βάσης δεδομένων mydb, σε συμπιεσμένη μορφή

    Pg_dump -h localhost -p 5440 -U someuser -F c -b -v -f mydb.backup mydb

    Δημιουργία αντιγράφου ασφαλείας της βάσης δεδομένων mydb, με τη μορφή απλού αρχείου κειμένου, συμπεριλαμβανομένης της εντολής δημιουργίας βάσης δεδομένων

    Pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.backup mydb

    Δημιουργία αντιγράφου ασφαλείας της βάσης δεδομένων mydb, σε συμπιεσμένη μορφή, με πίνακες που περιέχουν πληρωμές στο όνομα

    Pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t * πληρωμές * -f pages_tables.backup mydb

    Απόρριψη δεδομένων μόνο από έναν συγκεκριμένο πίνακα. Εάν πρέπει να δημιουργήσετε αντίγραφα ασφαλείας αρκετών πινάκων, τότε τα ονόματα αυτών των πινάκων παρατίθενται χρησιμοποιώντας το διακόπτη -t για κάθε πίνακα.

    Pg_dump -a -t -table_name -f αρχείο_name_namename_name

    Δημιουργία αντιγράφων ασφαλείας με συμπίεση gz

    Pg_dump -h localhost -O -F p -c -U postgres mydb | gzip -c> mydb.gz

    Μια λίστα με τις πιο συχνά χρησιμοποιούμενες επιλογές:

    • -h host - host, εάν δεν έχει καθοριστεί τότε χρησιμοποιείται localhost ή η τιμή από τη μεταβλητή περιβάλλοντος PGHOST.
    • -p θύρα - θύρα, εάν δεν έχει καθοριστεί τότε χρησιμοποιείται 5432 ή η τιμή από τη μεταβλητή περιβάλλοντος PGPORT.
    • -u - χρήστης, εάν δεν έχει καθοριστεί, χρησιμοποιείται ο τρέχων χρήστης, η τιμή μπορεί επίσης να καθοριστεί στη μεταβλητή περιβάλλοντος PGUSER.
    • -a, -data -only -μόνο τα δεδομένα, τα δεδομένα και το σχήμα απόρριψης αποθηκεύονται από προεπιλογή.
    • -β - συμπεριλάβετε μεγάλα αντικείμενα (ιστολόγια) στην χωματερή.
    • -s, -schema -only -σχήμα ανακύκλωσης μόνο.
    • -C, -create -προσθέτει μια εντολή για τη δημιουργία μιας βάσης δεδομένων.
    • -γ - προσθέτει εντολές για απόθεση (απόθεση) αντικειμένων (πίνακες, προβολές κ.λπ.).
    • -O - ​​μην προσθέσετε εντολές για να ορίσετε τον κάτοχο ενός αντικειμένου (πίνακες, προβολές κ.λπ.).
    • -F, -format (c | t | p) -μορφή χωματερή εξόδου, προσαρμοσμένη, πίσσα ή απλό κείμενο.
    • -t, -table = TABLE -καθορίστε έναν συγκεκριμένο πίνακα για την χωματερή.
    • -v, -verbose -εξάγετε λεπτομερείς πληροφορίες.
    • -D, -attribute -inserts -dump χρησιμοποιώντας την εντολή INSERT με μια λίστα με ονόματα ιδιοτήτων.

    Δημιουργήστε αντίγραφα ασφαλείας όλων των βάσεων δεδομένων χρησιμοποιώντας την εντολή pg_dumpall.

    Pg_dumpall> all.sql

    Επαναφορά πινάκων από αντίγραφα ασφαλείας (αντίγραφα ασφαλείας):

    psql - επαναφορά αντιγράφων ασφαλείας που είναι αποθηκευμένα σε ένα απλό αρχείο κειμένου.
    pg_restore - επαναφορά συμπιεσμένων αντιγράφων ασφαλείας (tar).

    Επαναφορά ολόκληρου του αντιγράφου ασφαλείας, αγνοώντας σφάλματα

    Psql -h localhost -U someuser -d dbname -f mydb.sql

    Επαναφορά ολόκληρου του αντιγράφου ασφαλείας, διακοπή στο πρώτο σφάλμα

    Psql -h localhost -U someuser -set ON_ERROR_STOP = σε -f mydb.sql

    Για να επαναφέρουμε από ένα αρχείο tar, πρέπει πρώτα να δημιουργήσουμε μια βάση δεδομένων χρησιμοποιώντας τη ΔΗΜΙΟΥΡΓΙΑ ΔΕΔΟΜΕΝΩΝ mydb. (εάν η επιλογή -C δεν καθορίστηκε κατά τη δημιουργία αντιγράφου ασφαλείας) και επαναφορά

    Pg_restore -dbname = mydb -jobs = 4 -verbose mydb.backup

    Επαναφορά αντιγράφου ασφαλείας βάσης δεδομένων συμπιεσμένης σε gz

    psql -U postgres -d mydb -f mydb

    Νομίζω ότι η βάση δεδομένων postgresql θα είναι τώρα πιο ξεκάθαρη σε εσάς. Ελπίζω ότι αυτή η λίστα με τις εντολές PostgreSQL ήταν χρήσιμη για εσάς.

    postgres = # ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ test_database; ΔΗΜΙΟΥΡΓΙΑ ΔΕΔΟΜΕΝΩΝ postgres = # ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗΣ test_user ΜΕ κωδικό πρόσβασης "qwerty"; ΔΗΜΙΟΥΡΓΙΑ ΡΟΛΟΥ postgres = # ΧΟΡΗΓΗΣΗ ΟΛΩΝ των δικαιωμάτων στη βάση δεδομένων test_database TO test_user; ΧΟΡΗΓΗΣΗ

    Για έξοδο από το κέλυφος, εισαγάγετε την εντολή \ q.

    Τώρα ας προσπαθήσουμε να συνεργαστούμε με τη βάση δεδομένων που δημιουργήθηκε για λογαριασμό του test_user:

    Psql -h localhost test_database test_user

    Ας δημιουργήσουμε έναν νέο πίνακα:

    Test_database => ΔΗΜΙΟΥΡΓΙΑ ΑΚΟΛΟΥΘΙΑ user_ids? ΔΗΜΙΟΥΡΓΙΑ ΑΚΟΛΟΥΘΙΑ test_database => ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙ χρηστών (id INTEGER PRIMARY KEY DEFAULT NEXTVAL ("user_ids"), σύνδεση CHAR (64), κωδικός CHAR (64)); ΕΙΔΟΠΟΙΗΣΗ: ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ / ΠΡΩΤΟΤΥΠΟ ΚΛΕΙΔΙ ΔΗΜΙΟΥΡΓΟΥΝ ΕΣΦΑΛΗ INDEX "users_pkey" FOR TABLE "users" CREATE TABLE

    Διαγραφή χρήστη

    Για να διαγράψετε έναν χρήστη, πρέπει να μεταφέρετε τα δικαιώματά του σε άλλον και στη συνέχεια να διαγράψετε μόνο

    ΕΠΑΝΑΡΤΗΣΗ ΙΔΙΟΚΤΗΤΗ ΜΕ καταδικασμένο_ρόλο ΣΤΟ διάδοχο_ρόλο. DROP IWNED BY doomed_role?

    - επαναλάβετε τις προηγούμενες εντολές για κάθε βάση δεδομένων στο σύμπλεγμα

    DROP ROLE doomed_role?

    Δημιουργία αντιγράφων ασφαλείας σεναρίου Postgres.

    #! / bin / bash DBNAMES = "ιστός"; USER = "postgres"; DB_NAME = "ιστός"; NEW_OWNER = "user_remote"; DATE_Y = ` / bin / date" +% y "` DATE_M = ` / bin / date" +% m "` DATE_D = ` / bin / date" +% d "` SERVICE = "pgdump" BACKUP_DIR = " / var / backup_db / 20 $ (DATE_Y) / $ (DATE_M) / $ (DATE_D) "mkdir -p $ BACKUP_DIR; για tbl στο `psql -qAt -c" επιλέξτε όνομα πίνακα από pg_tables όπου schemaname = "public"; " $ (DB_NAME) `\` psql -qAt -c "επιλέξτε όνομα_ αλληλουχίας από το information_schema.sequences where sequence_schema =" public ";" $ (DB_NAME) `\` psql -qAt -c "επιλέξτε όνομα_ πίνακα από το information_schema.views όπου table_schema =" δημόσιο ";" $ (DB_NAME) `; κάντε ηχώ "Εξαγωγή πίνακα $ tbl από db $ (DB_NAME) σε πίνακες αρχείων3 / $ tbl. backup" #pg_dump --format p --verbose --table public. $ tbl $ (DB_NAME)> $ BACKUP_DIR / $ tbl pg_dump - -διαμόρφωση p --verbose --table public. $ tbl $ (DB_NAME) | gzip> $ BACKUP_DIR / $ tbl #pg_dump -a -d -t public. $ tbl $ (DB_NAME)> tables3 / $ tbl.sql done ################### ΕΦΑΡΜΟΓΕΣ ΛΕΙΤΟΥΡΓΙΕΣ POSTGRES # Απορρίψτε τη βάση δεδομένων χωρίς ημερομηνία, προκειμένου να τις εξαγάγετε περαιτέρω από αυτήν pg_dump -Fc -s -f $ BACKUP_DIR / db_dump $ (DB_NAME) / bin / sleep 4; # Δημιουργία συνάρτησης λίστας pg_restore -l $ BACKUP_DIR / db_dump | grep FUNCTION> $ BACKUP_DIR / function_list ## Πώς να επαναφέρετε λειτουργίες ####################################pg_restore - h localhost -U username -d dbname -L function_list db_dump #########################

    Δημιουργία αντιγράφων ασφαλείας σεναρίου Postgres. γραμμένο σε περλ

    Εκτέλεση από κάτω από user'a - postgres. Εάν είναι σε κορώνες - τότε επίσης από κάτω από τον χρήστη postgresql.

    #! / usr / bin / env perl χρήση αυστηρή. χρήση προειδοποιήσεων. $ database_name = "book_library"; $ query μου =<<"EOT"; SELECT n.nspname as table_schema, c.relname as table_name FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ("r","") AND n.nspname NOT IN ("pg_catalog", "information_schema") AND n.nspname NOT LIKE "^pg_%" ; EOT $query =~ s/\n\s*/ /g; my @results = `echo "$query" | psql -At $database_name`; foreach (@results) { chomp; my ($schema, $table) = split /\|/, $_; next unless ($schema && $table); my $cmd = "pg_dump -U postgres -Fp -t $schema.$table -f $schema.$table.dump $database_name"; system($cmd); } #If you wanted to restore only a single function: ##pg_restore -U $username --dbname=$dbname --function=$functionname(args) #If you wanted to restore only a single table: ##pg_restore -U $username --dbname=$dbname --table=$tablename

    Λεξικά αναζήτησης πλήρους κειμένου σε postgresql

    Δημιουργία αντιγράφων ασφαλείας βάσης δεδομένων από απομακρυσμένο μηχάνημα

    PGPASSWORD = "PASSWORD" pg_dump -h $ HOSTNAME -U databaseuser -U -Fc --verbose "database.itc-life.ru" | gzip> databasename.gz

    Δημιουργία αντιγράφων ασφαλείας και επαναφορά πινάκων

    V PostgreSQLυπάρχουν δύο βοηθητικά προγράμματα για αντιγράφων ασφαλείας pg_dump και pg_dumpall. Το pg_dump χρησιμοποιείται για τη δημιουργία αντιγράφων ασφαλείας μιας βάσης δεδομένων, το pg_dumpall χρησιμοποιείται για τη δημιουργία αντιγράφων ασφαλείας όλων των βάσεων δεδομένων και του διακομιστή στο σύνολό του (πρέπει να εκτελείται στον υπερχρήστη postgresql).

    Δημιουργία εφεδρικής βάσης δεδομένων mydb, συμπιεσμένο

    Pg_dump -h localhost -p 5432 -U someuser -F c -b -v -f mydb.backup mydb

    Δημιουργία εφεδρικής βάσης δεδομένων mydb, με τη μορφή ενός κανονικού αρχείου κειμένου, συμπεριλαμβανομένης μιας εντολής για τη δημιουργία μιας βάσης δεδομένων

    Pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.backup mydb

    Δημιουργία εφεδρικής βάσης δεδομένων mydb, σε συμπιεσμένη μορφή, με πίνακες που περιέχουν το όνομα πληρωμές

    Pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t * πληρωμές * -f pages_tables.backup mydb

    Απόρριψη δεδομένων μόνο από έναν συγκεκριμένο πίνακα. Εάν πρέπει να δημιουργήσετε ένα αντίγραφο ασφαλείας πολλών πινάκων, τότε τα ονόματα αυτών των πινάκων παρατίθενται χρησιμοποιώντας το κλειδί -tγια κάθε τραπέζι.

    Pg_dump -a -t -table_name -f αρχείο_name_namename_name

    Δημιουργία αντιγράφου ασφαλείας με συμπίεση μέσα gz

    pg_dump -h localhost -O -F p -c -U postgres mydb | gzip -c> mydb.gz

    Μια λίστα με τις πιο συχνά χρησιμοποιούμενες επιλογές:

    H host - host, αν δεν καθορίζεται τότε χρησιμοποιείται localhost PGHOST.

    Θύρα P - θύρα, αν δεν έχει καθοριστεί τότε χρησιμοποιείται 5432 ή μια τιμή από μια μεταβλητή περιβάλλοντος PGPORT.

    U - χρήστης, εάν δεν έχει καθοριστεί, τότε χρησιμοποιείται ο τρέχων χρήστης, επίσης η τιμή μπορεί να καθοριστεί στη μεταβλητή περιβάλλοντος PGUSER.

    Τα δεδομένα, τα δεδομένα και το σχήμα αποθηκεύονται μόνο από προεπιλογή.

    Β - συμπεριλάβετε μεγάλα αντικείμενα (ιστολόγια) στην χωματερή.

    S, -μόνο για το σχήμα -σχήμα χωματερή μόνο.

    C, --create -προσθέτει μια εντολή για τη δημιουργία μιας βάσης δεδομένων.

    C - προσθέτει εντολές για απόθεση αντικειμένων (πίνακες, προβολές κ.λπ.).

    O - μην προσθέτετε εντολές για να ορίσετε τον κάτοχο ενός αντικειμένου (πίνακες, προβολές κ.λπ.).

    F, --μορφή (c | t | p) -μορφή χωματερή εξόδου, έθιμο, πίσσα,ή απλό κείμενο.

    T, --table = TABLE -καθορίστε έναν συγκεκριμένο πίνακα για απόρριψη.

    V, --verbose -εξάγετε λεπτομερείς πληροφορίες.

    D, --αναφορά -ένθετα -απόρριψη χρησιμοποιώντας την εντολή ΕΙΣΑΓΕΤΕμε μια λίστα με ονόματα ιδιοκτησίας.

    Δημιουργήστε αντίγραφα ασφαλείας όλων των βάσεων δεδομένων χρησιμοποιώντας την εντολή pg_dumpall.

    Pg_dumpall> all.sql # έλεγχος αντιγράφων ασφαλείας grep "^ [\] connect" all.sql \ connect db1 \ connect db2

    Η PostgreSQL διαθέτει δύο βοηθητικά προγράμματα για ανάκτησηβάσεις από backup.

    • psql- επαναφορά αντιγράφων ασφαλείας που είναι αποθηκευμένα σε ένα απλό αρχείο κειμένου.
    • pg_restore- ανάκτηση συμπιεσμένων αντιγράφων ασφαλείας (πίσσα).

    Ανάκτηση βάσης δεδομένων και

    #pg_restore -v -e -d dbname dbname.dump

    Επαναφορά ολόκληρου του αντιγράφου ασφαλείας, αγνοώντας σφάλματα

    Psql -h localhost -U someuser -d dbname -f mydb.sql

    Επαναφορά ολόκληρου του αντιγράφου ασφαλείας, διακοπή στο πρώτο σφάλμα

    psql -h localhost -U someuser -ρύθμιση ON_ERROR_STOP = σε -f mydb.sql

    Για να συνέλθει από πίσσα-arichiva πρέπει πρώτα να δημιουργήσουμε μια βάση δεδομένων χρησιμοποιώντας CREATE DATABASE mydb. (εάν η επιλογή -C δεν καθορίστηκε κατά τη δημιουργία αντιγράφου ασφαλείας) και επαναφορά

    Pg_restore --dbname = mydb --jobs = 4 --verbose mydb.backup

    Επαναφορά συμπιεσμένου αντιγράφου ασφαλείας βάσης δεδομένων gz

    Gunzip mydb.gz psql -U postgres -d mydb -f mydb

    Από την έκδοση 9.2, μόνο η δομή των πινάκων μπορεί να αποκατασταθεί χρησιμοποιώντας την επιλογή -τμήμα

    # Δημιουργία βάσης δεδομένων ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ mydb2; #αναρρώνω pg_restore --dbname = mydb2 --section = pre-data --jobs = 4 mydb.backup

    Συντήρηση τραπεζιού

    Πίνακας ΑΝΑΛΥΣΗΣ ΚΕΝΟΥ? ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ REINDEX dbName; Καρτέλα REINDEX ΠΙΝΑΚΑΣ Όνομα;

    Μετακίνηση του καταλόγου δεδομένων

    Μάθετε την τρέχουσα διαδρομή

    # μέθοδος 1 $ su - postgres $ psql psql> SHOW data_directory; # μέθοδος 2 $ ps ax | grep "postgres -D"

    Ας δημιουργήσουμε έναν νέο κατάλογο, να εκχωρήσουμε έναν χρήστη και να προετοιμάσουμε

    mkdir -p / pathto / postgresql / data chown -R postgres: postgres / pathto / postgresql su -postgres initdb -D / pathto / postgresql / data

    Τώρα πρέπει να διορθώσετε το αρχείο με την υπηρεσία που ξεκινά postgresql

    # under arch linux sudo vim /etc/systemd/system/multi-user.target.wants/postgresql.service Environment = PGROOT = / pathto / postgresql / PIDFile = / pathto / postgresql / data / postmaster.pid

    Εκκαθάριση του τραπεζιού

    Εκκαθάριση του τραπεζιού όνομα πίνακακαι επαναφορά του μετρητή με αναγνωριστικό.

    TRUNCATE TABLE tablename RESTART IDENTITY CASCADE;

    ΑΛΛΗΛΟΥΧΙΑχρειάζεται σε περίπτωση όνομα πίνακασυνδεδεμένο με άλλο πίνακα.

    Κατάργηση του NULL από ένα πεδίο

    Ταινίες ALTER TABLE ALTER COLONN έτος DROP NOT NULL?

    Έναρξη pgbouncer

    su -s / bin / sh -postgres -c " / usr / sbin / pgbouncer -d --verbose /etc/pgbouncer/pgbouncer.ini"

    Αποσυνδέστε τους χρήστες από τη βάση δεδομένων

    SELECT pg_terminate_backend (pid) FROM pg_stat_activity WHERE datname = "mydb"; "