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

المتطلبات الأساسية

  • إمكانية الوصول إلى قاعدة بيانات PostgreSQL المصدر لديك باستخدام مستخدم لديه صلاحيات النسخ المتماثل.
  • خدمة ClickHouse Managed Postgres كوجهة لعملية الترحيل. إذا لم تكن لديك واحدة بعد، فراجع دليل البدء السريع.
  • تثبيت pg_dump وpsql على جهازك المحلي. يأتي كلاهما ضمن أدوات عميل PostgreSQL القياسية.

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

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

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

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

الخطوة 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 لتطبيق ملف تفريغ المخطط على خدمة Managed Postgres الخاصة بك. شغِّله في الطرفية:
psql \
  -h <target_host> \
  -p 5432 \
  -U <target_user> \
  -d <target_database> \
  -f pg.sql
انقر على Next.

الخطوة 4: ضبط إعدادات الإدخال

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

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

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

راقب الترحيل

بعد إنشاء الترحيل، ستراه مُدرجًا ضمن مصادر البيانات بحالة قيد التشغيل. انقر على الترحيل لفتح عرض التفاصيل. تعرض علامة التبويب الجداول تقدّم التحميل الأولي لكل جدول، بما في ذلك الصفوف المُعالَجة، والتقسيمات، ومتوسط الوقت لكل تقسيم. وتعرض علامة التبويب المقاييس تأخر النسخ المتماثل ومعدل النقل بمجرد بدء 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، فاحذف replication slot من المصدر لتحرير الموارد:
SELECT pg_drop_replication_slot('<slot_name>');

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

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