質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

336閲覧

DB定期バックアップの最適な方法が知りたいです

ringoman

総合スコア17

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/05/16 06:38

編集2019/05/17 04:17

前提・実現したいこと

DB定期バックアップの最適な方法が知りたいです。

当方ポータルサイトを複数管理する業務を半年ほど前から行っております。
前任者から引き継いだ際、ソースコードのバックアップに関しては口酸っぱく言及があったのですが、DBのバックアップに関しては言及がありませんでした。
今までバックアップとってたのかもよくわかりません。
サイト運用は5年以上はしてるようなので、何もしてないことはないと思うのですが、、

DBについて色々調べたところシェルを作って定期的に自動バックアップとれる方法(mysql の定期的なバックアップ)が多かったのですが、これが一般的な方法なのでしょうか?
また上記の方法であれば、「事前準備(バックアップ保存用ディレクトリの作成)」とは、サーバ上ディレクトリに「/backup/mysql」を作成すればよいのでしょうか?

管理してるサイトは1つが、
・MySQL(phpMyAdminからしか触ったことありません)
・テーブル数14
・カラム数最大50
・レコード数最大数千
です。

そのほかに7サイトから参照されているDBがあり、そちらは
・PostgreSQL(phpPgAdminからしか触ったことありません)
・テーブル数数百
・カラム数最大100程度
・レコード数最大数千
です。

全サイト共通
・サイトはphpで実装
・サーバは業務用レンタルサーバ(MySQL使用のデータベースのみ異なるサーバ。他の7サイトは同一のサーバで各々別アカウントにてサーバを借りている)

どのように定期バックアップをとるのが最適でしょうか?

当方、学校などでITを学んだこともなく、実務経験も1年程度ですが、前任者は1カ月の引継ぎ後退職、自分以外にプログラマやSEなどは社内におらず、相談したり一般的なエンジニアの見解を聞ける先輩などいません。

自分でも調べてはいるのですが、右も左もわからなすぎるのと諸事情で作業時間もあまりとれないため、調査の方向性だけでも(検索キーワードだけでも)教えていただけると助かります。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ringoman

2019/05/17 04:17

ご指摘ありがとうございます。修正しました。
guest

回答4

0

ベストアンサー

大抵のDBにはdump(MySQLであればmysqldump)コマンドが準備されているので
参考先の記事のように定期にコマンドを実行するプログラムを用意しておけば良いでしょう。

、「事前準備(バックアップ保存用ディレクトリの作成)」とは、サーバ上ディレクトリに「/backup/mysql」を作成すればよいのでしょうか?

そこは決め方次第かと。
ブラウザから参照できないディレクトリであれば良いですし、
ただ、サーバーも容量が無限ではないので可能であれば別途ミラーサーバーなど用意しておいてそちらにバックアップを保管するとかですかね。
もちろんミラーサーバー用意しても有限なので、バックアップの保管期間はルールとして設けておいたほうが良いと思います。

が、

前任者は1カ月の引継ぎ後退職

前任者から何も聞いていないのでしょうか?
仰っているように、何もバックアップを取らずに運用していくというのは通常ありえません。
システム運用していくうえで何も問題が起きないまま過ぎていくというのはありえませんので、何かあったときにある地点の状況に戻せるようにしておく必要は必ずあります。
ISMSでも「データバックアップ体制の構築」は謳われています。もちろんISMS取得目指さないからってやらなくていいってわけではないですが)

そこは前任者やかかわったことのあるメンバーに確認をしたほうが良いと思います。
なぜかというと、ここで得られた情報がそのままそちらに合うとは限らないからです。何かしらルールもあるかもしれません。
質問者さんの状況からルールを決められる立場にはないと思うので、その立場の人に確認できるようであれば確認してください。

※DBバックアップが質問の入りなので冒頭はDBについて書いていますが、ソースコードやファイル(画像など)も「変化」があるものなので、ここでの「データバックアップ」は「ソースコードやファイル含めて全て」と捉えてください

