> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

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

> تعرّف على كيفية ترحيل قاعدة بيانات PostgreSQL إلى ClickHouse Managed Postgres باستخدام ClickPipes.

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <Icon />
                <span>Beta</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                ميزة Beta. 
                <u>
                    <a href="/docs/docs/beta-and-experimental-features#beta-features">
                        مزيد من المعلومات.
                    </a>
                </u>
            </span>
        </div>;
};

<BetaBadge link="https://clickhouse.com/cloud/postgres" galaxyTrack={true} galaxyEvent="docs.managed-postgres.migration-guide-clickhouse-cloud-beta" />

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

<div id="prerequisites">
  ## المتطلبات المسبقة
</div>

* إمكانية الوصول إلى قاعدة بيانات PostgreSQL المصدر باستخدام مستخدم لديه صلاحيات النسخ المتماثل. اتبع دليل الإعداد الخاص بالمصدر الذي تستخدمه:
  * [Amazon RDS Postgres](/docs/ar/integrations/clickpipes/postgres/source/rds)
  * [Amazon Aurora Postgres](/docs/ar/integrations/clickpipes/postgres/source/aurora)
  * [Supabase Postgres](/docs/ar/integrations/clickpipes/postgres/source/supabase)
  * [Google Cloud SQL Postgres](/docs/ar/integrations/clickpipes/postgres/source/google-cloudsql)
  * [Azure Flexible Server for Postgres](/docs/ar/integrations/clickpipes/postgres/source/azure-flexible-server-postgres)
  * [Neon Postgres](/docs/ar/integrations/clickpipes/postgres/source/neon-postgres)
  * [Crunchy Bridge Postgres](/docs/ar/integrations/clickpipes/postgres/source/crunchy-postgres)
  * [TimescaleDB](/docs/ar/integrations/clickpipes/postgres/source/timescale)
  * [مصدر Postgres عام](/docs/ar/integrations/clickpipes/postgres/source/generic) لأي مزوّد آخر أو لأي مثيل مستضاف ذاتيًا
* خدمة ClickHouse Managed Postgres لتكون هدف الترحيل. إذا لم تكن لديك واحدة بعد، فراجع [دليل البدء السريع](/docs/ar/products/managed-postgres/quickstart).
* يجب أن يكون `pg_dump` و`psql` مثبَّتين على جهازك المحلي. يأتي كلاهما ضمن أدوات PostgreSQL client القياسية.

<div id="considerations">
  ## اعتبارات قبل الترحيل
</div>

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

<Note>
  إذا واجهت مشكلات أثناء الترحيل، فراجع [الأسئلة الشائعة حول عمليات ترحيل Managed Postgres](/docs/ar/products/managed-postgres/migrations/faq) للاطلاع على الأخطاء الشائعة وحلولها.
</Note>

