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

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

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

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

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

افتح ClickHouse Cloud console وحدد Managed Postgres service الخاص بك. في الشريط الجانبي الأيسر، انقر على مصادر البيانات. انقر على بدء الاستيراد. أدخِل تفاصيل الاتصال بقاعدة بيانات PostgreSQL المصدر: المضيف، والمنفذ، واسم المستخدم، وكلمة المرور، واسم قاعدة البيانات. فعِّل TLS إذا كان المصدر يتطلب ذلك. إذا كنت بحاجة إلى اتصال خاص بقاعدة البيانات المصدر، يمكنك اختيار SSH tunneling وتقديم تفاصيل SSH اللازمة. يتيح ذلك لعملية الترحيل الاتصال بأمان بقواعد البيانات غير المتاحة علنًا. اختر طريقة الإدخال:
  • التحميل الأولي + CDC — ينسخ البيانات الحالية، ثم يُبقي الوجهة متزامنة مع التغييرات المستمرة.
  • التحميل الأولي فقط — نسخة لمرة واحدة، من دون نسخ متماثل مستمر.
  • CDC فقط — يتخطى النسخة الأولية ويُجري نسخًا متماثلًا للتغييرات الجديدة فقط بدءًا من هذه النقطة.
انقر على التالي.

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

يعرض المعالج أمر pg_dump معبأً مسبقًا بتفاصيل الاتصال بالمصدر. شغِّله في الطرفية:
pg_dump \
  -h <source_host> \
  -U <source_user> \
  -d <source_database> \
  --schema-only \
  -f pg.sql
سيؤدي ذلك إلى إنشاء pg.sql في الدليل الحالي. انقر على التالي.

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

حدِّد قاعدة البيانات الوجهة من القائمة المنسدلة، أو انقر على إنشاء قاعدة بيانات جديدة لإنشاء واحدة. يعرض المعالج أمر psql لتطبيق ملف schema dump على خدمة Managed Postgres الخاصة بك. شغِّله في الطرفية:
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
انقر على التالي.

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

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

الخطوة 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>');

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

آخر تعديل في ٢٩ يونيو ٢٠٢٦