多くの人と同じようにやっています。
<オール>
スクリプトは、MySql データベースをホストするマシン (Linux マシン) で実行する必要があります。
=> このマシン "A" にローカルの bash または perl スクリプト (または何でも) "myscript" を作成します
バックアップは、データベースが存在する同じサーバーに保存する必要があります。
=> スクリプト「myscript」では、mysqldump を使用できます .ローカル バックアップから、tarball を作成できます scp 経由で送信する リモートマシンに。最後に、バックアップ スクリプトを crontab に入れることができます (crontab -e).
スクリプト全体を投稿しないため、開始するためのいくつかのヒントと機能を紹介します。完全には機能しませんが、それほど遠くはありません :
#!/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
}
次に、「日付」より古いファイルを削除するには、man find を参照してください。 mtime に注目してください そして新しい オプション。
編集:前に述べたように、tarball を簡単に送信し、送信時に削除できるようにするための一時ファイルを除いて、ローカル バックアップを行うことに特に関心はありません。
以下のようなシェル スクリプトを作成します。
#!/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
ユーザー名、パスワード、およびバックアップ ディレクトリ (my_dir) を置き換えます。 filename.sh としてディレクトリ (shell_dir) に保存します
crontab -e like を使用して毎日実行するようにスケジュールします:
30 8 * * * /shell_dir/filename.sh
これは毎日午前 8 時 30 分に実行され、データベースをバックアップします。また、10 日より古いバックアップも削除されます。そうしたくない場合は、スクリプトから最後の行を削除してください。
答え :クローン
説明 :
これを使用して、something.sh ファイルを作成してみてください:
#!/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 {} \;
ファイルに適切な権限を与える
chmod 700 mysqlrespaldo.sh
または
sudo chmod 700 something.sh
そして
でcronを作成します crontab -e
のように設定します
**0 1 * * *** /home/youruser/coolscripts/something.sh
数字または「*」文字の構造は次のとおりです:
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