HOME  /Synology
 /mysqldumpでWordPressDBを定期的にバックアップする方法
2022年09月06日

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

WordPressは「PHPプログラム」と、MariaDBの中にある「DB」から構成されます。

一方、バックアップソフトの「Hyper Backup」は過去の「特定PHPプログラム」は戻す事が出来ますが「DB」は「MariaDB全体」しか戻せません。

そこで「MariaDBの中の1DBだけを過去に戻す」事を実現する為にはMariaDBの「特定DB」だけを別途バックアップする必要があり、これを行うのがコントロールパネルの中にある「タスクスケジューラ」になります。

下記の順番で説明していきます。

1.事前準備

2.タスクスケジューラの作成と実行

3.戻し方の事例

1.事前準備

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

このフォルダは「スクリプト」「バックアップデータ」及び「ログ」を入れる器です。

①「File Station」を開きます。

 

②「Web」フォルダを選択して「作成→フォルダの作成」で「mysql_backup」フォルダを作成します。

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

2)スクリプトを作成する

①下記のプログラムをEmEditor等のテキストエディタにコピーし編集します。

メモ帳は改行コードが<CR><LF>なので利用できません。

#!/bin/sh
#古い旧バックアップファイルがあった場合は削除
cd /volume1/web/mysql_backup/
if [ -e *.sql ]; then
	rm *.sql
fi
#変数job_errのリセット
job_err=false

#JOB1(test01のバックアップ)
/usr/local/mariadb10/bin/mysqldump --single-transaction --databases test01 --user=root --password=Password > /volume1/web/mysql_backup/out_test01.sql
if [ $? = 0 ]; then
 job1=0
else
 job1=$? job_err=true
fi

#日時とダンプ結果のログ出力
date_stamp=`date '+%Y-%m-%d %H:%M'`	#日時の取得
echo '#'$date_stamp					                    #日時の出力
echo '  test01=' ${job1}			                    #ダンプ結果の出力 

#ダンプにエラーがあった場合はエラーで戻る
if [ $job_err = true ]; then
  exit 1
else
  exit 0
fi

■上記は「test01」というDBをバックアップする例です。

下記の解説を参考に修正して下さい。

下記は「EmEditor」の行番号で解説します。

1行目

・「#!/bin/sh」は記述しなくても動きます。

2~6行目

・「mysql_backup」フォルダ配下にある前回のバックアップデータを総て削除しています。

・古いバックアップデータが残る事によるミスを防止します。

7~8行目

・ダンプエラーを判断する為の変数です。

10~16行目

・1つのDBをダンプするコマンド群です。

・11行目

--databases test01 --user=root --password=Password > /volume1/web/mysql_backup/out_test01.sql

上記の「test01」をにバックアップしたいDB名、「–user=」と「–password=」にMariaDBにログインするIDとパスワードに変更してください。

・12行目の「$?」の中11行目を実行した結果のステータスが入ります。

・複数のDBをダンプする場合は10~16行目をコピーし、job2、job3等で追加します。

18~20行目

・「#2022-09-04 09:36」の様なバックアップ日時を出力します。

21行目

・「test01= 0」の様にjob1の結果を出力します。

・複数のジョブを定義した時は下記の様にこの行を修正します。

echo '  test01=' ${job1}',test02=' ${job2}',test03='${job3}',test04='${job4}

23~28行目

・ダンプにエラーがあった場合はエラーでスクリプトを終了させます。

 

<参考情報>

1.ダウンププログラムの場所

プログラム「mysqldump」は「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
DSM7 /usr/local/mariadb10/bin/mysqldump

※プログラムの場所の探し方はSynology NASをSSHでアクセスする方法を参照して下さい。

2.mysqldumpのオプションは下記になります。

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

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

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

②修正が完了したら下記の方法で保存してください。※重要

■スクリプトファイル「mysql.sh」として保存します。

例)mysql.sh

■改行コードは「LFのみ」を選択して「保存」してください。

■作成した「mysql.sh」は「mysql_backup」に保存します。

以上でDB単位でバックアップを取る準備が出来上がりました。

 

2.タスクスケジューラの作成と実行

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

サービスの所にある下記アイコンです。

 

