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

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

ただいまの
回答率

88.78%

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

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 395

ringoman

score 14

前提・実現したいこと

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

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

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

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

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Orlofsky

    2019/05/16 15:47

    URLは https://teratail.com/help#about-markdown の [リンク] に修正してください。

    キャンセル

  • ringoman

    2019/05/17 13:17

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

    キャンセル

回答 4

checkベストアンサー

+4

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

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

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

が、

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

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/17 16:08

    バックアップの保存先ディレクトリは「ブラウザから参照できないディレクトリ」にする必要があるということでしょうか?
    また、上司に相談したところ弊社ではGoogleDriveを使用しているのですが、GoogleDriveに保存できるのであればそれでもよいと回答いただいたのですが、レンタルサーバで自動でバックアップを取得して、自動でGoogleDriveに保存することなど可能なのでしょうか?(GoogleDriveへのアップは手動ですか?)
    またそもそも一般的に定期バックアップをGoogleDriveに保存することなどあるのでしょうか?

    前任者からの引継ぎメモなども参照しましたが、やはり引き継がれていませんでした。
    ドキュメント類も皆無の現場なので、何もありません。
    上司に相談したところ上司も何も知りませんでしたが、今後相談しながらルールを決めていく形でよいみたいでした。

    ※変化あるものすべてバックアップ対象とのことご教授いただきありがとうございます。
     今後はより留意して作業したいと思います。

    キャンセル

+3

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/20 13:38

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

    キャンセル

+1

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/17 16:10

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

    キャンセル

+1

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/17 15:54

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

    キャンセル

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

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る