mysql - यवस - हिंदी में डेटाबेस डिजाइन की प्रक्रिया




दो MySQL डेटाबेस की तुलना करें (14)

dbSolo, यह भुगतान किया जाता है लेकिन यह सुविधा वह हो सकती है जिसे आप ढूंढ रहे हैं http://www.dbsolo.com/help/compare.html

यह ओरेकल, माइक्रोसॉफ्ट एसक्यूएल सर्वर, Sybase, डीबी 2, ठोस, PostgreSQL, एच 2 और MySQL के साथ काम करता है

मैं वर्तमान में एक MySQL डेटाबेस का उपयोग कर एक अनुप्रयोग विकसित कर रहा हूँ।

डेटाबेस-संरचना अभी भी प्रवाह में है और विकास में प्रगति के दौरान परिवर्तन (मैं अपनी स्थानीय प्रतिलिपि बदलता हूं, अकेले टेस्ट-सर्वर पर छोड़ देता हूं)।

डेटाबेस में दो उदाहरणों की तुलना करने का कोई तरीका है यह देखने के लिए कि क्या कोई बदलाव आया है?

वर्तमान में पिछले परीक्षण सर्वर डेटाबेस को छोड़कर ठीक है, क्योंकि परीक्षण परीक्षण डेटा में प्रवेश करना शुरू कर देता है, यह थोड़ा मुश्किल हो सकता है।
वैसे ही उत्पादन में फिर से ऐसा होगा ...

क्या उत्पादन डेटाबेस में वृद्धि करने के लिए एक आसान तरीका है, अधिमानतः इसे संशोधित करने के लिए स्वचालित रूप से एक स्क्रिप्ट बनाकर?

उत्तर में उल्लिखित उपकरण:


अपने लिए, मैं दोनों डेटाबेस को डंप करने और डंप को अलग करने के साथ शुरू करूंगा, लेकिन यदि आप स्वचालित रूप से जेनरेट स्क्रिप्ट चाहते हैं, तो आप एक असली टूल प्राप्त करना चाहते हैं।

एक साधारण Google खोज ने निम्न टूल्स को चालू किया:




तुलना और सिंक उपकरण का उपयोग करना बहुत आसान है:
डाटाबेस तुलनात्मक http://www.clevercomponents.com/products/dbcomparer/index.asp

लाभ:

  • उपवास
  • प्रयोग करने में आसान
  • आवेदन करने के लिए परिवर्तन का चयन करना आसान है

नुकसान:

  • छोटी चींटियों की लंबाई को सिंक नहीं करता है
  • इंडेक्स नामों को ठीक से सिंक नहीं करता है
  • टिप्पणियों को सिंक नहीं करता है

निश्चित रूप से कई तरीके हैं, लेकिन मेरे मामले में मैं डंप और diff कमांड पसंद करते हैं। तो यहां जेरेड की टिप्पणी के आधार पर एक स्क्रिप्ट है:

#!/bin/sh

echo "Usage: dbdiff [user1:[email protected]] [user2:[email protected]] [ignore_table1:ignore_table2...]"

