[#] Kopia baz Mysql

( Ostatnio zmieniony ndz., 01/06/2008 - 11:32 )
 

backup_mysql_db_a­ll.sh

#!/bin/sh

# Skrypt do wykonywania backupów baz danych z serwera MySQL
#
# deklaracja zmiennych lokalnych skryptu
#

# określenie dnia tygodnia oraz czasu backupu
dd=`date +%d-%b-%Y-godzina-%T`

# preparowanie nazwy katalogu rok-miesiąc, np.: 2008-05
year_month=`date +%Y-%m`

# ścieżka docelowa dla BACKUP-ów
dst=`dirname $0`/moja_domena/$year_month
## dst=/mnt/BACKUP/BAZY/$year_month

# program do pobranie baz danych
mysql=/usr/bin/mysql
mysqldump=/usr/bin/mysqldump
grep=/bin/grep
gzip=/bin/gzip
mkdir=/bin/mkdir

# dane serwera
db_server=sql.domena.nazwa.pl
db_port=3305
db_ssl=true
db_user="root"
db_pass="hasełko"

# określenie usera+hasło dostępu do baz danych
mybckp="-u $db_user --password=$db_pass -h $db_server  -P $db_port --ssl=$db_ssl"

# flagi dla mysqldump
flags="-Cclq --add-drop-table $mybckp"

# pętla po wszystkich bazach danych
for mdb in `$mysql $mybckp -B -e 'show databases' | $grep -v Database `; do
        # zrzucenie struktury oraz danych z bazy $mdb
        # objaśnienia do switch'y dumpera:
        # -C    kompresja połączenia
        # -c    pełne polecenie insert
        # -l    zablokowanie tabel do czytania
        # -q    szybko - bez buforowania zapytania
        # --add-drop-table      dodanie polecenia "zrzucania" tabel
        # -u    jako użytkownik
        echo -n "Baza danych: $mdb"

        # sprawdzenie, czy istnieje katalog z backupem bazki
        if [ ! -d $dst/$mdb ]; then
                echo -n " (Tworzenie katalogu $dst/$mdb)... "
                $mkdir -p $dst/$mdb
                chmod o-rwx $dst/$mdb
        fi

        # wykonanie backup'u
        $mysqldump $flags $mdb | $gzip -c > $dst/$mdb/$mdb-$dd.gz
        chmod o-rwx $dst/$mdb/$mdb-$dd.gz
        echo "Zrobione!"
done


# komunikat końcowy
echo "Kopia baz danych MySQL wykonana..."

Jeśli nie potrzebujesz katalogowania a jedynie chcesz wykonać zrzut bazy danych do pliku, polecam polecenie:

mysqldump --add-drop-table -u USER -p NAZWA_BAZY > baza.sql

co później przywrócić można nastepująco:

mysql -u USER -p NAZWA_BAZY -p < baza.sql

Opcja -p sugeruje mysql aby poprosił o hasło. Oczywiście można użyć hasła w linii komend (jeśli chcemy np. użyć polecenia w skrypcie), wtedy zamiast -p użyj --password=TWOJE_HASŁO

Twoja ocena: Brak Średnio: 4 (1 vote)

Dodaj nową odpowiedź

Informacja:

Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich, mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną. Upewnij się, że twoja wypowiedź nie godzi w niczyje mienie.

  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <strong> <blockquote> <code>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Więcej informacji na temat formatowania

Łapirobot
Proszę odpowiedzieć
Q
v
c
N
M
D
j
x
C
S
Enter the code without spaces and pay attention to upper/lower case.