Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

رحّل بيانات PostgreSQL باستخدام مصادر البيانات في ClickPipes

Beta

يوفّر ClickHouse Cloud الآن ClickPipes لترحيل قاعدة بيانات PostgreSQL الخارجية لديك إلى خدمة Managed Postgres. يوفّر هذا التكامل المضمّن تجربة سلسة للاتصال بقاعدة البيانات المصدر، وتصدير المخطط، واستيراده إلى Managed Postgres، وإعداد النسخ المتماثل المستمر.

المتطلبات المسبقة

اعتبارات قبل الترحيل

  • نشر تغييرات DDL: يلتقط النسخ المتماثل المستمر (CDC) عمليات DML وADD COLUMN. أما تغييرات DDL الأخرى، مثل DROP COLUMN وALTER COLUMN، فلا تُنقل ويجب تطبيقها يدويًا على النظام الهدف.

الخطوة 1: الاتصال بقاعدة البيانات المصدر

افتح ClickHouse Cloud console وحدد خدمة Managed Postgres الخاص بك.

بطاقة خدمة Managed Postgres في قائمة خدمات ClickHouse Cloud

في الشريط الجانبي الأيسر، انقر على مصادر البيانات.

إدخال مصادر البيانات في الشريط الجانبي لـ خدمة Managed Postgres

انقر على بدء الاستيراد.

صفحة مصادر البيانات وبها زر بدء الاستيراد

أدخِل تفاصيل الاتصال بقاعدة بيانات PostgreSQL المصدر: المضيف، والمنفذ، واسم المستخدم، وكلمة المرور، واسم قاعدة البيانات. فعِّل TLS إذا كان المصدر يتطلب ذلك.

إذا كنت بحاجة إلى اتصال خاص بقاعدة البيانات المصدر، يمكنك اختيار SSH tunneling وتقديم تفاصيل SSH اللازمة. يتيح ذلك لعملية الترحيل الاتصال بأمان بقواعد البيانات غير المتاحة علنًا.

اختر طريقة الإدخال:

  • التحميل الأولي + CDC — ينسخ البيانات الحالية، ثم يُبقي الوجهة متزامنة مع التغييرات المستمرة.
  • التحميل الأولي فقط — نسخة لمرة واحدة، من دون نسخ متماثل مستمر.
  • CDC فقط — يتخطى النسخة الأولية ويُجري نسخًا متماثلًا للتغييرات الجديدة فقط بدءًا من هذه النقطة.
الخطوة 1: نموذج الاتصال بقاعدة البيانات المصدر مع خيارات طريقة الإدخال

انقر على التالي.

الترحيل الآلي للمخطط

الخطوة 2: الترحيل الآلي للمخطط مع محدد قاعدة البيانات الهدف

عند اختيار هذا الخيار، يسحب ClickPipe تلقائيًا مخطط قاعدة البيانات المصدر ويطبّقه على خدمة Managed Postgres لديك خلال مرحلة الإعداد من ClickPipe بعد إنشائه.

تفترض هذه الميزة أن قاعدة البيانات الهدف فارغة، لأنها تسحب جميع كائنات قاعدة البيانات من قاعدة البيانات المصدر، بغض النظر عن الجداول التي تحددها لاحقًا في المعالج. إذا كانت قاعدة البيانات الهدف تحتوي على بيانات مسبقًا، أو كنت تريد إعدادًا أكثر تخصيصًا، فيجب اختيار الوضع اليدوي بدلًا من ذلك.

حدد قاعدة البيانات الهدف من القائمة المنسدلة، أو انقر على إنشاء قاعدة بيانات جديدة لتوفير قاعدة بيانات جديدة.

مربع حوار إنشاء قاعدة بيانات Postgres جديدة

المراقبة

يمكنك متابعة تقدّم ترحيل المخطط في عرض تفاصيل ClickPipes. تعرض السجلات حالة ترحيل المخطط، وتظهر فيها أيضًا أي أخطاء تواجهها العملية.

توجد القيود التالية على هذا الوضع:

ترحيل المخطط يدويًا

إذا كانت لديك بيانات موجودة مسبقًا في قاعدة البيانات الهدف، أو كنت ترغب في إعداد أكثر تخصيصًا بدلًا من الحالة النظيفة التي يفترضها الوضع الآلي، يمكنك اختيار الوضع اليدوي هنا.

الخطوة 2: ترحيل المخطط يدويًا باستخدام أمر تصدير pg_dump

تصدير مخطط قاعدة البيانات

يعرض المعالج أمر pg_dump مُعبّأ مسبقًا بتفاصيل الاتصال بالمصدر. شغّله في الطرفية:

الخطوة 2: أمر pg_dump لتصدير المخطط
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql

يؤدي ذلك إلى إنشاء الملف pg.sql في الدليل الحالي.

مخرجات الطرفية بعد تشغيل pg_dump

انقر على التالي.

استيراد المخطط إلى خدمة Managed Postgres الخاصة بك

حدد قاعدة البيانات الهدف من القائمة المنسدلة، أو انقر على إنشاء قاعدة بيانات جديدة لإنشاء واحدة جديدة.

