> ## 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.

> إعداد PlanetScale for Postgres كمصدر لـ ClickPipes

# دليل إعداد PlanetScale for Postgres كمصدر

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>;
};

<Info>
  ‏PlanetScale for Postgres متاح حاليًا في [مرحلة الوصول المبكر](https://planetscale.com/postgres).
</Info>

<div id="supported-postgres-versions">
  ## إصدارات Postgres المدعومة
</div>

يدعم ClickPipes الإصدار 12 من Postgres وما بعده.

<div id="enable-logical-replication">
  ## تمكين النسخ المتماثل المنطقي
</div>

1. لتمكين النسخ المتماثل على مثيل Postgres لديك، نحتاج إلى التأكد من ضبط الإعدادات التالية:

   ```sql theme={null}
   wal_level = logical
   ```

   للتحقق من ذلك، يمكنك تشغيل أمر SQL التالي:

   ```sql theme={null}
   SHOW wal_level;
   ```

   يجب أن تكون القيمة الناتجة `logical` افتراضيًا. وإذا لم تكن كذلك، فيُرجى تسجيل الدخول إلى Console الخاصة بـ PlanetScale والانتقال إلى `Cluster configuration->Parameters` ثم التمرير لأسفل إلى `Write-ahead log` لتغييرها.

<Image img="https://mintcdn.com/private-7c7dfe99/dZZG_-B0EzCG8L4V/images/integrations/data-ingestion/clickpipes/postgres/source/planetscale/planetscale_wal_level_logical.webp?fit=max&auto=format&n=dZZG_-B0EzCG8L4V&q=85&s=50df3da1dd30cf76c54f9c4fc3f5a9fb" alt="ضبط wal_level في Console الخاصة بـ PlanetScale" size="md" border width="706" height="260" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/planetscale/planetscale_wal_level_logical.webp" />

<Warning>
  سيؤدي تغيير هذا الإعداد في Console الخاصة بـ PlanetScale إلى إعادة التشغيل.
</Warning>

2. بالإضافة إلى ذلك، يُوصى بزيادة الإعداد `max_slot_wal_keep_size` من قيمته الافتراضية البالغة 4GB. ويتم ذلك أيضًا عبر Console الخاصة بـ PlanetScale بالانتقال إلى `Cluster configuration->Parameters` ثم التمرير لأسفل إلى `Write-ahead log`. للمساعدة في تحديد القيمة الجديدة، يُرجى الاطلاع [هنا](/docs/ar/integrations/clickpipes/postgres/faq#recommended-max_slot_wal_keep_size-settings).

<Image img="https://mintcdn.com/private-7c7dfe99/dZZG_-B0EzCG8L4V/images/integrations/data-ingestion/clickpipes/postgres/source/planetscale/planetscale_max_slot_wal_keep_size.webp?fit=max&auto=format&n=dZZG_-B0EzCG8L4V&q=85&s=02e27ac5d08313a26b5d2b90628b8762" alt="ضبط max_slot_wal_keep_size في Console الخاصة بـ PlanetScale" size="md" border width="1014" height="286" data-path="images/integrations/data-ingestion/clickpipes/postgres/source/planetscale/planetscale_max_slot_wal_keep_size.webp" />

<div id="creating-a-user-with-permissions-and-publication">
  ## إنشاء مستخدم مع أذونات وpublication
</div>

اتصل بمثيل PlanetScale Postgres الخاص بك باستخدام المستخدم الافتراضي `postgres.<...>`، ثم شغّل الأوامر التالية:

1. أنشئ مستخدمًا مخصصًا لـ ClickPipes:

   ```sql theme={null}
   CREATE USER clickpipes_user PASSWORD 'some-password';
   ```

2. امنح المستخدم الذي أنشأته في الخطوة السابقة حق الوصول للقراءة فقط على مستوى الـ schema. يوضّح المثال التالي الأذونات الخاصة بـ schema ‏`public`. كرر هذه الأوامر لكل schema يحتوي على جداول تريد تكرارها:

   ```sql theme={null}
   GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
   GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
   ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
   ```

3. امنح المستخدم امتيازات النسخ المتماثل:

   ```sql theme={null}
   ALTER USER clickpipes_user WITH REPLICATION;
   ```

4. أنشئ [publication](https://www.postgresql.org/docs/current/logical-replication-publication.html) يتضمن الجداول التي تريد تكرارها. نوصي بشدة بقصر الـ publication على الجداول التي تحتاجها فقط لتجنّب أي حمل إضافي على الأداء.

<Warning>
  يجب أن يكون لكل جدول مُدرج في الـ publication إما **primary key** معرّف، *أو* أن تكون **replica identity** الخاصة به مضبوطة على `FULL`. راجع [الأسئلة الشائعة حول Postgres](/docs/ar/integrations/clickpipes/postgres/faq#how-should-i-scope-my-publications-when-setting-up-replication) للحصول على إرشادات حول تحديد النطاق.
</Warning>

* لإنشاء publication لجداول محددة:

  ```sql theme={null}
  CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
  ```

  * لإنشاء publication لكل الجداول ضمن schema محدد:

    ```sql theme={null}
    CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
    ```

يحدّد الـ publication باسم `clickpipes` مجموعة الجداول التي سيتم بث أحداث التغيير الخاصة بها إلى ClickPipes. نوصي بعدم استخدام `FOR ALL TABLES` إلا إذا كنت تنوي تكرار كل الجداول، لأن تضمين جداول غير ضرورية يزيد من حركة WAL من Postgres إلى ClickPipes ويقلّل الكفاءة الإجمالية للنسخ المتماثل.

<div id="caveats">
  ## محاذير
</div>

1. للاتصال بـ PlanetScale Postgres، يجب إلحاق الفرع الحالي باسم المستخدم الذي أُنشئ أعلاه. على سبيل المثال، إذا كان اسم المستخدم الذي أنشأته هو `clickpipes_user`، فيجب أن يكون اسم المستخدم الفعلي المُستخدَم أثناء إنشاء ClickPipe هو `clickpipes_user`.`branch`، حيث يشير `branch` إلى "id" الخاص بـ [الفرع](https://planetscale.com/docs/postgres/branching) الحالي في PlanetScale Postgres. ولمعرفة ذلك بسرعة، يمكنك الرجوع إلى اسم المستخدم الخاص بالمستخدم `postgres` الذي استخدمته سابقًا لإنشاء هذا المستخدم؛ فالجزء الذي يلي النقطة هو معرّف الفرع.
2. لا تستخدم منفذ `PSBouncer` (حاليًا `6432`) لأنابيب CDC التي تتصل بـ PlanetScale Postgres؛ إذ يجب استخدام المنفذ العادي `5432`. ويمكن استخدام أيٍّ من المنفذين للأنابيب المخصّصة للتحميل الأولي فقط.
3. يُرجى التأكد من أنك تتصل فقط بـ المثيل الأساسي، إذ إن [الاتصال بالمثيلات المتماثلة](https://planetscale.com/docs/postgres/scaling/replicas#how-to-query-postgres-replicas) غير مدعوم حاليًا.

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

يمكنك الآن [إنشاء ClickPipe الخاص بك](/docs/ar/integrations/clickpipes/postgres/index) وبدء إدخال البيانات من مثيل Postgres الخاص بك إلى ClickHouse Cloud.
احرص على تدوين تفاصيل الاتصال التي استخدمتها أثناء إعداد مثيل Postgres الخاص بك، إذ ستحتاج إليها خلال عملية إنشاء ClickPipe.
