HOME  /Synology
 /mysqldumpでMariaDBを定期的にバックアップする方法
2020年06月22日

mysqldumpでMariaDBを定期的にバックアップする方法

定期的にバックアップタスクを実行する為には下記の「タスクスケジューラ」の機能を利用します。

タスクスケジューラの中に定期的に動く「バックアップタスク」を作成します。

この「バックアップタスク」の中で指定した「シェルスクリプト」を使ってMySQLのDBをバックアップします。

 

1.全体の流れと基本サンプル

下記サンプルは最低限の事だけを記述しています。これで全体の動きを理解して下さい。

1-1.タスクスケジューラの中に下記コマンドを登録します。

sh /volume1/web/mysql_backup/mysql.sh>>/volume1/web/mysql_backup/mysql_backup.log

■sh /volume1/web/mysql_backup/mysql.sh
これは指定ディレクトリの中にある「mysql.sh(シェルスクリプト)」を実行しなさい。という意味です。

■>>/volume1/web/mysql_backup/mysql_backup.log
これはログを指定ディレクトリの中の「mysql_backup.log(ログファイル)」に書き込みなさいという意味です。

 

1-2.シェルスクリプト(mysql.sh)に記述されている内容

シェルスクリプトの記述方法は、DSMのバージョンによって異なります。

下記サンプルはDSM6系でMariaDB10のDBをバックアップする時のシェルスクリプト例です。

#job1(oldies)のバックアップ
/usr/local/mariadb10/bin/mysqldump --single-transaction --databases oldies --user=×× --password=×× > /volume1/web/mysql_backup/out_oldies.sql

#バックアップログの書き出し
echo 'oldies=' $?

■「mysqldump」はmysqlをバックアップするコマンドです。ダンプした結果は「out_oldies.sql」ファイルとして書き出されます。

■「mysqldump」の実行結果(エラーコード)は「$?」で出力されます。

 

1-3.mysql_backup.logに書かれたログの例

oldies= 0

 

基本の流れは上記になります。下記に詳細な内容を解説していきます。

 

2.具体的なバックアップタスクの作成方法

1.バックアップフォルダを作成する

①File Stationを開いて、Webフォルダを開いてください。

 

 

②Webフォルダを選択して「作成→新規フォルダの作成」で「mysql_backup」フォルダを作成してください。

フォルダ名は任意ですが大文字小文字は識別しますので小文字が推奨です。

この「mysql_backup」フォルダの中に

■MySQLのDBをバックアップする「スクリプト

■バックアップされた「sqlファイル

■バックアップタスクの実行結果の「ログファイル

が入ります。

2.バックアップスクリプトを作成する。

「mysql_backup.sh」のファイル名でmysqldumpを使ったシェルスクリプトを作成します。

 

2-1.mysqldumpの基本形

mysqldump オプション  > /フォルダ名/ファイル名.sql

 

2-2.mysqldumpプログラムの場所

「mysqldump」プログラムは「DSMのバージョン」や「ターゲットDB」によって利用するプログラムの保存場所が異なります。

MariaDB5 MariaDB10
DSM5.2 /usr/syno/mysql/bin/mysqldump
DSM6.0 /usr/bin/mysqldump
DSM6.1
以降
/usr/bin/mysqldump /usr/local/mariadb10/bin/mysqldump

例①DSMのバージョンが6系でMaraiDB5にあるoldiesDBをダンプする場合は下記になります。

/usr/bin/mysqldump --databases oldies --user=×× --password=×× > /volume1/web/db_backup/mysql_oldies.sql

例②DSMのバージョンが6系でMaraiDB10にあるoldiesDBをダンプする場合は下記になります。

/usr/local/mariadb10/bin/mysqldump --databases oldies --user=×× --password=×× > /volume1/web/db_backup/mysql_oldies.sql

 

2-3.mysqldumpのオプション(抜粋)

オプション 説明
–single-transaction このオプションはデータのダンプ前に、トランザクション分離モードをREPEATABLE READに設定し、START TRANSACTION SQL ステートメントをサーバーに送信します。

よってアプリケーションをブロックすることなく、START TRANSACTIONが発行された時点のデータベースの一貫した状態をダンプします。

–databases ダンプを取るDB名です。(複数データベースの指定も可)
–user= phpMyAdminのログインユーザ名を記述します。
–password= 上記ユーザのパスワードを記述します。

 

