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

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

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

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

MySQL

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

Q&A

解決済

3回答

981閲覧

MySQLの差分をマージしたい

real3

総合スコア7

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

MySQL

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

0グッド

0クリップ

投稿2021/08/01 12:07

編集2021/08/01 13:41

2つのデータベース(db1.sql・db2.sql)の差分を比較し、gitのようにマージ及びバージョン管理を行いたいのですが可能でしょうか。
その場合、どのようなツールや方法があるのでしょうか。

EC2とRDSで運用しているCMSにて、本番環境と開発環境の同期を目的としています。

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

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

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

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

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

sazi

2021/08/01 13:25

そのデータベースは、MySQLにログインしたユーザーで同時に参照できるものでしょうか?
maisumakun

2021/08/01 13:35

> 2つのデータベース(db1.sql・db2.sql)の差分を比較し 対象は「テーブル構造だけ」でしょうか?「中身も含めて」でしょうか?
real3

2021/08/01 13:42

同時に参照できます。 構造及び中身も含めます。
guest

回答3

0

ベストアンサー

maisumakunさんの回答へのコメント

real3 2021/08/02 02:11 CMSは本番環境と開発環境それぞれでデータベースを変更するので、単にコピーして開発すると、反映する頃には本番環境のデータが変わっているためです。

を見る限り、

  • データベース構造とデータを分離できず
  • 機能開発とレコードが密接に関わっている

という制約を持っているCMSの機能開発においてDBの履歴(=開発履歴とただのコンテンツのレコードが混在したもの)を管理したい

という質問のように思います。
(認識が正しいようであれば質問への追記をお願いします。)

CMSにもよりますが、
その場合はCMS側の機能(要素のエクスポートとインポート、モジュール/プラグインとして分離して開発して、本番にはモジュール/プラグインとしてインストールするなど)を使用して差分を管理する必要があることが多いです(CMSのアプリケーションの作りに依存します)。

単純にレコードの差分だけ比較するのであれば、mysqldumpでダンプしたSQLを比較すれば可能ですが、
それを開発状態に合わせて人力でマージするのはほぼ無理な事が多いです。
単純にレコードが全部あれば良いわけでは無く、開発側と本番でバッティングする様なレコードを比較して適切にマージするのは人間がやるには非常に手間がかかる作業だからです。

そのCMSがOSSであれば、開発方法のベストプラクティスをコミュニティで質問したり、過去の質問を探すのが解決に近い方法だと思いますよ。
(OSSで無ければ、開発元に問い合わせるのが早いです)

投稿2021/08/02 03:21

編集2021/08/02 08:18
tanat

総合スコア18716

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

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

0

gitのようにマージ及びバージョン管理を行いたいのですが可能でしょうか。

稼働中常に書き換えが続く本番のデータは、バージョン管理にはなじまないと考えます。

(単に本番のデータを定期的に開発へコピーする、では何が足りない感じでしょうか?)

投稿2021/08/01 13:44

maisumakun

総合スコア145208

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

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

real3

2021/08/01 17:11

CMSは本番環境と開発環境それぞれでデータベースを変更するので、単にコピーして開発すると、反映する頃には本番環境のデータが変わっているためです。
maisumakun

2021/08/02 08:25

まず、出発点としては「機能開発にまつわるテーブル」と「ユーザー投稿のデータを記録するテーブル」をはっきりさせることが先決かと考えます。
guest

0

なんらかの方法(主キーやユニークID)でユニークを担保しているのであれば
すでにデータがあれば無視するなら
insert ignore into

すでにデータがあれば上書きするなら
insert on duplicate key update

投稿2021/08/02 02:59

yambejp

総合スコア115012

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

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

real3

2021/08/02 03:26

すでにあるデータを双方が更新していた場合、それぞれの処理(無視と上書き)と対象するユニークIDは、差分を確認しながら手作業で指定するのでしょうか
yambejp

2021/08/02 03:43

メインにサブを流し込む以外特に作業が必要だとは思えませんが? 基本的に両方更新される前提ならレプリケーションを組んでおくとか。 ただテストデータが本番環境に反映されるのはどうかと思いますが・・・ 仕様を決めてそれにあわせた設計をすればいいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問