يعرض المعالج أمر psql لتطبيق ملف تفريغ المخطط على خدمة Managed Postgres الخاصة بك. شغّله في الطرفية:

الخطوة 3: أمر psql لاستيراد المخطط
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
مخرجات الطرفية بعد تشغيل استيراد المخطط عبر psql

انقر على التالي.

الخطوة 4: تكوين إعدادات الإدخال

حدّد الـ publication المطلوب استخدامه للنسخ المتماثل المنطقي. إذا تركت هذا الحقل فارغًا، فسيتم إنشاء publication تلقائيًا.

وسّع إعدادات النسخ المتماثل المتقدمة لضبط معدل النقل:

الإعداد الافتراضي الوصف
فاصل المزامنة (بالثواني) 10 مدى تكرار الاستقصاء عن فتحة النسخ المتماثل
سلاسل التنفيذ المتوازية للتحميل الأولي 4 عدد سلاسل التنفيذ لمرحلة النسخ المجمّع
حجم دفعة السحب 100,000 عدد الصفوف التي يتم جلبها في كل دفعة نسخ متماثل
عدد الصفوف في اللقطة لكل قسم 100000 حجم القسم للقطات الجداول الكبيرة
عدد الجداول في اللقطة بالتوازي 1 عدد الجداول التي تُؤخذ لها لقطات بالتوازي
الخطوة 4: نموذج إعدادات الإدخال مع publication وخيارات النسخ المتماثل المتقدمة

انقر التالي.

الخطوة 5: حدِّد الجداول

حدِّد الجداول التي تريد نسخها. الجداول مُجمَّعة حسب المخطط. حدِّد جداول فردية أو وسِّع أحد المخططات لاختيارها جميعًا.

الخطوة 5: منتقي الجداول مُجمَّع حسب المخطط مع زر إنشاء عملية ترحيل

انقر على إنشاء عملية ترحيل.

راقب الترحيل

بعد إنشاء الترحيل، ستجده مُدرجًا في مصادر البيانات بالحالة قيد التشغيل.

قائمة مصادر البيانات تعرض عملية ترحيل قيد التشغيل

انقر على الترحيل لفتح العرض التفصيلي. تعرض علامة التبويب الجداول تقدّم التحميل الأوّلي لكل جدول، بما في ذلك الصفوف المُعالجة، والأقسام، ومتوسط الوقت لكل قسم. وتعرض علامة التبويب المقاييس تأخر النسخ المتماثل ومعدل النقل بمجرد بدء CDC.

عرض تفصيلي للترحيل يوضح إحصاءات التحميل الأوّلي لكل جدول

مهام ما بعد الترحيل

بمجرد اكتمال التحميل الأولي، وإذا كنت تستخدم CDC، واقترب تأخر النسخ المتماثل من الصفر:

تحقق من عدد الصفوف. أجرِ مراجعة سريعة للجداول المهمة في كلٍّ من المصدر والهدف قبل تحويل حركة المرور:

SELECT COUNT(*) FROM public.orders;

أوقِف عمليات الكتابة على المصدر. أوقِف عمليات كتابة التطبيق مؤقتًا. لفرض وضع القراءة فقط أثناء مرحلة التحويل:

ALTER DATABASE <source_db> SET default_transaction_read_only = on;

تأكّد من اكتمال تزامن النسخ المتماثل. قارن أحدث صف في كلٍّ من المصدر والهدف:

-- Run on both source and target
SELECT MAX(id), MAX(updated_at) FROM public.orders;

أعِد ضبط التسلسلات. اضبط التسلسلات لتتوافق مع القيم القصوى الحالية في كل جدول:

DO $$
DECLARE r RECORD;
BEGIN
    FOR r IN
        SELECT
            n.nspname AS schema_name,
            c.relname AS table_name,
            a.attname AS column_name,
            pg_get_serial_sequence(format('%I.%I', n.nspname, c.relname), a.attname) AS seq_name
        FROM pg_class c
        JOIN pg_namespace n ON n.oid = c.relnamespace
        JOIN pg_attribute a ON a.attrelid = c.oid
        WHERE c.relkind = 'r'
            AND a.attnum > 0
            AND NOT a.attisdropped
            AND n.nspname NOT IN ('pg_catalog', 'information_schema')
    LOOP
        IF r.seq_name IS NOT NULL THEN
            EXECUTE format(
                'SELECT setval(%L, COALESCE((SELECT MAX(%I) FROM %I.%I), 0) + 1, false)',
                r.seq_name, r.column_name, r.schema_name, r.table_name
            );
        END IF;
    END LOOP;
END $$;

حوِّل حركة مرور التطبيق. وجِّه عمليات القراءة والكتابة إلى خدمة Managed Postgres لديك، وراقب الأخطاء ومخالفات القيود وسلامة النسخ المتماثل.

نظِّف. بمجرد إتمام التحويل والتأكد من أن الخدمة الجديدة سليمة، احذف عملية الترحيل من مصادر البيانات. إذا كنت قد استخدمت CDC، فاحذف فتحة النسخ المتماثل من المصدر لتحرير الموارد:

SELECT pg_drop_replication_slot('<slot_name>');

الخطوات التالية

Navigation