複数のMySQLまたはMariaDBデータベースを自動的にバックアップ

前書き

この記事では、カスタムbashスクリプトを使用してcronジョブを設定し、同じマシンにある複数のMySQLまたはMariaDBデータベースをバックアップする方法について説明します。

データベースのバックアップ

Vultrインスタンスに、db-vultr-sitedb-vultr-blogdb-vultr-app という名前の3つのMySQLデータベースがあると想定します(これらのデータベースの作成について心配する必要はありません。名前を置き換えることができますあなたのためにそれらは以下のステップ2のスクリプトで使用されていました)

  1. MySQLまたはMariaDBデータベースにログオンし、クエリの下で実行して、db_user_backupsバックアップを処理するデータベースユーザーを作成します。

    GRANT LOCK TABLES, SELECT, SHOW VIEW, REPLICATION CLIENT ON *.* TO 'db_user_backups'@'%' IDENTIFIED BY '{COMPLEX-PASSWORD}';
    

    以下も実行して、ストアドプロシージャを適切に復元するようにMySQLが構成されていることを確認します

    SET GLOBAL log_bin_trust_function_creators = 1;
    
  2. 必要なディレクトリ構造と必要なファイルを設定する

    # create backup directory with environment and log file
    sudo mkdir /backups && cd /backups
    sudo touch .env db-backup.sh db-backup.log
    sudo chmod -R 775 /backups
    sudo chmod -R g+s /backups
    sudo chmod +x db-backup.sh
    
    # add mysql backup user credentials into environment file
    echo "export MYSQL_USER=db_user_backups" > /backups/.env
    echo "export MYSQL_PASS={COMPLEX-PASSWORD}" >> /backups/.env
    
  3. db-backup.sh nano /backups/db-backup.shを開き、以下のコードをその中に貼り付け、ファイルを保存します(Ctrl + X-> Y-> Enterキーを押します

    DB_NAMES=( 'db-vultr-site' 'db-vultr-blog' 'db-vultr-app' ) #replace with your own database name(s)
    BKUP_NAMES=()
    BKUP_DIR="/backups"
    
    # get total number of directories
    total_dbs=${#DB_NAMES[@]}
    
    # create backup file names
    for (( i=0; i<${total_dbs}; i++ )); do
        BKUP_NAMES[$i]="`date +%Y%m%d%H%M`-backup-$${DB_NAMES[$i]}.sql.gz"
    done
    
    # get backup users credentials
    source $BKUP_DIR/.env
    
    # create backups
    for (( i=0; i<${total_dbs}; i++ )); do
        # NOTE: --routines flag makes sure stored procedures are also backed up
        mysqldump --routines -u ${MYSQL_USER} -p${MYSQL_PASS} | gzip > ${BKUP_DIR}/${BKUP_NAMES[$i]}
    done
    

    上記のコードは、バックアップするデータベースの名前を含む配列をループし、それを実行しています。

Cronjobセットアップ

バックアップスクリプトを実行し、結果/出力をバックアップログに保存するcronjobを毎晩深夜に実行するように設定します。

  1. crontabを開く

    crontab -e
    
  2. 以下のエントリをcrontabに追加します

    0 0 * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

    注:テスト中は、以下のように1分ごとに実行するようにcronjobを設定できます

    * * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

    -または-5分ごと(5を必要な分数に置き換えます)

    */5 * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

次は何ですか

データベースを実行している同じサーバー上ではなく、地理的に異なる場所にあるサーバー上にバックアップが必要な場合があります。SFTPの使用から、そこにある無数のクラウドストレージプロバイダーが提供するカスタムツールの使用まで、これを行う方法はいくつかあります。ここで説明するRsyncは1つの優れた代替手段です-vultr.com/docs/setup-file-mirroring-using-rsync-in-debian-ubuntu

ラミアダボニャン脚本の作品



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。