2)タスクの作成を実行します。

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

 

3)タスクの設定を行います。

①「全般」タブの設定

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

ex)DB-Backup

■「ユーザ」の所は「root」を選択してください。

上記の「root」とは、Synologyのシステム構築IDです。

■「タスク設定タブ」をクリックします。

②「タスク設定」タブの設定

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

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

・スクリプトのデバックの時:チェックなし

・本番時:チェック

■『ユーザ指定のスクリプト』の所に下記をコピーして貼り付けて下さい。

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

・「xx/mysql_backup.sh」は、実行するシェルスクリプトです。

・「>>xx/mysql_log.txt」は、実行結果のログを記載するログファイル名です。

 メモ

>>」は追記「>」は上書きになります。

■「スケジュールタブ」をクリックします。

③「スケジュール」タブの設定

■スケジュール設定のポイントはHyper Backupの「ローカル」や「他のSynologyNAS」でシステム全体をバックアップする直前にDBをバックアップする事です。

この設定を正しく行わないとその日のDBが取得できません。

④総ての入力が終わったら『OK』を挿入しジョブを登録します。

警告メッセージが表示されますが「OK」を挿入するとタスク一覧画面にジョブが追加されます。

 

4)マニュアルで「タスク」を実行させます

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

■実行後のWebDAV接続で「mysql_backup」フォルダの中を確認します。

ログファイルとSQLファイルが追加されていたら成功です。

・「mysl_backup.log」は、メモ帳でなくEmEditorで開いてください。

・また「out_XX.sql」ファイルもEmEditorで開くと、中身が見れます。 

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

 

3.戻し方の事例

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

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

①web直下にある「test01」フォルダ

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

 

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

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

test01→_test01

­ ­理由

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

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

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

②「mysql_backup」フォルダの当該SQLファイルをリネームします。

out_test01.sql→_out_test01.sql

­ ­理由

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

 

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

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

2)下図が表示されます

■戻し方は①と②があります。ここでは①を利用します。

■①を実行すると画面の下の方に下記が表示されます。

上記から戻す日時を選択します。

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

これで過去の「test01プログラム」が戻りました。

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

これで過去の「out_test01.sql」ファイルが戻りました。

 

3.DBを復元します

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

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

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

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

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

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

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

 

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

 

⑤インポートするSQLファイル「out_test01.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が復元されます。

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

WordPareeno「test01」を起動して確認して下さい。

 

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

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

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

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

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

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


<関連記事一覧>

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

ここではPR-S300NEをマルチセッションで利用する事例を解説しています。

ここではThunderbird 102.2.2 のメールの並び順を変更する方法を解説しています。特に1つのフォルダに設定した並び順を他のフォルダに一括コピーする方法も解説しています。

ここではThunderbird 102.2.2 のカレンダーの土日、先月・次月、先月・次月の土日の背景色を変更する方法を解説しています。

Thunderbirdは「メール」や「カレンダ」を操作するデスクトップアプリケーションです。Webで複数のメールを操作するより一つのアプリケーションで操作できるので便利です。

ここではSynology Photosの共有フォルダを利用してDSMユーザ間で写真を共有する方法を解説しています。

ここではSynology Photosを利用してスマホの写真をSynologyの中に自動バックアップする方法を解説しています。

ここではSynology Photosの操作の基本を解説しています。

DSM7になって「Photo Station」が無くなったように見えますが、「Synology Photos」は「Photo Station」の後継です。しかし考え方が大きく変わっています。ここではその違いと関連ドキュメントを解説しています。

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」の使い方を解説しています。

ここでは、SynologyのNASの中で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に対する外部からのアタックに対する防御方法を解説しています。

ここではMariaDB10とこのDBをアクセスするphpMyAdminの設定方法を解説しています。尚、phpMyAdminについては「インストールとID設定」「機能追加」「起動方法」「インポートサイズの変更」を解説しています。

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

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

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

SynologyのNASのphpmyadminのセキュリティ対策として2要素認証を利用する方法を解説しています。尚、スマホを紛失した時の対応方法も解説しています。

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、OpenVPNを解説しています。また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を経由し、現在はDSM7を利用しています。どのバージョンでも操作は基本的には変わりません。

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