كيفية استيراد بيانات من PostgreSQL موجود إلى ServBay
يُعد ServBay بيئة ويب محلية قوية صُممت خصيصًا للمطورين وتدمج العديد من لغات البرمجة، خوادم الويب، وأنظمة قواعد البيانات ومنها PostgreSQL. إذا كان لديك قاعدة بيانات PostgreSQL تُشغّل خارج ServBay وترغب بنقل بياناتها إلى نسخة PostgreSQL المدرجة في ServBay، فهذا الدليل يرشدك لكافة الخطوات بالتفصيل.
ستتعلم هنا كيفية استخدام أدوات PostgreSQL القياسية، مثل pg_dump
و pg_restore
، وتحديد مسار Socket الخاص بـ PostgreSQL المدمج في ServBay لإكمال عملية استيراد البيانات بسهولة.
نظرة عامة
عادةً ما يتكون ترحيل بيانات قاعدة PostgreSQL الحالية إلى ServBay من الخطوات الأساسية التالية:
- تصدير البيانات من قاعدة بيانات PostgreSQL المصدر.
- إعداد قاعدة البيانات الهدف داخل PostgreSQL الموجود في ServBay.
- استيراد البيانات المُصدرة إلى قاعدة البيانات الهدف في ServBay.
- التحقق من اكتمال واستيفاء عملية الاستيراد.
سنشرح هذه الخطوات بشكل مفصل، مع التركيز على طريقة اتصال ServBay الخاصة (باستخدام ملفات socket).
حالات الاستخدام
- نسخ بيانات قاعدة PostgreSQL من بيئة الإنتاج أو الاختبار إلى بيئة ServBay المحلية لأغراض التطوير أو التصحيح.
- ترحيل بيانات من تثبيت PostgreSQL مستقل إلى ServBay لسهولة الإدارة.
- إعداد نسخة تطوير محلية في ServBay مطابقة لبنية وبيانات قاعدة بيانات خارجية.
المتطلبات المسبقة
قبل البدء في عملية استيراد البيانات، تأكد من توفر ما يلي:
- تثبيت وتشغيل ServBay: يجب أن يكون ServBay مُثبتًا ومُشغّلًا على نظام macOS لديك، إذ يأتي ServBay مع PostgreSQL مُدمج.
- تشغيل PostgreSQL في ServBay: تحقق عبر لوحة تحكم ServBay من تشغيل حزمة PostgreSQL.
- تشغيل PostgreSQL المصدر: يجب أن تتوفر لديك قاعدة بيانات PostgreSQL المصدر ويمكنك الوصول إليها.
- تنصيب أدوات عميل PostgreSQL: يجب أن تتوفر لديك أدوات أوامر مثل
pg_dump
وpg_restore
. غالباً ما تأتي هذه الأدوات مع خادم أو عميل PostgreSQL. - امتيازات الوصول لقاعدة البيانات: يجب أن تمتلك صلاحية تصدير قاعدة بيانات المصدر وامتيازات إنشاء واستيراد قواعد البيانات في PostgreSQL في ServBay (عادةً كمستخدم superuser مثل المستخدم
postgres
).
الخطوة الأولى: تصدير بيانات PostgreSQL المصدر
أولاً، سنصدر بيانات قاعدة بيانات PostgreSQL المصدر إلى ملف باستخدام أداة pg_dump
.
افتح الطرفية: شغّل تطبيق Terminal في نظامك.
نفذ أمر التصدير: استخدم أمر
pg_dump
للاتصال بقاعدة بيانات المصدر وتصدير محتواها إلى ملف معين.bashpg_dump -U your_source_username -d your_source_database_name -F c -b -v -f mydatabase_source.dump
1-U your_source_username
: استبدله باسم مستخدم قاعدة بيانات المصدر.-d your_source_database_name
: غيّره باسم قاعدة البيانات التي تريد تصديرها.-F c
: يحدد صيغة إخراج مخصصة مناسبة للاستعادة المرنة عبرpg_restore
(كالاستعادة الانتقائية للجداول أو البيانات).-b
: يشمل الكائنات الكبيرة (blobs).-v
: يعرض تقدم العملية بصيغة موسعة.-f mydatabase_source.dump
: يمثّل اسم وطريق الملف الذي سيُحفظ فيه التصدير ويمكنك تخصيصه مثل/path/to/your/directory/mydatabase_source.dump
.
إذا كان إعداد القاعدة المصدر يختلف في المضيف أو المنفذ (غير المنفذ الافتراضي 5432) أضف خيارات
-h
أو-p
مثل:bashpg_dump -U your_source_username -d your_source_database_name -h localhost -p 5433 -F c -b -v -f mydatabase_source.dump
1قد يُطلب منك إدخال كلمة مرور مستخدم قاعدة بيانات المصدر بعد تنفيذ الأمر.
الخطوة الثانية: إعداد قاعدة بيانات ServBay الهدف
قبل استيراد البيانات، عليك إنشاء قاعدة بيانات فارغة داخل PostgreSQL المُدمج في ServBay.
الاتصال بـ PostgreSQL في ServBay: يعتمد ServBay في الاتصال بقاعدة بيانات PostgreSQL على socket محلي غالبًا في المسار
/Applications/ServBay/tmp
. استخدم أداةpsql
للاتصال:bashpsql -U postgres -h /Applications/ServBay/tmp postgres
1-U postgres
: اسم المستخدم الافتراضي (superuser) في PostgreSQL ضمن ServBay.-h /Applications/ServBay/tmp
: مهم جدًا! هذا يوجّهpsql
للاتصال عبر الملف socket المحلي وليس عبر منافذ الشبكة.postgres
: اسم قاعدة البيانات الافتراضية (غالباً إدارية).
قد يُطلب منك كلمة مرور لمستخدم
postgres
. إن لم تكن تعرفها، راجع اللوحة أو التوثيق في ServBay لإيجادها أو إعادة تعيينها. بعد الاتصال الناجح ستظهر لك محث أوامرpsql
.أنشئ قاعدة البيانات الهدف: داخل محث
psql
، أنشئ قاعدة بيانات جديدة لاستقبال البيانات، ويُفضّل أن يكون اسمها مماثل لقاعدة المصدر، مثلmydatabase_servbay
.sqlCREATE DATABASE mydatabase_servbay;
1غيّر
mydatabase_servbay
للاسم المرغوب. بعد الإنشاء، يمكنك الخروج منpsql
عبر الأمر\q
.
الخطوة الثالثة: استيراد البيانات إلى PostgreSQL في ServBay
الآن استخدم أداة pg_restore
لاستعادة الملف المصدر (.dump
) إلى قاعدة البيانات التي أنشأتها في ServBay.
افتح الطرفية: إذا أغلقتها في الخطوة السابقة، أعد فتحها.
نفذ أمر الاستيراد:
bashpg_restore -U postgres -d mydatabase_servbay -v mydatabase_source.dump -h /Applications/ServBay/tmp
1-U postgres
: اسم المستخدم (superuser) في ServBay.-d mydatabase_servbay
: اسم قاعدة البيانات الهدف التي أُنشئت في الخطوة السابقة.-v
: عرض تقدم العملية والأخطاء.mydatabase_source.dump
: مسار واسم ملف التصدير الناتج عن الخطوة الأولى.-h /Applications/ServBay/tmp
: تأكيد الاتصال بـ PostgreSQL ضمن ServBay عبر Socket.
قد يُطلب منك كلمة مرور مستخدم
postgres
. واستنادًا إلى حجم البيانات وتعقيد قواعد البيانات يستغرق الاستيراد مدة زمنية مختلفة.
الخطوة الرابعة: التحقق من استيراد البيانات
بعد الاستيراد، من المهم التحقق أن البيانات أُدخلت بشكل صحيح إلى قاعدة البيانات الهدف.
الاتصال بقاعدة البيانات الهدف في ServBay:
bashpsql -U postgres -h /Applications/ServBay/tmp mydatabase_servbay
1غيّر
mydatabase_servbay
إلى اسم قاعدة البيانات الهدف لديك. أدخل كلمة المرور عند الطلب.نفذ استعلامات التحقق: في محث
psql
، جرب عدة أوامر SQL:- عرض جميع الجداول:
\dt
- عاين أول 10 صفوف من جدول معين:sqlاستبدل
SELECT * FROM your_table_name LIMIT 10;
1your_table_name
باسم الجدول الفعلي. - حساب عدد الصفوف:sql
SELECT COUNT(*) FROM your_table_name;
1
بهذه الاستعلامات يمكنك التحقق من وجود الجداول وسلامة البيانات وعدد الصفوف.
- عرض جميع الجداول:
معالجة مشاكل التوافق الممكنة
رغم أن نسخ PostgreSQL غالبًا متوافقة، إلا أن نقل البيانات بين إصدارات مختلفة أو عند وجود إعدادات خاصة قد يسبب مشاكل تحتاج انتباهًا.
- الاختلافات بين الإصدارات: قد تظهر مشاكل توافق أو اختلافات في الخصائص، الصيغ، أو الجداول النظامية إذا كان هناك فارق كبير في الإصدارات.
- الحل: راجع التوثيق الرسمي لـ PostgreSQL لمعرفة فروق التوافق، وادمج التعديلات المطلوبة في ملف التصدير أو نفّذ سكريبتات ترحيل خاصة قبل/بعد الاستيراد.
- عدم توافق أو نقص الإضافات: قد تستخدم قاعدة المصدر إضافات أو دوال خاصة (مثل
uuid-ossp
,pgcrypto
) ليست مثبتة أو متوافقة مع نسخة ServBay.- الحل: قبل أو بعد الاستيراد، ثبت الإضافات المطلوبة في ServBay عبر الأمر التالي:sqlإذا لم تكن الإضافة متوافقة، فقد تحتاج لتحديث PostgreSQL في ServBay أو إيجاد بديل لها.
CREATE EXTENSION IF NOT EXISTS your_extension_name;
1
- الحل: قبل أو بعد الاستيراد، ثبت الإضافات المطلوبة في ServBay عبر الأمر التالي:
- المستخدمين والصلاحيات: يصدر
pg_dump
عادة معلومات المستخدمين والأدوار والصلاحيات، وقد تحتاج لإعادة إنشائها أو تعديلها يدويًا في بيئة ServBay إذا اختلفت عن المستخدمين الافتراضيين.- الحل: بعد الاستيراد، أنشئ يدويًا المستخدمين والأدوار اللازمة ومنحهم الصلاحيات المطلوبة:sqlيمكنك أيضًا استخدام خيارات
CREATE USER your_source_username WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE mydatabase_servbay TO your_source_username; -- امنح صلاحيات إضافية حسب الحاجة
1
2
3--no-owner
و--no-acl
معpg_dump
لاستثناء بيانات المالك والصلاحيات، ثم ضبطها يدويًا بعد الاستيراد.
- الحل: بعد الاستيراد، أنشئ يدويًا المستخدمين والأدوار اللازمة ومنحهم الصلاحيات المطلوبة:
- مشاكل التشفير (encoding) أو الإعداد المحلي (locale): اختلاف إعدادات التشفير أو locale بين القاعدة المصدر والهدف قد يسبب مشاكل أو ظهور بيانات مشوّهة.
- الحل: عند إنشاء القاعدة في ServBay، استخدم نفس إعدادات التشفير و locale للقاعدة المصدر باستخدام:sqlعدّل الخيارات حسب إعدادات القاعدة المصدر الفعلية.
CREATE DATABASE mydatabase_servbay ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
1
- الحل: عند إنشاء القاعدة في ServBay، استخدم نفس إعدادات التشفير و locale للقاعدة المصدر باستخدام:
حلّل دائمًا مخرجات pg_restore
خاصة مع تفعيل الخيار -v
حيث يعطي تفاصيل دقيقة حول سبب أي خطأ.
ملاحظات مهمة
- مسار Socket في ServBay: طريقة الاتصال الافتراضية بـ PostgreSQL في ServBay هي عبر socket في المسار
/Applications/ServBay/tmp
. استخدم الخيار-h /Applications/ServBay/tmp
في جميع أوامر الاتصال (psql
,pg_dump
,pg_restore
). - الصلاحيات: تأكد أن المستخدم المنفّذ للأوامر لديه إذن القراءة والكتابة للملفات وأن المستخدم (postgres) يمتلك صلاحيات إنشاء واستيراد قواعد البيانات.
- حجم الملفات: في قواعد البيانات الكبيرة، قد تستغرق عمليات التصدير والاستيراد وقتاً أطول وتحتاج لمساحة قرص كافية.
- إدارة كلمات المرور: كلمة مرور مستخدم PostgreSQL في ServBay ضرورية للاتصال، حافظ عليها جيدًا.
الأسئلة الشائعة (FAQ)
س1: ماذا أفعل إذا نسيت كلمة مرور مستخدم postgres في ServBay؟
ج1: يمكنك إيجاد كلمة المرور أو إعادة تعيينها من خلال لوحة التحكم في ServBay أو عبر التوثيق الرسمي الخاص بها.
س2: لماذا لا أستطيع الاتصال بـ PostgreSQL في ServBay عبر localhost
أو 127.0.0.1
؟
ج2: لأن PostgreSQL في ServBay مهيّأ افتراضيًا لقبول الاتصالات عبر ملف socket فقط وليس عبر الشبكة لمزيد من الأمان. يمكنك تعديل إعدادات التوصيل إذا لزم الأمر، لكن الموصى به هو الاتصال عبر -h /Applications/ServBay/tmp
.
س3: ظهرت لي أخطاء أثناء الاستيراد، كيف أتحقق من السبب؟
ج3: راجع مخرجات أمر pg_restore
خاصة في الوضع التفصيلي (-v
) وستجد غالباً معلومات دقيقة عن الخطأ (مثل أخطاء الصلاحية أو وجود كائنات أو جداول مفقودة) وقارنها مع حلول مشاكل التوافق الموضحة أعلاه.
س4: هل يمكنني استخدام أدوات إدارة قواعد البيانات الرسومية مثل pgAdmin لاستيراد البيانات؟
ج4: نعم، يمكنك ذلك. فقط أثناء الضبط، استخدم قيمة Host أو مسار socket كـ /Applications/ServBay/tmp
بدلاً من عنوان المضيف أو الـ IP، واستعمل وظيفة الاستيراد/الاستعادة في الأداة لجلب بيانات ملف .dump
.
الخلاصة
يُعد استيراد بيانات قاعدة PostgreSQL الحالية إلى النسخة المُدمجة في ServBay عملية شائعة وسهلة باستخدام أدوات pg_dump
و pg_restore
مع تحديد المسار الصحيح للاتصال عبر Socket (-h /Applications/ServBay/tmp
). باتباع الخطوات الموضحة أعلاه ومعالجة أي مشكلات توافق محتملة، يمكنك بثقة إعداد بيئة تطوير محلية مماثلة لقاعدة البيانات الخارجية لديك. يمنحك ServBay بيئة متكاملة للمطورين ويسهل عليك إدارة وترحيل قواعد البيانات بشكل سلس وآمن.