2-4.サンプルスクリプト 

#旧バックアップファイルの削除
cd /volume1/web/mysql_backup/
rm *.sql

#job_errのリセット
job_err=false
#oldiesのバックアップ
/usr/local/mariadb10/bin/mysqldump --single-transaction --databases 〇〇 --user=root --password=×× > /volume1/web/mysql_backup/out_oldies.sql
if [ $? = 0 ]; then
 job1=0
else
 job1=$? job_err=true
fi
#ec01のバックアップ
/usr/local/mariadb10/bin/mysqldump --single-transaction --databases ×× --user=root --password=×× > /volume1/web/mysql_backup/out_ec01.sql
if [ $? = 0 ]; then
  job2=0
else
 job2=$? job_err=true
fi
#日付及びバックアップ結果の出力
date_stamp=`date '+%Y-%m-%d %H:%M'`
echo "#"$date_stamp
echo '  〇〇=' ${job1} ',××=' ${job2} 

#終了処理(エラーがある場合は1でリターン)
if [ $job_err = true ]; then
  exit 1
else
  exit 0
fi

※1.上記は「MariaDB10」にある「〇〇」と「✖✖」DBを「mysqldump」でダンプしています。

※2.jobを実行した後にエラーがあったか否かを判断して変数に値をセットしています。

※3.job1又はJob2にエラーがあった場合はjob_errがセットさせるのでexit 1で終了させ、タスクスケジューラにエラーがあった事を通知しています。

 ­シェルスクリプト作成時の注意点

①シェルスクリプトを実行するのはLinuxサーバになりますので改行は<LF>のみです。

Windowsのメモ帳を使うと改行は<LF><CR>になりますので正常に動きません。
EmEditorでスクリプトを作成する場合は『名前を付けて保存』時に改行方法指定で<LFのみ>で保存
して下さい。

何れにしてもスクリプトの作成ツールは改行が<LF>にできるテキストエディタを使ってください。

参考EmEditor Free版のインストールと利用事例

②スペースは必ず半角スペースを使ってください。全角スペースは誤動作の原因になります。

尚、数値の代入は、スペースを入れてはいけない所です。

一方、if文は、スペースが必要な所です。

詳細は「シェルスクリプトの書き方」を調べてください。

〇の例 job_err=true 及び if [ $job_err = true ]; then

×の例 job_err = true 及び if [$job_err=true]; then

③シェルスクリプトの変数名には「ハイフン」は使えません。「アンダースコア」を使ってください。

④mysqldumpの場所はDSMのバージョンやターゲットDBによって異なりますので気を付けて下さい。

 

3.タスクスケジューラに上記のスクリプトを実行するタスクを作成し実行する。

コントロールパネルからタスクスケジューラを起動します。

①下記画面の作成ボタン→予約タスク→『ユーザ指定のスクリプト』を実行します。

 

②下記画面が表示されます。全般タブにタスク名とユーザ名を選択します。

※1.タスク名の所は判り易いタスクの名前を入れて下さい

※2.ユーザの所はMariaDBにアクセスできるユーザ名を選択します。

 

③タスク設定タブ画面を開いてください。

※1.『Eメールで詳細な実行情報を送信』にチェックを入れると、無条件に指定したメールに実行結果が通知されます。

※2.『スクリプトが異常終了した場合のみ詳細な実行情報を送信』にチェックを入れるとエラーがあった時だけメールが送られるようになります。

­ ­メモ

エラー連絡は、スクリプトの終了時に下記を指定すると実現できます。

exit 1:エラーがあった事を通知します。

exit 0 :エラーが無かった事を通知します。

※3.ユーザ指定のスクリプトの所に実行するスクリプトとログファイルを記述します。

sh /volume1/web/mysql_backup/mysql_backup.sh>>/volume1/web/db_backup/mysql_log.txt

先頭のshは標準のシェルを実行するコマンドです。

/volume1/web/mysql_backup/mysql_backup.shは、実行するシェルスクリプトです。

>>/volume1/web/mysql_backup/mysql_log.txtは実行結果のログを記載するログファイル名です。
>>は追記指定です。これを>にすると上書きになります。

 

④総ての入力が終わったら『OK』を挿入しジョブを登録し、実行ボタンで検証してください。

