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

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

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

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

よって「特定のWordPress」を過去の状態に戻すためには、MariaDBの中にある「特定DB」を毎日バックアップする必要があります。

これを行うためにはコントロールパネルの中にある下図の「タスクスケジューラ」を利用します。

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

1.事前準備

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

3.戻し方の事例

1.事前準備

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

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

①「File Station」を開きます。

 

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

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

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

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

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

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

#job_errのリセット ※2
job_err=false

#JOB1(〇〇DBのバックアップ) ※3
/usr/local/mariadb10/bin/mysqldump --single-transaction --databases 〇〇 --user=xx --password=×× > /volume1/web/mysql_backup/out_〇〇.sql
if [ $? = 0 ]; then
 job1=0
else
 job1=$? job_err=true
fi

#JOB2(△△DBのバックアップ
/usr/local/mariadb10/bin/mysqldump --single-transaction --databases △△ --user=xx --password=×× > /volume1/web/mysql_backup/out_△△.sql
if [ $? = 0 ]; then
  job2=0
else
 job2=$? job_err=true
fi

#日時の出力 ※4
date_stamp=`date '+%Y-%m-%d %H:%M'`
echo "#"$date_stamp

#バックアップ結果の出力 ※5
echo '  〇〇=' ${job1} ',△△=' ${job2} 

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

■上記は2つのDBをバックアップする例です。状況に合わせて上記サンプルを修正します。

■〇〇、△△の所はDB名、xxの所はMariaDBへのログインIDです。

 上記のスクリプトの解説

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

※2.変数「job_err」をリセット

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

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

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

プログラム「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でアクセスする方法で調べてください。

ここで利用しているmysqldumpのオプションは下記になります。

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

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

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

※4.バックアップした日時を「mysql_backup.log」に出力します。

※5.バックアップ結果を「mysql_backup.log」に出力します。

※6.Synologyのタスクスケジューラに戻すコードを記述しています。

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

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

例)mysql.sh

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

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

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

 

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

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

 

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

 

3)下記画面が表示されますので「タスクの設定」を行います。

①「全般」タブの設定

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

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

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

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

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

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

­ ­メモ

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

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

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

※DSM6系では問題なく使えてましたが、DSM 7.1-42661にはまだバグがあって上記機能は利用できません。よって当面はチェックなしで運用する事がお勧めです。

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

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

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

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

 メモ

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

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

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

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

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

 

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

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

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

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

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

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

 

3.戻し方の事例

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

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

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

DSM7系では「web_packages」の直下

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

 

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

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

wordpress_wordpress

­ ­理由

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

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

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

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

out_wordpress.sql_out_wordpress.sql

­ ­理由

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

 

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

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

2)下図が表示されます

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

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

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

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

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

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

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

 

3.DBを復元します

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

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

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

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

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

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

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

 

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

 

⑤インポートするSQLファイル「out_wordpress.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を過去の時点に戻す事ができました。

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

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

ここでは、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に対するアタックの見方DSMの管理者を2段階認証にする方法を解説しています。

以前はMariaDB5とMariaDB10がありましたが、SynoloigyのDSM7からMariaDB10に1本化されました。ここでは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、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も同一手法で稼動させることができます。