GNU/Linux >> Linux の 問題 >  >> Linux

Linuxサーバー上のMySQLデータベースを自動的にバックアップします

多くの人と同じようにやっています。

<オール>
  • スクリプトは、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
    
    }
    

    次に、「日付」より古いファイルを削除するには、ma​​n 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
    

    Linux
    1. SQLServerデータベースリカバリモデル

    2. Ubuntu で MySQL データベースのバックアップをスケジュールする方法

    3. MySQL スレーブ データベースの構成方法

    1. MySQL バックアップ 1.2 (MySQL 5.5+)

    2. データベース バックアップ用の Linux シェル スクリプト

    3. ランサムウェア耐性のある Linux Samba ファイル サーバー

    1. MySQLサーバーの5つの最高の無料代替品

    2. MySQLデータベースサーバーへのリモート接続を許可する方法

    3. データベースをローカルMySQLインスタンスにインポートする