上記の実行ボタンを挿入して、正常にバックアップデータとログが書き込まれるか?を確認してください。 

<実行後のmysql_backupフォルダのファイル構成>

尚、mysl_log.txtは、メモ帳でなくEmEditorで開いてください。(改行が<LF>のみなので!)
またmysql_backup.sqlファイルもEmEditorで開くと、編集する事も可能です。 

 

⑤最後に、作成したユーザ指定スクリプトを呼び出し、スクジュールタブで実行時間と間隔を指定して下さい。

以上で定期的なMySQLDBのバックアップが完了しました。

­ ­メモ

上記のスクリプトはMariaDBに入っている特定DBをSQLファイルでダンプしただけです。

WordPressは上記のDBとWeb直下にあるフォルダから構成されています。

よって上記スケジューラが走った後で、下記の何れかのバックアップを実行する必要があります。

 ­無償クラウド(Google Drive)へのバックアップとリストア

 ­Synologyサーバ間でのバックアップとリストア

これで特定時点のDBダンプとWeb直下にあるフォルダが履歴を持ってバックアップされます。

 

3.WordPressを過去の時点に戻す方法

WordPressを過去の時点に戻すケースは、WordPressが障害を起こしたケースです。

ここでは障害を起こしたWordPressはそのまま残して、過去のWordPressを戻して稼働させる事を想定しています。

WordPressのDBは下記から構成されています。

①Web直下にあるWordPressフォルダ

②MariaDBの中にあるDB

 

3-1.バックアップデータを戻す前にやる事

①「WordPressフォルダ」をリネームします

­ ­理由

「Hyper Backup」のリストアは「上書き」です。よって障害がある「プラグイン」や「ファイル」がバックアップデータには無い場合は、現在のファイルがそのまま残ります。

よって障害がそのまま残る可能性があります。

②「mysql_backup」フォルダの当該SQLファイルのDATEを確認します。

­ ­理由

「Hyper Backup」のリストアは「上書き」なので、リストアすると「上書き」されます。

そこで確実に戻ったか?を確認する為です。

 

3-2.「Hyper Backup」からバックアップデータを戻す

①下記アイコンをクリックします。

②下図の「バージョンリスト」をクリックします

③バージョン一覧が表示されます。

■時計マークを「クリック」します

④バックアップエクスプローラーが表示されます。

■戻したい「WordPressフォルダ」を選択して「復元」ボタンを挿入します。

■「mysql_backup」フォルダを開いて、戻したい「SQLファイル」を選択して「復元」ボタンを挿入します。

以上で、「WordPress」フォルダと「SQL」ファイルが戻りました。

 メモ

戻った「WordPress」フォルダと「mysql_backup」フォルダの戻した「SQLファイル」のDATEを確認して下さい。

 

3-3.DBを復元する前に行う事

①phpMyAdminを起動してください。

②今まで使っていたDBの名前を変更する

■使用しているDBを選択後、操作メニュをクリックする。

③データベース名の変更を実行する

■新しいDB名を入力して「実行」ボタンを挿入します。

これでDB名が変更されました。

 

3-4.SQLファイルからDBを復元する

①インポートタブを開いてください。

②インポートするSQLファイルを指定し、インポートを実行します。

 メモ

「mysqldump」でダンプしたSQLファイルのの先頭に下記コマンドが入っています。

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `db名` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `db名`;

上記は

①指定したDBが無い場合は、新しくDBを作ります。

②またこれから実行するSQLは「db名」に書き込みます。

を意味します。

よって、DBを選択しなくて新規にDBが作られて過去のDBが復元されます。

 

以上でWordPressを過去の時点に戻す事ができました。

後は、障害を起こした「Wordpress」フォルダと、その時のDBがありますで、ジックリ原因を解析する事ができます。

以上でこのドキュメントの説明は完了です。

関連ドキュメントはメニュの「Synologyタブ」か下記の関連記事一覧から探して下さい。

又、このサイトには、Google広告が掲載されています。

この記事が貴方の参考になりましたら、広告もご覧頂ければ幸いです。


<関連記事一覧>

「synology」に関連するドキュメントを表示しています。尚、このページネーションはJquryで制御しています。

