Melakukan hal yang hampir sama seperti kebanyakan orang.
-
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" -
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