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

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

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

バイナリは、「0」と「1」だけで表現されている2進数のデータ形式。または、テキスト以外の情報でデータが記述されているファイルを指します。コンピューター内の処理は全て2進数で表記されています。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

MySQL

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

0回答

364閲覧

バイナリファイルパスを書き込んだDBのバックアップについて

hkcomori

総合スコア30

バイナリ

バイナリは、「0」と「1」だけで表現されている2進数のデータ形式。または、テキスト以外の情報でデータが記述されているファイルを指します。コンピューター内の処理は全て2進数で表記されています。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

MySQL

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

1クリップ

投稿2020/02/14 11:21

編集2020/02/18 04:11

状況

以下の二つのデータを読み書きするWebアプリがあります。

  • 大量のバイナリファイル(1ファイル数十MB)
  • 各バイナリファイルに付随する情報を書き込んだDB

基本的にWebアプリからアクセスして使用するため、
ファイルとDB間の整合性はWebアプリが担保しております。

Webアプリがバイナリファイルに行う操作は以下のとおりです。

  • バイナリファイルの追加に合わせて、DBの行追加を行う。
  • DBの行削除を行う時、バイナリファイルの削除も合わせて行う。
  • 登録済みのバイナリファイルを読み取って配信する
  • バイナリファイルの変更は発生しない。

解決したいこと

これらのデータを、サービスを止めずにバックアップしようと考えたとき、
バックアップデータに不整合がおきないようにする方法に悩んでおります。

現状、考えている方法は以下のとおりです。

  • バイナリファイル ⇒ blobxferでバックアップ先にコピーする
  • DB ⇒ mysqldumpの結果をバックアップ先にコピーする

実行順序に関係なく、バックアップ途中でデータに変更があった場合、
バイナリファイルはあるのにDBに情報が無い、またはその逆が起きてしまいます。

不整合が起きない方法、または起きても後から解消できる方法は無いでしょうか?

環境

  • OS: Ubuntu 18.04
  • DB: MySQL 8.0
  • Webアプリ: Python 3.7.3
  • バックアップ先: Azure Blob Storage

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

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

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

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

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

hoshi-takanori

2020/02/14 16:48

そのWebサービスにおいて、バイナリファイル側にはどのような操作がありえますか? 例えば、新規登録のみで変更・削除がないならDBダンプ後にファイルシステムをバックアップすればいいだけになります。ユーザーに提供する機能としては変更・削除があっても、Webサービスの実装として変更は新しいファイル面で保存、削除はDB内からファイル名を消したらユーザーには見せないようにする、という設計にすれば「新規登録のみ」と同じ考えでバックアップできますよね。(不要になったファイルは別途GCするってことで。)
hkcomori

2020/02/15 15:07

なるほど、定期的にDBに情報が無いバイナリファイルを削除すれば良いわけですね。 今回はストレージ容量が厳しく、不要になったファイルはすぐに消したかったので、DBに行削除時に削除する方式をとってしまっております。多少はファイル削除が遅れても大丈夫か、容量について再検討してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問