GNU/Linux >> Belajar Linux >  >> Linux

Backup database MySQL secara otomatis di server linux

Melakukan hal yang hampir sama seperti kebanyakan orang.

  1. Skrip perlu dijalankan di mesin yang menghosting database MySql (Ini adalah mesin linux).
    => Buat skrip bash atau perl lokal (atau apa pun) "myscript" di mesin ini "A"

  2. Cadangan harus disimpan ke server yang sama dengan tempat database berada.
    => pada script "myscript", anda cukup menggunakan mysqldump . Dari cadangan lokal, Anda dapat membuat tarball yang Anda kirimkan melalui scp ke mesin jarak jauh Anda. Terakhir, Anda dapat memasukkan skrip cadangan ke crontab (crontab -e).

Beberapa petunjuk dan fungsi untuk membantu Anda memulai karena saya tidak akan memposting seluruh skrip saya, itu tidak sepenuhnya melakukan trik tetapi tidak jauh:

#!/bin/sh
...
MYSQLDUMP="$(which mysqldump)"   
FILE="$LOCAL_TARBALLS/$TARBALL/mysqldump_$db-$SNAPSHOT_DATE.sql"  
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db > $FILE && $GZIP $GZ_COMPRESSION_LEVEL $FILE   

function create_tarball()
{
local tarball_dir=$1
tar -zpcvf $tarball_dir"_"$SNAPSHOT_DATE".tar.gz" $tarball_dir >/dev/null
return $?
}

function send_tarball()
{
local PROTOCOLE_="2"
local IPV_="4"
local PRESERVE_="p"
local COMPRESSED_="C"
local PORT="-P $DESTINATION_PORT"
local EXECMODE="B"

local SRC=$1
local DESTINATION_DIR=$2
local DESTINATION_HOST=$DESTINATION_USER"@"$DESTINATION_MACHINE":"$DESTINATION_DIR

local COMMAND="scp -$PROTOCOLE_$IPV_$PRESERVE_$COMPRESSED_$EXECMODE $PORT $SRC $DESTINATION_HOST &"

echo "remote copy command: "$COMMAND
[[ $REMOTE_COPY_ACTIVATED = "Yes" ]] && eval $COMMAND

}

Kemudian untuk menghapus file yang lebih lama dari "tanggal", Anda dapat melihat man find dan fokus pada waktu dan lebih baru opsi.

Sunting:seperti yang dikatakan sebelumnya, tidak ada minat khusus untuk melakukan pencadangan lokal kecuali file temporer agar dapat mengirim tarball dengan mudah dan menghapusnya saat dikirim.


Buat skrip shell seperti di bawah ini:

#!/bin/bash
mysqldump -u username -p'password' dbname > /my_dir/db_$(date+%m-%d-%Y_%H-%M-%S).sql
find /mydir -mtime +10 -type f -delete

Ganti nama pengguna, kata sandi, dan direktori cadangan Anda (my_dir). Simpan di direktori (Shell_dir) sebagai filename.sh

Jadwalkan untuk dijalankan setiap hari menggunakan crontab -e like:

30 8 * * * /shell_dir/filename.sh

Ini akan berjalan setiap hari pada jam 8:30 pagi dan mencadangkan database. Ini juga menghapus cadangan yang lebih lama dari 10 hari. Jika Anda tidak ingin melakukannya, hapus saja baris terakhir dari skrip.


Jawab :Sebuah cron

Deskripsi :

Coba buat file something.sh dengan ini:

 #!/bin/sh
 mysqldump -u root -p pwd --opt db1.sql > /respaldosql/db1.sql
 mysqldump -u root -p pwd --opt db2.sql > /respaldosql/db2.sql
 cd /home/youuser/backupsql/
 tar -zcvf backupsql_$(date +%d%m%y).tgz *.sql
 find -name '*.tgz' -type f -mtime +2 -exec rm -f {} \;

Berikan izin yang memadai untuk file tersebut

 chmod 700 mysqlrespaldo.sh

atau

 sudo chmod 700 something.sh

lalu buat cron dengan

 crontab -e

mengaturnya seperti

 **0 1 * * *** /home/youruser/coolscripts/something.sh

Ingatlah bahwa angka atau karakter '*' memiliki struktur ini:

Minutes (range 0-59)
Hours (0-23)
Day of month (1-31)
Month (1-12)
Day of the week (0-6 being 0=Domingo)
Absolute path to script or program to run

Linux
  1. 5 Pengganti Gratis Terbaik untuk Server MySQL

  2. Impor Database ke Instans MySQL Lokal

  3. Backup dan Restore Database MySQL menggunakan mysqlhotcopy

  1. Cara Mengizinkan Koneksi Jarak Jauh ke Server Database MySQL

  2. Model pemulihan basis data SQL Server

  3. Pencadangan MySQL 1.2 (MySQL 5.5+)

  1. Cara menjadwalkan pencadangan basis data MySQL di Ubuntu

  2. Cara mengonfigurasi Database Budak MySQL

  3. Skrip shell Linux untuk cadangan basis data