投稿2019/05/16 06:54

編集2019/05/16 07:55
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ringoman

2019/05/17 07:08

バックアップの保存先ディレクトリは「ブラウザから参照できないディレクトリ」にする必要があるということでしょうか? また、上司に相談したところ弊社ではGoogleDriveを使用しているのですが、GoogleDriveに保存できるのであればそれでもよいと回答いただいたのですが、レンタルサーバで自動でバックアップを取得して、自動でGoogleDriveに保存することなど可能なのでしょうか?(GoogleDriveへのアップは手動ですか?) またそもそも一般的に定期バックアップをGoogleDriveに保存することなどあるのでしょうか? 前任者からの引継ぎメモなども参照しましたが、やはり引き継がれていませんでした。 ドキュメント類も皆無の現場なので、何もありません。 上司に相談したところ上司も何も知りませんでしたが、今後相談しながらルールを決めていく形でよいみたいでした。 ※変化あるものすべてバックアップ対象とのことご教授いただきありがとうございます。  今後はより留意して作業したいと思います。
guest

0

DBのバックアップを取る作業的な部分については他の方が回答されていますので、別の観点を。

バックアップというのは、「何かあったときにデータを復旧して、業務を再開できるようにする」為に取ります。
その場合、何かあってから「どの程度の時間で復旧せねばならないのか」をまず目標として、それに合わせたバックアップの取り方を決めていかねばなりません。

例えば障害が起きたその日のデータは捨ててよい、ならば、前日の業務終了時点でのバックアップを取ってあれば、一日前に巻き戻すことは出来ますね。
でも障害が起きたその瞬間までのデータを復旧させたい、なら、前日のバックアップだけでは足りず、「当日のトランザクションログ全て」が必要になります。まあそこまでいったらミラーリングなどした方が楽になりますが。

バックアップは「運用」なので、どういう業務要件であるかを、きちんと確認しましょう。もしないなら要件をきちんと定義し直しましょう。

投稿2019/05/17 05:31

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ringoman

2019/05/20 04:38

「何かあったときにデータを復旧して、業務を再開できるようにする」「どの程度の時間で復旧せねばならないのか」 なぜバックアップをとるのか?大事な視点が抜けておりました。 ご教授いただいきありがとうございます。 業務要件については現在特に決まっておらず、今後のバックアップ体制について上司と相談しておりますので、きちんと定義し直したいと思います。 ありがとうございます。
guest

0

基本的にはdumpしてtarしてプールしておけばよいでしょう
ただしdumpファイルの戻しは馬鹿みたいに時間がかかるので
いざという手段です。

mysqlの場合基本的に同じバージョンであればファイルベースで
データの移行はできるはずです。
ただ起動中のファイルは遅延書き込みなどの関係で最新とは限りませんので
一度停止させて処理する必要があると思います

またmysqlの場合バイナリログが残るのでそこからリカバリもできます。

厳密にはバックアップではないですがネットワーク経由でリプリケーションを
しておくという手もあります。

投稿2019/05/16 07:15

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ringoman

2019/05/17 06:54

色々な方法ご提示いただき、ありがとうございます。 今回はシェルとCronで自動定期dumpすることにしました。 なんらかの障害でバックアップからファイルベースで復旧させる際には一度停止させて作業します。
guest

0

先ずはレンタル先にバックアップについて問い合わせしてみる事です。
業者によってはバックアップサービスを提供しているところもありますので。
※既に契約済みかもしれませんし、サービスでなくとも既に実装済みかもしれませんしね

バックアップをレンタルサーバー上に配置するなら環境(OS等)やファイル操作の権限や容量などの確認も必要だと思います。

投稿2019/05/16 06:54

編集2019/05/16 07:07
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ringoman

2019/05/17 07:10

レンタル先への問い合わせは盲点でした。 バックアップサービスを提供しててくれれば正直一番楽なので、問い合わせてみたいと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問