Σφάλμα Σύνδεσης Με Βάση Δεδομένων Και Έλλειψη Χώρου Σε Server

Εάν ξαφνικά το site σας δεν μπορεί να συνδεθεί με τη βάση δεδομένων, υπάρχει ενδεχόμενο αυτό να οφείλεται στην έλλειψη διαθέσιμου χώρου στον server εξαιτίας του οποίου, το service MySQL δε μπορεί να ξεκινήσει.

Αφού συνδεθούμε στον σέρβερ, ελέγχουμε την κατάσταση της MySQL με την εντολή:

Θα δούμε ότι είναι «Inactive».

Στη συνέχεια, ελέγχουμε το διαθέσιμο χώρο με την εντολή:

Η εντολή θα επιστρέψει κάτι σαν το παρακάτω:

Βλέπουμε ότι στον server έχουν μείνει διαθέσιμα 12Mb και ότι χρησιμοποιείται το 100% του χώρου. Θα πρέπει να διαγράψουμε αρχεία από τον server που δε χρειαζόμαστε. Αν δε μπορούμε άμεσα να σβήσουμε αρχεία στον σέρβερ, μία καλή λύση είναι να ελέγξουμε το χώρο που καταλαμβάνουν τα logs και να τα διαγράψουμε.

Αφού κάνουμε sudo su, ελέγχουμε το χώρο που καταλαμβάνουν τα logs με την εντολή:

Θα δούμε ότι τα logs, μπορεί να φτάσουν να καταλαμβάνουν αρκετά gigabyte του δίσκου!

Για να βρούμε ποια logs έχουν μέγεθος πάνω από π.χ. 200MB, χρησιμοποιούμε την παρακάτω εντολή:

Αν υπάρχουν αρχεία με μέγεθος πάνω από 200MB τότε θα εμφανιστούν σε μία λίστα ως εξής:

Εφόσον είστε απόλυτα σίγουροι ότι οι πληροφορίες μέσα στα logs δε σας χρειάζονται, μπορείτε να τα «αδειάσετε» με την εντολή:

Το «>» δε διαγράφει το αρχείο αλλά διαγράφει τα περιεχόμενά του.

Μπορείτε να συνεχίσετε την ίδια διαδικασία με μικρότερα αρχεία, π.χ. 50Mb

Για να αποφύγετε στο μέλλον την εμφάνιση του προβλήματος, θα μπορούσατε να χρησιμοποιήσετε το logrotate ή να χρησιμοποιήσετε κάποιο script που θα σας στέλνει email όταν π.χ. το 90% του χώρου του σέρβερ χρησιμοποιείται.

Αντιγραφή Δεδομένων Από Μια Βάση Δεδομένων Σε Άλλη

Υπάρχουν περιπτώσεις όπου κατά τη διάρκεια ανάπτυξης κάποιου web project δημιουργούμε ένα αντίγραφο της ενεργής βάσης δεδομένων και το χρησιμοποιούμε για την ανάπτυξη της ιστοσελίδας/εφαρμογής.

Κατά τη διαδικασία ανάπτυξης, τυχαίνει να μεταβληθούν δεδομένα μόνο από ορισμένα tables της βάσης. Όταν έρθει η στιγμή να ενσωματώσουμε τα δεδομένα της development βάσης δεδομένων στην ενεργή database, τότε θα μεταφέρουμε μόνο τα δεδομένα του ή των table που έχουν αλλαγές.

Για το σκοπό αυτό, χρησιμοποιούμε τον παρακάτω κώδικα:

Ο παραπάνω κώδικας κάνει «update» τα δεδομένα στο «table1» της ενεργής βάσης «livedb» με αυτά στο «table2» της «developmentdb» βάσης δεδομένων που χρησιμοποιήθηκαν για την ανάπτυξη του web project. Για το update, στο WHERE clause θέτουμε ότι τα IDs των δύο tables είναι τα ίδια.

 

Δημιουργία Αντιγράφων Ασφαλείας Πολλών Βάσεων Δεδομένων

Σε περίπτωση που διαχειρίζεστε server με πολλές βάσεις δεδομένων, θα έχετε πιθανότατα έρθει αντιμέτωποι με το πρόβλημα της δημιουργίας αντίγραφων ασφαλείας.

Αν έχετε 2-3 βάσεις δεδομένων μπορείτε να χρησιμοποιήσετε το phpMyAdmin, να κάνετε κλικ στο όνομα της κάθε βάσης δεδομένων, μετά κλικ στο «Export» tab και μετά να κατεβάσετε στον σκληρό σας δίσκο την database. Αν όμως έχετε 10, 20, 30 ή και παραπάνω βάσεις δεδομένων, αυτή η διαδικασία είναι πολύ χρονοβόρα.

Εναλλακτικά, μπορείτε να δημιουργήσετε ένα αρχείο κειμένου (.txt document) μέσα στο οποίο θα αποθηκεύσετε τον ακόλουθο κώδικα:

Η εντολή mysqldump δημιουργεί ένα αντίγραφο της βάσης δεδομένων (vasi_dedomenwn_1, vasi_dedomenwn_2 κλπ) και το αποθηκεύει ως αρχείο .sql (vasi_dedomenwn_1.sql, vasi_dedomenwn_2.sql κλπ).

Για αρχή λοιπόν, δημιουργήστε ένα .txt αρχείο στο οποίο σε κάθε σειρά θα έχετε την κάθε βάση του server σας που θέλετε να αποθηκεύσετε. Αυτό το αρχείο θα το χρησιμοποιήσουμε στην πορεία.

Διαβάστε το υπόλοιπο άρθρο »