シェルスクリプトで、mysqldumpする(MySQL5.7コンテナ)

DB

説明

MySQL5.7コンテナのDBデータのバックアップをシェルスクリプトからしたいと思いまとめました。
シェルスクリプトにしとけば、cronで毎日バックアップするなど今後にも展開できます。

環境

・CentOS7
・Docker(MySQL5.7コンテナ)
・MySQLクライアント(ver.5.7)

MySQL5.7のクライアントのインストール

今回はMySQL5.7なので、5.7用のクライアントをインストールします。
MySQL8.0クライアントからMySQL5.7serverでmysqldumpを実行するとエラーやらなんやらでるので、バージョンは揃えておいた方がいいと思います。

$ sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
$ sudo yum-config-manager --disable mysql80-community
$ sudo yum-config-manager --enable mysql57-community
$ sudo yum install mysql-community-client
$ mysql --version
mysql  Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using  EditLine wrapper

MySQLコンテナのホストIPを調べる

$ sudo docker exec [MySQLコンテナ名|MySQLコンテナID] /bin/hostname -i
xxx.xx.x.x

シェルスクリプトの作成

※下記のスクリプトで、各自ユーザ、パス、ホスト、ポートを変更してください。

$ vi mysqldump.sh
#!/bin/sh

# mysqlのコンテナで、バックアップのためのmysqldumpします。

DBUSER='fafa'
DBPASSWORD='hogehoge'
DBHOST='xxx.xx.x.x'
DBNAME='db_name'
PORT='3306'
DATETIME=`date +%Y%m%d`

echo $DATETIME

SQL="mysqldump -h $DBHOST -P $PORT -u $DBUSER -p$DBPASSWORD --no-tablespaces $DBNAME > /var/backup/dbdata/$DATETIME.sql"
eval $SQL

バックアップの保存場所作成

$ mkdir /var/backup
$ mkdir /var/backup/dbdata

権限の変更

$ chmod +x mysqldump.sh

実行

$ sh mysqldump.sh

うまくいけば、/var/backup/日付月時間.sqlファイルができていると思います。

コメント

タイトルとURLをコピーしました