dump () {
  up=${1%%@*}; user=${up%%:*}; pass=${up##*:}; dbname=${1##*@};
  mysqldump --opt --compact --skip-extended-insert -u $user -p$pass $dbname $table > $2
}

rm -f /tmp/db.diff

# Compare
up=${1%%@*}; user=${up%%:*}; pass=${up##*:}; dbname=${1##*@};
for table in `mysql -u $user -p$pass $dbname -N -e "show tables" --batch`; do
  if [ "`echo $3 | grep $table`" = "" ]; then
    echo "Comparing '$table'..."
    dump $1 /tmp/file1.sql
    dump $2 /tmp/file2.sql
    diff -up /tmp/file1.sql /tmp/file2.sql >> /tmp/db.diff
  else
    echo "Ignored '$table'..."
  fi
done
less /tmp/db.diff
rm -f /tmp/file1.sql /tmp/file2.sql

प्रतिक्रिया स्वागत है :)


मुझे लगता है कि MySQL के लिए Navicat इस मामले के लिए सहायक होगा। यह MySQL के लिए डेटा और संरचना सिंक्रनाइज़ेशन का समर्थन करता है।


मैं Navicat नामक सॉफ़्टवेयर का एक टुकड़ा उपयोग करता हूं:

  • मेरे डेटाबेस डेटाबेस में लाइव डेटाबेस सिंक करें।
  • दो डेटाबेस के बीच अंतर दिखाएं।

यह पैसा खर्च करता है, यह केवल विंडोज़ और मैक है, और यह एक बेकार यूआई मिला है, लेकिन मुझे यह पसंद है।


यदि आपको केवल स्कीमा (डेटा नहीं) की तुलना करने की आवश्यकता है, और पर्ल तक पहुंच है, तो mysqldiff काम कर सकता है। मैंने इसका उपयोग किया है क्योंकि यह आपको स्थानीय डेटाबेस को दूरस्थ डेटाबेस (एसएसएच के माध्यम से) की तुलना करने देता है, इसलिए आपको किसी भी डेटा को डंप करने की आवश्यकता नहीं है।

http://adamspiers.org/computing/mysqldiff/

यह दो डेटाबेस को सिंक्रनाइज़ करने के लिए SQL क्वेरी जेनरेट करने का प्रयास करेगा, लेकिन मुझे विश्वास नहीं है (या वास्तव में कोई उपकरण)। जहां तक ​​मुझे पता है, एक डेटाबेस स्कीमा को दूसरे में बदलने के लिए आवश्यक परिवर्तनों को रिवर्स-इंजीनियर करने के लिए कोई 100% विश्वसनीय तरीका नहीं है, खासकर जब कई बदलाव किए जाते हैं।

उदाहरण के लिए, यदि आप केवल कॉलम के प्रकार को बदलते हैं, तो स्वचालित उपकरण आसानी से अनुमान लगा सकता है कि इसे कैसे पुनर्निर्मित किया जाए। लेकिन अगर आप कॉलम को भी ले जाते हैं, इसका नाम बदलते हैं, और अन्य कॉलम जोड़ते हैं या हटाते हैं, तो सबसे अच्छा सॉफ्टवेयर पैकेज ऐसा कर सकता है जो शायद हुआ था। और आप डेटा खोना समाप्त कर सकते हैं।

मैं आपके द्वारा विकास सर्वर पर किए गए किसी भी स्कीमा परिवर्तनों का ट्रैक रखने का सुझाव देना चाहता हूं, फिर उन बयानों को लाइव सर्वर पर हाथ से चला रहा हूं (या उन्हें अपग्रेड स्क्रिप्ट या माइग्रेशन में रोल करना)। यह अधिक कठिन है, लेकिन यह आपके डेटा को सुरक्षित रखेगा। और जब तक आप अंतिम उपयोगकर्ताओं को अपनी साइट तक पहुंचने की इजाजत देते हैं, तो क्या आप वास्तव में लगातार भारी डेटाबेस परिवर्तन करने जा रहे हैं?


सरल उपकरण के लिए वेब पर घंटों के बाद घंटों के बाद, मुझे एहसास हुआ कि मैंने उबंटू सॉफ्टवेयर सेंटर में नहीं देखा है। यहां एक नि: शुल्क समाधान है जो मैंने पाया: http://torasql.com/ वे विंडोज के लिए एक संस्करण भी दावा करते हैं, लेकिन मैं केवल उबंटू के तहत इसका उपयोग कर रहा हूं।

संपादित करें: 2015-फरवरी-05 यदि आपको विंडोज उपकरण की आवश्यकता है, तो TOAD सही और नि: शुल्क है: http://software.dell.com/products/toad-for-mysql/


Maatkit नामक पर्ल का उपयोग करके लिखा गया एक उपयोगी टूल है। इसमें कई डेटाबेस तुलना और अन्य चीजों के साथ समन्वयित उपकरण हैं।


MySQL के लिए dbForge डेटा तुलना पर एक नज़र डालें। यह 30 दिनों की नि: शुल्क परीक्षण अवधि के साथ एक शेयरवेयर है। यह डेटा तुलना और सिंक्रनाइज़ेशन, डेटा अंतरों का प्रबंधन, और अनुकूलन सिंक्रनाइज़ेशन के लिए एक तेज़ MySQL GUI उपकरण है।


Toad में डेटा और स्कीमा सुविधाओं की तुलना करता है, और मेरा मानना ​​है कि यह सिंक्रनाइज़ेशन स्क्रिप्ट भी बनाएगा। सबसे अच्छा, यह फ्रीवेयर है।


SQLyog (वाणिज्यिक) में एक स्कीमा सिंक्रनाइज़ेशन टूल है जो दो डेटाबेस को सिंक्रनाइज़ करने के लिए SQL उत्पन्न करता है।





diff