今まではWordPressの更新にあまり気を使いませんでしたが、WordPress5.5に更新しようとするとエラーが発生して、更新できない事態に遭遇しました。そこで5.5に更新する裏技を紹介しています。

ここではSynologyのphpMyAdminの「Incorrect format parameter」エラーについて解説します。このエラーは32MB以上のSQLファイルをインポートしようとした為に発生するエラーです。ここではその回避方法を解説しています。

Wordpressのセキュリティ強化の方法として「SiteGuard WP Plugin」と「Google Authenticator」の使い方を解説しています。

WordPressを構築した後、URL変更をしたい等のニーズが発生しますが、この時に重要なのはWordPressの稼働環境を理解する必要があります。ここでは「WordPressの稼働環境」と「MariaDBの中の構造」を解説しています。

Synologyサーバで大量のデータをコピーすると数十分の時間が掛かる事があります。これを数分以内でコピーする方法を解説しています。

「PHP7.0」から「PHP7.3」に変更したや、画面が途中で表示されないという問題が発生しました。この時に対応した内容を紹介しています。

自宅や職場のLANの中に「複数台のSynologyサーバ」があり、且つ、それらをhttpsでアクセスしたい場合に、SSL証明書をどうすれば良いか?を解説しています。

私の自宅は2019年末に「IIJMIO光」から「so-net光プラス」に変更しました。その結果、外部からWebサーバにアクセス出来ないという障害が発生しました。これにどう対応したか?の履歴が記載されています。

SynologyのDSMで80/443以外のポート番号を使ったWebサイトを構築する方法を解説しています。

SynologyでWordPressのURL変更を「Search-Replace-DB」で行う為には、ポート番号指定でDBを見に行く必要があります。ここではこの使い方を解説しています。

アルバムを公開アルバムにするとPhoto Stationで公開写真WEBサイトを構築する事ができます。更に、このサイトを「検索エンジンにインデックスさせる」と更に公開範囲が広がります。ここでは公開アルバムに関連する設定を解説しています。

スマートデバイスの写真を「DS Photo」を使ってPhoto Stationにアップロードする事ができます。アップロード方法には①バックアップコマンド②アップロードコマンドがあります。①を使うと写真を撮った段階で自動的にアップロードすることが可能です。

Photo Stationにはスマートデバイス専用のアプリケーションが用意されています。これがDS Photoです。
ここではこの使い方を解説しています。

Photo Stationは基本のPhoto Station以外にDSMユーザ毎に個人用Photo Stationを作成する事ができます。
ここでは個人用Photo Stationの作成方法と使い方を説明しています。

Photo Stationの基本は「公開写真Webサーバー」です。ここではこれを特定の人達で共有する方法を解説しています。

Synologyの「Photo Station」パッケージを利用するとスマホやデジカメで撮影した写真をNASサーバの中に保管をして色々な人と共有する事が可能になります。ここではこのPhoto Stationの起動方法と「Photo Station」用語を解説しています。

FTPの定番ソフトであるFFFTPを使って、SynologyのNASと接続する方法を解説しています。また対象は暗号化なしではなく、SSL証明書を使ったFTPS接続のケースになります。

iOSデバイスのWi-Fiの設定にDNSサーバを指定する方法を解説しています。

Synologyを使い始めてから何回かアプリケーション更新後に障害が発生しました。その時にはバックアップからアプリケーションを戻しますが、その戻し方を解説しています。

SynologyのPhoto Stationを利用した時に発生したエラーとその対策を解説しています。

AndroidデバイスのWi-Fiの設定にDNSサーバを指定する方法を解説しています。

SynologyのDSMに対するアタックの見方DSMの管理者を2段階認証にする方法を解説しています。

SynoloigyのDSM6.1からMariaDB5とMariaDB10の2つのDBがリリースされました。ここではMariaDB10とこのDBをアクセスするphpMyAdminの設定方法を解説しています。

Synologyサーバに2つ以上のDDNSを使う場合はSynology以外の無償DDNSサイトから取得する必要があります。またDDNSなら何でも良いのではなく、URLで更新できるDDNSでないとSynologyでは利用できません。ここでは『Dynu.com』社のDDNSの取得方法と設定方法を解説しています。

SynologyのDSMではVer6の途中から無償のSSL発行サイトのLet’s Encryptをサポートし始めました。しかし操作はマニュアルを見てもわからないので色々試した結果を解説しています。

