メインコンテンツへ移動

MySQLのデータバックアップとリストア

データバックアップ​

  1. バックアップコマンドを実行します。

    docker exec -it $(docker ps | grep -E 'mingdaoyun-hdp' | awk '{print $1}') bash -c 'source /entrypoint.sh && backup mysql'

    成功すると、以下のメッセージが出力されます(コンテナ内の保存パス):

    backup mysql saved to /data/backup/20240117130609/mysql
    backup log saved to /data/backup/20240117130609/backupMysql.log
  2. バックアップファイルをホスト側のディレクトリ(/data/backup)へコピーします。

    mkdir -p /data/backup
    docker cp $(docker ps | grep -E 'mingdaoyun-hdp' | awk '{print $1}'):/data/backup/20240117130609 /data/backup/

データリストア​

  1. HDPサービスを停止します。マネージャのルートディレクトリで下記コマンドを実行します。

    bash ./service.sh stopall
  2. MySQLの元データディレクトリを削除します(デフォルト: /data/mingdao/script/volume/data/mysql)。

    mv /data/mingdao/script/volume/data/mysql /data/backup/mysql_$(date +%Y%m%d%H%M%S)
  3. 一時コンテナを起動し、データディレクトリをマウントします(実際に使用するイメージのアドレスとバージョンに置き換えてください)。

    docker run -it --rm --entrypoint bash -e ENV_MYSQL_HOST="127.0.0.1" -e ENV_MYSQL_PORT="3306" -e ENV_MYSQL_USERNAME="root" -e ENV_MYSQL_PASSWORD="123456" -v /data/mingdao/script/volume/data/:/data/ -v /data/backup/:/data/backup/ registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc:3.2.0
  4. ディレクトリを作成します。

    mkdir -p /data/{logs,mysql}
  5. 一時コンテナ内でMySQLを起動します。

    source /entrypoint.sh && mysqlStartup &
  6. MySQL データベースを復元します(/data/backup/20240117130609/mysql を実際のパスに置き換えてください)。

    source /entrypoint.sh && restore mysql /data/backup/20240117130609/mysql
  7. 実行が完了したら、一時コンテナから退出します。

    exit