HOME  /Synology
 /mysqldumpでMariaDBを定期的にバックアップする方法
2021年10月30日

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

WordPressの運用を行っていると「特定のDBだけを過去に戻したい!」というニーズが発生します。

これを可能にする為には、MariaDBの特定DBを定期的にバックアップする必要があります。

それを行うのが「タスクスケジューラ」です。

1.タスクスケジューラの使い方の概要

1.コントロールパネルの下記アイコンをクリックします。

 

2.この中に下記コマンドを登録します。

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

上記は「web¥mysql_backup」フォルダの「mysql.sh」プログラムを実行し、その結果を「mysql_backup.log」ファイルに書き込みなさい!という命令です。

 

上記のタスクを定期的に実行するスケジュールを設定すると「MariaDBの中のDBが定期的にバックアップされるようになります。

下記に具体的な設定方法を解説していきます。

 

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

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

1.下記アイコンから「File Station」を開いて下さい。

 

 

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

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

 

上記の「mysql_backup」フォルダの中に下記ファイルが入ります。

①MySQLのDBをバックアップする「シェルスクリプト

ファイル名は「mysql_backup.sh」として作成します

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

①が実行されるとDBをバックアップしたSQLファイルができます

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

①が実行された結果としてログが作成されます。

 

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

「mysql_backup」フォルダの中に「mysql_backup.sh」ファイルを作成します。

この中に「mysqldump」を使ったシェルスクリプトを作成します。

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

①シェルスクリプトを実行するのは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によって異なりますので気を付けて下さい。

 

1.下記サンプルスクリプトを参考にして「mysql_backup.sh」を作成して下さい。

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

#job_errのリセット
job_err=false
#〇〇DBのバックアップ(job1)
/usr/local/mariadb10/bin/mysqldump --single-transaction --databases 〇〇 --user=xx --password=×× > /volume1/web/mysql_backup/out_oldies.sql
if [ $? = 0 ]; then
 job1=0
else
 job1=$? job_err=true
fi
#✖✖DBのバックアップ(job2)
/usr/local/mariadb10/bin/mysqldump --single-transaction --databases ×× --user=xx --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

①「mysql_backup」フォルダの中にある、現在のSQLファイルを削除しています。

②変数「job_err」をリセット

この変数はスクリプトの何処かでエラーがあるとセットされる変数です。

③1つ目の「mysqldump」の実行コマンドです。環境に合わせて変更が必要です。

エラーがあった場合は変数「job1」と「job_err」にエラーをセットしています。

④2つ目の「mysqldump」の実行コマンドです。環境に合わせて変更が必要です。

エラーがあった場合は変数「job2」と「job_err」にエラーをセットしています。

※更にバックアックするDBがあった場合はこの下に追加します。

⑤日付及びバックアップ結果を「mysql_backup.log」に出力します。

⑥エラー処理

スクリプトの何処かでエラーがあった場合は「1」で終了させる事により「タスクスケジューラ」にエラーを教えます。「タスクスケジューラ」では、エラーがあった事をDSM管理者にメールします。

 

【参考1】mysqldumpプログラムの場所

mysqldumpプログラムは、ポート番号等で対象DBを選択できないので、何処のプログラムを使うか?で対象DBが異なります。

またプログラムの登録場所は「DSMのバージョン」により場所が異なります。

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

※作成したスクリプトファイルが上手く動かない場合は、プログラムの場所を調べて下さい。

 Synology NASをSSHでアクセスする方法

 

【参考2】上記で利用しているmysqldumpのオプション

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

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

–databases ダンプを取るDB名です。
–user= phpMyAdminのログインユーザ名を記述します。
–password= 上記ユーザのパスワードを記述します。

 

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

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

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

 

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

①「タスク」の所は判り易いタスクの名前を入れて下さい

②「ユーザ」の所はMariaDBにアクセスできるユーザを選択します。rootで可

 

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

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

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

­ ­メモ

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

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

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

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

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

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

>>/volume1/web/mysql_backup/mysql_log.txtは実行結果のログを記載するログファイル名です。

 メモ

>>は追記指定です。これを>にすると上書きになります。

 

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

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

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

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

 

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

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

­ ­メモ

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

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

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

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

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

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

 

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

ここでは「WP1」というWordPressを過去の時点に戻すケースで解説します。

戻すデータは下記になります。

①Web直下にある「wp1」フォルダ

②mysql_backupフォルダの中にある「out_wp1.sql」ファイル

 

1.バックアップデータから戻す前にやる事

①「WP1フォルダ」をリネームします(例:_wp1)

­ ­理由

「Hyper Backup」のリストアは「上書き」です。

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

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

②「mysql_backup」フォルダの当該SQLファイルをリネームします。(例:_out_wp1.sql

­ ­理由

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

よって過去のSQLファイルが戻った事を確認する為です。

 

2.「Hyper Backup」からバックアップデータを戻します。

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

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

 

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

■戻したいバージョンにカーソルを持ってくるとメニュが表示されるので時計マークを「クリック」します

 

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

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

WP1フォルダが戻ります。

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

以上で、「WP1」フォルダと「out_wp1.sql」ファイルが戻りました。

 

3.DBを復元します

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

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

対象のDBを選択すると下記メニュが表示されます。

■操作メニュをクリックします。

③データベース名の変更を実行する(例:_wp1)

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

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

 

④左上にある「サーバ」選択して型、インポートタブを開いてください。

 

⑤インポートするSQLファイル「out_wp1.sql」を指定し、インポートを実行します。

インポートでエラーになった時は下記ドキュメントを見て下さい。

 phpMyAdminで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を過去の時点に戻す事ができました。

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

但し、_wp1でWordpressを起動させる場合は「wp-config.php」と「.htaccess」を変更する必要があります。

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

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

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

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


<関連記事一覧>

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

phpMyadminで、設定ファイルのパーミッションが正しくありません。誰でも書き込み可能になっています!とのエラーが出た時の対処方法を解説しています。

SynologyでWordPressを運用している時に、遅い!と感じる状況に遭遇しました。対策は①All in One SEOと②WP Mail SMTPの廃止です。この経緯を説明しています。

WordPressサイトの公開後のプログラム変更は、サイトダウン等の危険性があるので難しくなります。そこで、私が行っているSyonologyを2台使った開発環境構築事例を紹介しています。

Synologyを利用していると、このファイルはDSMの中の何処にあるのか?等を調べたくなる事があります。この様な時に利用するのがSSH接続です。この接続方法を解説しています。

WordPressのメジャーアップデート(5.5や5.6)ではWordpressの更新が失敗する事があります。このような時にサイトを修復する方法を解説しています。

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

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

ここでは「WordPressの稼働環境」と「関連ドキュメント」及び「アクセスルート」の解説を行っています。

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のセキュリティ対策として①アクセスできる人の制限を強化する②アクセスできるIPアドレスを制限する
③プログラムの名前を変える等があり、そのやり方を解説しています。

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も同一手法で稼動させることができます。