كيفية استيراد البيانات من PostgreSQL موجودة إلى ServBay
يُعد ServBay بيئة تطوير ويب محلية قوية مُصممة خصيصًا للمطورين، حيث تضم العديد من بيئات البرمجة وخوادم الويب وأنظمة قواعد البيانات، بما في ذلك PostgreSQL. إذا كان لديك بالفعل قاعدة بيانات PostgreSQL تعمل خارج ServBay وترغب في نقل بياناتها إلى مثيل PostgreSQL المتكامل في ServBay، فسيوفر لك هذا الدليل خطوات مفصلة للقيام بذلك.
سنتعرف في هذا المقال على كيفية استخدام أدوات PostgreSQL القياسية مثل pg_dump
وpg_restore
، من خلال تحديد مسار ملف الـSocket لـ PostgreSQL الخاص بـ ServBay لإكمال عملية استيراد البيانات وضمان الانتقال السلس لبياناتك.
نظرة عامة
يشمل ترحيل بيانات قاعدة بيانات PostgreSQL موجودة إلى ServBay عادة الخطوات الأساسية التالية:
- تصدير البيانات من قاعدة بيانات PostgreSQL المصدر.
- تجهيز قاعدة البيانات الهدف في PostgreSQL المدمج ضمن ServBay.
- استيراد البيانات المصدرة إلى قاعدة البيانات الهدف في ServBay.
- التحقق من اكتمال ودقة عملية الاستيراد.
سنقوم بتوضيح هذه الخطوات بالتفصيل، مع شرح كيفية التعامل مع طريقة الاتصال الخاصة بـ ServBay (عبر ملف Socket).
سيناريوهات الاستخدام
- نسخ قاعدة بيانات الإنتاج أو الاختبار إلى ServBay المحلي لغرض التطوير أو اختبار الميزات.
- ترحيل قاعدة بيانات من تثبيت منفصل لـ PostgreSQL إلى بيئة ServBay المدارة مركزيًا.
- إنشاء نسخة محلية مطابقة لبنية وبيانات قاعدة بيانات خارجية ضمن بيئة ServBay لأغراض التطوير.
المتطلبات الأساسية
قبل البدء في عملية الاستيراد، تأكد من توفر الشروط التالية:
- تثبيت وتشغيل ServBay: يجب أن يكون ServBay مثبتًا ويعمل على نظام macOS لديك. يتضمن ServBay بشكل افتراضي PostgreSQL.
- تشغيل PostgreSQL المدمج في ServBay: تحقق من أن حزمة PostgreSQL بدأت بالفعل من خلال لوحة تحكم ServBay.
- وجود PostgreSQL المصدر: تحتاج إلى وجود قاعدة بيانات PostgreSQL مصدر نشطة ويمكنك الوصول إليها.
- تثبيت أدوات عميل PostgreSQL: يجب أن يحتوي نظامك على أدوات PostgreSQL مثل
pg_dump
وpg_restore
. عادة ما تكون متوفرة مع حزمة الخادم أو عميل PostgreSQL. - صلاحيات الوصول إلى القواعد: امتلاك صلاحية تصدير البيانات من قاعدة البيانات المصدر بالإضافة إلى صلاحيات إنشاء واستيراد قواعد البيانات في PostgreSQL المدمج بـ ServBay (عادة صلاحيات المستخدم الخارق مثل
postgres
).
الخطوة الأولى: تصدير البيانات من PostgreSQL المصدر
أولاً، نحتاج إلى تصدير بيانات قاعدة البيانات المصدر إلى ملف. يُوصى باستخدام أداة pg_dump
.
افتح الطرفية: شغل تطبيق الطرفية على جهازك.
نفذ أمر التصدير: استخدم أمر
pg_dump
للاتصال بقاعدة بيانات PostgreSQL المصدر وتصدير البيانات إلى ملف محدد.bashpg_dump -U your_source_username -d your_source_database_name -F c -b -v -f mydatabase_source.dump
1-U your_source_username
: استبدلها باسم المستخدم المتصل بقاعدة بيانات PostgreSQL المصدر.-d your_source_database_name
: استبدلها باسم قاعدة البيانات المصدر المراد تصديرها.-F c
: تحديد أن يكون الناتج بصيغة الأرشيف المخصصة (custom)، وهي الصيغة الموصى بها بسبب مرونتها في عملية الاستعادة.-b
: تضمين بيانات الكائنات الكبيرة (blobs).-v
: تفعيل وضع الإخراج المفصل لعرض تقدم العملية.-f mydatabase_source.dump
: تحديد اسم ومسار ملف الإخراج. يمكنك تخصيص الاسم أو المسار مثلاً/path/to/your/directory/mydatabase_source.dump
.
بناءً على إعدادات قاعدة بياناتك المصدر، قد تحتاج أيضًا إلى تحديد المضيف (
-h
) أو المنفذ (-p
). مثلاً، إذا كانت القاعدة تعمل محليًا ولكن على منفذ غير 5432: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
قبل الاستيراد إلى ServBay، ينبغي عليك إنشاء قاعدة بيانات فارغة الهدف داخل مثيل PostgreSQL المدمج.
الاتصال بـ PostgreSQL في ServBay: يتم تهيئة PostgreSQL في ServBay ليتصل محليًا عبر ملف Socket غالبًا في المسار
/Applications/ServBay/tmp
. يمكنك استخدام أداةpsql
للاتصال.bashpsql -U postgres -h /Applications/ServBay/tmp postgres
1-U postgres
: اسم المستخدم المبدئي الخارق لـ PostgreSQL، وغالبًا ما يُستخدم في إعدادات ServBay.-h /Applications/ServBay/tmp
: هذه هي النقطة الجوهرية للاتصال بـ ServBay! هذا الخيار يحدد الاتصال عبر ملف Socket الموجود في المسار المحدد بدلاً من الاتصال عبر منفذ TCP/IP.postgres
: اسم قاعدة البيانات الافتراضية للاتصال (لأغراض إدارية).
بعد تنفيذ الأمر قد يُطلب منك إدخال كلمة مرور المستخدم
postgres
. إذا لم تكن تعرفها، يمكنك البحث عنها أو إعادة تعيينها من خلال لوحة تحكم ServBay أو دليل الاستخدام. عند الاتصال بنجاح ستلاحظ ظهور واجهة الأوامرpsql
.إنشاء قاعدة البيانات الهدف: من واجهة
psql
، نفذ أمر SQL لإنشاء قاعدة بيانات جديدة لاستقبال البيانات المستوردة. يُستحسن تسميتها بشكل مشابه للمصدر، مثلmydatabase_servbay
.sqlCREATE DATABASE mydatabase_servbay;
1استبدل
mydatabase_servbay
بالاسم الذي تفضله. بعدها يمكنك الخروج من واجهةpsql
باستخدام\q
.
الخطوة الثالثة: استيراد البيانات إلى PostgreSQL في ServBay
الآن سنستخدم أداة pg_restore
لاستيراد ملف الـ .dump
إلى قاعدة البيانات الجديدة في ServBay.
افتح الطرفية: إذا كنت قد أغلقتها في الخطوة السابقة، أعد فتحها.
نفذ أمر الاستيراد: استخدم أمر
pg_restore
للاتصال بـ PostgreSQL في ServBay وتنفيذ الاستيراد.bashpg_restore -U postgres -d mydatabase_servbay -v mydatabase_source.dump -h /Applications/ServBay/tmp
1-U postgres
: المستخدم الخارق للاتصال بـ PostgreSQL في ServBay.-d mydatabase_servbay
: استبدلها باسم قاعدة البيانات الهدف التي أنشأتها في الخطوة الثانية.-v
: تفعيل وضع الإخراج المفصل.mydatabase_source.dump
: استبدلها بمسار واسم ملف التصدير من الخطوة الأولى.-h /Applications/ServBay/tmp
: مرة أخرى، خيار الاتصال الأساسي عبر ملف Socket مع ServBay.
بمجرد تنفيذ الأمر، قد يُطلب منك كلمة مرور مستخدم ServBay
postgres
. وقد تستغرق العملية بعض الوقت حسب حجم البيانات.
الخطوة الرابعة: التحقق من استيراد البيانات
بعد الاستيراد، يجب التأكد من نقل البيانات والصحة البنيوية للقاعدة المستهدفة.
الاتصال بقاعدة البيانات الهدف في ServBay:
bashpsql -U postgres -h /Applications/ServBay/tmp mydatabase_servbay
1استبدل
mydatabase_servbay
باسم قاعدة البيانات المطلوبة. أدخل كلمة المرور، وستكون متصلاً بالقاعدة.تنفيذ الاستعلامات للتحقق:
- عرض جميع الجداول:
\dt
- استعلام أول عشرة صفوف من جدول محدد:sqlاستبدل
SELECT * FROM your_table_name LIMIT 10;
1your_table_name
باسم جدولك الفعلي. - عد الصفوف في جدول:sql
SELECT COUNT(*) FROM your_table_name;
1
بهذه الاستعلامات يمكنك التأكد مبدئيًا من بنية الجداول وصحة البيانات وعدد الصفوف.
- عرض جميع الجداول:
معالجة مشكلات التوافق المحتملة
على الرغم من أن نسخ PostgreSQL المختلفة غالبًا ما تكون متوافقة، فقد تظهر بعض المشكلات عند الترحيل بين إصدارات مختلفة أو في حال وجود إعدادات خاصة.
- اختلاف الإصدارات: إذا كانت هناك فوارق كبيرة بين إصداري قاعدة البيانات المصدر والهدف فقد تظهر اختلافات في السمات أو بناء الجملة أو بعض الجداول النظامية.
- الحل: اطلع على توثيق PostgreSQL الرسمي لفهم الفروقات بين الإصدارات. في بعض الحالات قد تحتاج لتعديلات في ملفات التصدير أو تنفيذ نصوص ترقية مخصصة قبل أو بعد الاستيراد.
- التوسعات والموديولات غير المتوافقة أو المفقودة: ربما تعتمد القاعدة على توسيعات (مثل
uuid-ossp
,pgcrypto
) أو دوال مخصصة غير متوفرة أو بإصدار مختلف في PostgreSQL بـ ServBay.- الحل: قبل أو بعد الاستيراد، اتصل بقاعدة البيانات الهدف في ServBay وقم بتثبيت التوسعات المطلوبة:sqlإذا كان هناك عدم توافق في الإصدارات قد تحتاج لحلول بديلة أو لترقية الحزمة من خلال 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
لاستبعاد معلومات المالك والصلاحيات ومن ثم إدارتها يدوياً بعد الاستيراد.
- الحل: بعد الاستيراد، أنشئ المستخدمين والأدوار المطلوبة وصلاحياتهم يدويًا:
- مشكلات الترميز أو ضبط الإقليم (Locale): إذا اختلف ترميز الأحرف أو إعدادات المنطقة بين المصدر والهدف قد يحدث أخطاء بالاستيراد أو تظهر بيانات غير مقروءة.
- الحل: تأكد عند إنشاء قاعدة البيانات في ServBay أن تستخدم نفس الترميز والإعدادات كما في المصدر:sqlاضبط الخيارات حسب ما هو مُطبّق في المصدر.
CREATE DATABASE mydatabase_servbay ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
1
- الحل: تأكد عند إنشاء قاعدة البيانات في ServBay أن تستخدم نفس الترميز والإعدادات كما في المصدر:
عند مواجهة أي مشاكل، راقب باستمرار إخراج أمر pg_restore
التفصيلي (-v
) لتحديد السبب الدقيق.
ملاحظات هامة
- مسار Socket في ServBay: الاتصال الافتراضي بـ PostgreSQL في ServBay عبر ملف Socket بمسار
/Applications/ServBay/tmp
. في جميع أوامر الاتصال (مثلpsql
,pg_dump
,pg_restore
) استخدم دائمًا الخيار-h /Applications/ServBay/tmp
. - صلاحيات التشغيل: لتجنب مشاكل، تأكد أن المستخدم الذي ينفذ الأوامر يملك الصلاحيات الكافية للقراءة والكتابة على ملف التصدير، وأن المستخدم (
postgres
) يملك صلاحيات إنشاء واستيراد قواعد البيانات. - حجم الملفات: لقواعد البيانات الكبيرة قد تستغرق عمليات التصدير والاستيراد وقتًا طويلاً وتستهلك مساحة كبيرة على القرص. تأكد من توفر الموارد.
- إدارة كلمات المرور: الاتصال بـ PostgreSQL تحت ServBay يتطلب كلمة مرور المستخدم
postgres
. احرص على حفظها في مكان آمن.
الأسئلة الشائعة (FAQ)
س١: ماذا أفعل إذا نسيت كلمة مرور مستخدم postgres
في ServBay؟
ج١: يمكنك الاطلاع على كلمة المرور أو تعيين كلمة مرور جديدة من خلال لوحة تحكم ServBay أو الرجوع إلى الوثائق الرسمية الخاصة بها.
س٢: لماذا لا أستطيع الاتصال بـ PostgreSQL في ServBay عبر localhost
أو 127.0.0.1
؟
ج٢: PostgreSQL في ServBay مهيأ افتراضيًا للاتصال فقط عبر ملفات Socket المحلية لتعزيز الأمان. إذا رغبت بالاتصال عبر TCP/IP ستحتاج لتعديل إعداداته (وهذا غير مستحسن في بيئة تطوير محلية). استخدم دائمًا -h /Applications/ServBay/tmp
للاتصال، وهو الأسلوب القياسي مع ServBay.
س٣: كيف أتعامل مع الأخطاء أثناء الاستيراد؟
ج٣: تحقق من رسائل إخراج أمر pg_restore
وخصوصًا إذا كنت تستخدم الخاصية -v
للإخراج المفصل. ستوضح الرسائل غالبًا سبب المشكلة مثل خطأ بنائي، نقص في الصلاحيات، وجود كائنات مسبقة أو مفقودة...الخ. راجع المشاكل حسب مقتطف "معالجة مشكلات التوافق المحتملة" أعلاه.
س٤: هل يمكنني استخدام أدوات إدارة قواعد البيانات الرسومية مثل pgAdmin لإجراء الاستيراد؟
ج٤: نعم، تستطيع استخدام pgAdmin أو غيرها من الأدوات الرسومية. عند إعداد الاتصال، أدخل المسار /Applications/ServBay/tmp
في حقل Host/Socket بدلاً من اسم المضيف أو عنوان IP، واستخدم الخيارات المتاحة في الواجهة الرسومية للاستيراد من ملف .dump
.
الخلاصة
استيراد بيانات قاعدة بيانات PostgreSQL موجودة إلى مثيل PostgreSQL في ServBay هو إجراء شائع ويمكن تنفيذه بكفاءة باستخدام الأدوات القياسية pg_dump
وpg_restore
مع تحديد المسار الصحيح لاتصال Socket (-h /Applications/ServBay/tmp
). باتباع الخطوات الواردة في هذا الدليل والانتباه إلى معالجة مشكلات التوافق المحتملة، يمكنك بناء بيئة تطوير مطابقة تمامًا للبيئة الخارجية التي تعمل عليها. يوفر ServBay للمطورين بيئة متكاملة تسهل إدارة وترحيل قواعد البيانات بشكل كبير.