Synologyサーバに『NO-IP.com』のDDNSを利用する応報を解説しています。

phpmyadminのセキュリティ対策として①phpMyAdminを別名にする方法②phpMyAdminをrootでアクセスできなくする方法
③phpMyAdminアクセスをローカルに限定する方法を解説しています。

SynologyのNASにWebサービスを立ち上げると、WordPressを使ったWebサイトや、EC-CUBEを使ったECサイト等を立ち上げる事ができます。本ドキュメントはWebサービスの立ち上げ方、仮想ホスト機能、パーソナルWebの機能について解説しています。

WordPressをインストールするとディフォルトではサイトURLはドメイン名/WordPressフォルダになります。これをドメイン名だけにする為にSynologyの仮想ホスト機能を使います。本ドキュメントはこの使い方を解説しています。

WordPressの動作環境を変更すると、DBをダイレクトに変更しなければならないケースがあります。このドキュメントはphpMyAdminのエクスポートとインポートを使って修正した事例を紹介しています。

無償DDNSのDDNSサイトのmydns.jpからドメイン名を取得する方法を記載しています。このサイトはIPアドレスの通知にクエリーパラメータ方式も利用できる無償のDDNSサイトなので、IPv6にも対応したDDNSサイトです。

Synology のサーバをhttpsでアクセスする為には、サーバ側にSSLサーバ証明書を入れる必要があります。本稿では自証証明書の作成方法からWindowsPCへの証明書の登録方法を解説しています。

synologyにVPNで接続する方法を解説しています。VPNはPPTPとL2TP/IPsecを解説しています。またWindowsでL2TP/IPsecを使う場合はレジストリを変更する必要があります。この辺も解説しています。

QuickConnectは自宅にあるSynologyのNASサーバが常時Synologyのサイトと接続されている環境を使ってインターネットからアクセスする方法です。この方法はルータの設定変更を必要としないのであまりネットワークに詳しくない人でも利用できる特徴がありますが、利用できるのは特定アプリケーションのみです。

SynologyのNASのOSはDSMになります。このドキュメントはDSMの更新方法について解説しています。

ここではSynoligyサーバを「Hyper Backup」アプリケーションで、Googleドライブにバックアップ/リストアする方法を解説しています。

Synologyを複数台持っている場合は、Synology間でバックアップを相互に持たせる事ができます。ここではその方法を解説しています。

SynologyのNAS機能に関連するメニューは①ファイルサービス、②共有フォルダ、③グループ、④ユーザがありこれらの関連性を解説しています。また利用権限は各々のメニューの中でも設定できるため誰に何の権限を与えたか?が判りずらい為、権限設定の考え方の例を解説しています。

Synologyの自動セットアップはLAN上のDHCPサーバから割り振らてたIPアドレスが割り振られています。本稿ではこれを固定IPアドレスに変更する方法と、DSM(DiskStation Manager)にアクセスする為のポート番号の設定を解説しています。

DSM(DiskStation Manager)のログイン画面をカスタマイズする方法を解説しています。これを使う事により企業特有のログイン画面が作成できます。

SynologyのDSM6の基本画面とコントロールパネルの基本的な使い方を解説しています。

SynologyのNASは独自のDSM(DiskStation Manager)というOSで動いております。私が経験したのはDSM4、DSM5を経由し、現在はDSM6を利用しています。どのバージョンでも操作は基本的には変わりません。

Synology サーバとWindowsPCをWebDAV接続すると、インターネット環境やローカル環境からアクセス権限を持った総てのフォルダがローカルフォルダと同様に利用できるようになります。ここではこの方法を解説しています。

SynologyのWordpressパッケージをインストールする方法を解説しています。

Synology のNASをインターネットからアクセスする方法としてDDNS(Dynamic DNS)を利用する方法があります。本稿ではDDNSにSynologyのDDNSを利用する方法と、インターネットルータへのポート番号設定事例を紹介しています。

SynologyのNASにWordpressを インストールしてWebサーバを構築する場合、ローカルPCからもURLでアクセスできる必要があります。この解決方法にSynologyのDSM Serverを使う方法を解説しています。

SynologyのNASに日本語版WordPressをインストールするやり方を解説しています。複数のWordPressも同一手法で稼動させることができます。