<Steps>
  <Step title="الاتصال بقاعدة البيانات المصدر" id="step-1-connect">
    افتح [ClickHouse Cloud console](https://clickhouse.cloud) وحدد خدمة Managed Postgres الخاص بك.

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/servicecard.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=9b98290197063c76fdacc9ac06749bea" alt="بطاقة خدمة Managed Postgres في قائمة خدمات ClickHouse Cloud" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/servicecard.webp" />

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

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/overview.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=f22839ab1704fb125a6b0e6efb871934" alt="إدخال مصادر البيانات في الشريط الجانبي لـ خدمة Managed Postgres" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/overview.webp" />

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

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/startimport.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=e65b851af7a659ca5c994c540d337833" alt="صفحة مصادر البيانات وبها زر بدء الاستيراد" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/startimport.webp" />

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

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

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

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

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/migrationform.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=4e668ee6f701c07181d5efc2148f9d68" alt="الخطوة 1: نموذج الاتصال بقاعدة البيانات المصدر مع خيارات طريقة الإدخال" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/migrationform.webp" />

    انقر على **التالي**.
  </Step>

  <Step title="تصدير مخطط قاعدة البيانات" id="step-2-export-schema">
    يعرض المعالج أمر `pg_dump` مُعبّأ مسبقًا بتفاصيل الاتصال بالمصدر. شغّله في الطرفية:

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/nextexport.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=3b134690c48bbd56aaa7e186348b7f61" alt="الخطوة 2: أمر pg_dump لتصدير المخطط" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/nextexport.webp" />

    ```shell theme={null}
    pg_dump \
      -h <source_host> \
      -U <source_user> \
      -d <source_database> \
      --schema-only \
      -f pg.sql
    ```

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

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/psqlexport.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=a3a03aa81fbb7bf54e26c06d1f34a54a" alt="مخرجات الطرفية بعد تشغيل pg_dump" size="lg" border width="1452" height="422" data-path="images/managed-postgres/pgpg/psqlexport.webp" />

    انقر على **التالي**.
  </Step>

  <Step title="استيراد المخطط إلى خدمة Managed Postgres الخاصة بك" id="step-3-import-schema">
    حدد قاعدة البيانات الهدف من القائمة المنسدلة، أو انقر على **Create a new database** لإنشاء واحدة جديدة.

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

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/nextimport.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=987b248bd1bef286ce2e2f44ecddacf7" alt="الخطوة 3: أمر psql لاستيراد المخطط" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/nextimport.webp" />

    ```shell theme={null}
    psql \
      -h <target_host> \
      -p 5432 \
      -U <target_user> \
      -d <target_database> \
      -f pg.sql
    ```

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/psqlimport.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=21488b23372606d9a878773443840952" alt="مخرجات الطرفية بعد تشغيل استيراد المخطط عبر psql" size="lg" border width="2362" height="762" data-path="images/managed-postgres/pgpg/psqlimport.webp" />

    انقر على **التالي**.
  </Step>

  <Step title="تهيئة إعدادات الإدخال" id="step-4-ingestion-settings">
    حدّد الـ publication المراد استخدامها للنسخ المتماثل المنطقي. إذا تركت هذا الحقل فارغًا، فسيتم إنشاء publication تلقائيًا.

    وسّع **Advanced replication settings** لضبط معدل النقل:

    | Setting                               | Default | Description                                     |
    | ------------------------------------- | ------- | ----------------------------------------------- |
    | Sync interval (seconds)               | 10      | عدد مرات الاستعلام عن فتحة النسخ المتماثل       |
    | Parallel threads for initial load     | 4       | عدد الخيوط لمرحلة النسخ المجمّع                 |
    | Pull batch size                       | 100,000 | عدد الصفوف التي يتم جلبها في كل دفعة نسخ متماثل |
    | Snapshot number of rows per partition | 100000  | حجم partition للّقطات الخاصة بالجداول الكبيرة   |
    | Snapshot number of tables in parallel | 1       | عدد الجداول التي تؤخذ لقطاتها بالتوازي          |

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/advancedsettings.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=aaa8c65ce3951d743cda7b512b4f37d9" alt="الخطوة 4: نموذج إعدادات الإدخال مع publication وخيارات النسخ المتماثل المتقدمة" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/advancedsettings.webp" />

    انقر على **التالي**.
  </Step>

  <Step title="تحديد الجداول" id="step-5-select-tables">
    حدد الجداول التي تريد نسخها متماثلًا. تُجمَّع الجداول بحسب المخطط. حدد جداول فردية أو وسّع مخططًا لاختيارها جميعًا.

    <Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/tablepicker.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=445729d818e3d464f58257282116d7f7" alt="الخطوة 5: منتقي الجداول مجمّعًا بحسب المخطط مع زر Create migration" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/tablepicker.webp" />

    انقر على **Create migration**.
  </Step>
</Steps>

<div id="monitor">
  ## راقب الترحيل
</div>

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

<Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/migrationlist.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=d4c7643df720b32f247ade727c8559ed" alt="قائمة مصادر البيانات تعرض عملية ترحيل قيد التشغيل" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/migrationlist.webp" />

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

<Image img="https://mintcdn.com/private-7c7dfe99/-DTs8Nf-Dydrn3iN/images/managed-postgres/pgpg/initialload.webp?fit=max&auto=format&n=-DTs8Nf-Dydrn3iN&q=85&s=2b1fc16a14dccd3685665b0119a4bf41" alt="عرض تفصيلي للترحيل يوضح إحصاءات التحميل الأوّلي لكل جدول" size="lg" border width="3680" height="2392" data-path="images/managed-postgres/pgpg/initialload.webp" />

<div id="post-migration">
  ## مهام ما بعد الترحيل
</div>

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

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

```sql theme={null}
SELECT COUNT(*) FROM public.orders;
```

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

```sql theme={null}
ALTER DATABASE <source_db> SET default_transaction_read_only = on;
```

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

```sql theme={null}
-- Run on both source and target
SELECT MAX(id), MAX(updated_at) FROM public.orders;
```

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

```sql theme={null}
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، فاحذف فتحة النسخ المتماثل من المصدر لتحرير الموارد:

```sql theme={null}
SELECT pg_drop_replication_slot('<slot_name>');
```

<div id="next-steps">
  ## الخطوات التالية
</div>

* [البدء السريع لـ Managed Postgres](/docs/ar/products/managed-postgres/quickstart)
* [تفاصيل الاتصال بـ Managed Postgres](/docs/ar/products/managed-postgres/connection)
* [الأسئلة الشائعة حول Postgres في ClickPipes](/docs/ar/integrations/clickpipes/postgres/faq)
