説明
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ファイルができていると思います。
コメント