> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# الترحيل إلى Managed Postgres باستخدام النسخ المتماثل المنطقي

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

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

export const galaxyOnClick = eventName => () => {
  try {
    if (typeof window !== "undefined" && window.galaxy && eventName) {
      window.galaxy.track(eventName, {
        interaction: "click"
      });
    }
  } catch (e) {}
};

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/beta-and-experimental-features#beta-features">
                        مزيد من المعلومات.
                    </a>
                </u>
            </span>
        </div>;
};

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

<div id="migration-logical-replication-prerequisites">
  ## المتطلبات الأساسية
</div>

* إمكانية الوصول إلى قاعدة بيانات PostgreSQL المصدرية.
* تثبيت `psql`,`pg_dump` و`pg_restore` على جهازك المحلي. يُستخدم ذلك لإنشاء جداول فارغة في قاعدة البيانات الهدف. وعادةً ما تكون هذه الأدوات مضمنة مع تثبيتات PostgreSQL. وإذا لم تكن كذلك، يمكنك تنزيلها من [الموقع الرسمي لـ PostgreSQL](https://www.postgresql.org/download/).
* يجب أن تكون قاعدة البيانات المصدرية قابلة للوصول من ClickHouse Managed Postgres. تأكد من أن أي قواعد مطلوبة في جدار الحماية أو إعدادات مجموعة الأمان تسمح بهذا الاتصال. ويمكنك الحصول على عنوان IP الصادر لمثيل Managed Postgres الخاص بك بتنفيذ ما يلي:

```shell theme={null}
dig +short <your-managed-postgres-hostname>
```

<div id="migration-logical-replication-setup">
  ## الإعداد
</div>

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

* يجب ضبط `wal_level` على `logical` في قاعدة البيانات المصدر.
* يجب ضبط `max_replication_slots` في قاعدة البيانات المصدر على قيمة لا تقل عن `1`.
* بالنسبة إلى RDS (الذي يستخدمه هذا الدليل كمثال)، عليك التأكد من أن مجموعة المعلمات لديك تتضمن `rds.logical_replication` مضبوطًا على `1`.
* يجب أن يمتلك مستخدم قاعدة البيانات المصدر امتياز `REPLICATION`. وفي حالة RDS، شغّل:
  ```sql theme={null}
  GRANT rds_replication TO <your-username>;
  ```
* يجب أن يمتلك الدور الذي تستخدمه لقاعدة البيانات الهدف امتيازات الكتابة على كائنات قاعدة البيانات الهدف:
  ```sql theme={null}
  GRANT USAGE ON SCHEMA <schema_i> TO subscriber_user;
  GRANT CREATE ON DATABASE destination_db TO subscriber_user;
  GRANT pg_create_subscription TO subscriber_user;

  -- منح أذونات الجدول
  GRANT INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA <schema_i> TO subscriber_user;
  ```

تأكد من أن قاعدة البيانات المصدر لديك مُعدّة على هذا النحو:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/logical_replication/source-setup.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=6b096fae0ca8c8b23ba4c5cbb9281456" alt="إعداد النسخ المتماثل في PostgreSQL لقاعدة البيانات المصدر" size="md" border width="1400" height="932" data-path="images/managed-postgres/logical_replication/source-setup.png" />

<div id="migration-logical-replication-schema-dump">
  ## تفريغ يقتصر على المخطط لقاعدة البيانات المصدر
</div>

قبل إعداد النسخ المتماثل المنطقي، نحتاج إلى إنشاء المخطط في قاعدة بيانات ClickHouse Managed Postgres المستهدفة. ويمكننا القيام بذلك بإنشاء تفريغ يقتصر على المخطط من قاعدة البيانات المصدر باستخدام `pg_dump`:

```shell theme={null}
pg_dump \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    -s \
    --format directory \
    -f rds-dump
```

هنا:

* استبدل `<user>` و`<password>` و`<host>` و`<port>` و`<database>` ببيانات اعتماد قاعدة البيانات المصدر.
* يحدد `-s` أننا نريد تفريغًا للمخطط فقط.
* يحدد `--format directory` أننا نريد التفريغ بتنسيق الدليل، وهو تنسيق مناسب لـ `pg_restore`.
* يحدد `-f rds-dump` دليل الإخراج لملفات التفريغ. لاحظ أن هذا الدليل سيُنشأ تلقائيًا، ويجب ألا يكون موجودًا مسبقًا.

في حالتنا، لدينا جدولان: `events` و`users`. يحتوي `events` على مليون صف، ويحتوي `users` على ألف صف.

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/pg_dump_restore/source-setup.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=491bc2e86f385054c8116acb6720babe" alt="إعداد جداول PostgreSQL المصدر" size="xl" border width="3766" height="2312" data-path="images/managed-postgres/pg_dump_restore/source-setup.png" />

<div id="migration-pgdump-pg-restore-create-pg">
  ### أنشئ مثيلًا من Managed Postgres
</div>

أولًا، تأكد من إعداد مثيل Managed Postgres، ويُفضَّل أن يكون في المنطقة نفسها التي يوجد فيها المصدر. يمكنك اتباع دليل البدء السريع [هنا](/ar/products/managed-postgres/quickstart#create-postgres-database). إليك ما سنُنشئه في هذا الدليل:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/pg_dump_restore/create-pg-for-migration.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=d8cb2e9e932c81c2ad7d0ba62c8958da" alt="إنشاء مثيل ClickHouse Managed Postgres" size="md" border width="1532" height="1570" data-path="images/managed-postgres/pg_dump_restore/create-pg-for-migration.png" />

<div id="migration-logical-replication-restore-schema">
  ## استعادة المخطط إلى ClickHouse Managed Postgres
</div>

الآن بعد أن أصبح لدينا تفريغ المخطط، يمكننا استعادته إلى مثيل ClickHouse Managed Postgres باستخدام `pg_restore`:

```shell theme={null}
pg_restore \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    --verbose \
    rds-dump
```

هنا:

* استبدل `<user>` و`<password>` و`<host>` و`<port>` و`<database>` ببيانات اعتماد قاعدة بيانات ClickHouse Managed Postgres المستهدفة.
* يوفّر `--verbose` مخرجات تفصيلية أثناء عملية الاستعادة.
  سينشئ هذا الأمر جميع الجداول والفهارس وطرق العرض وكائنات المخطط الأخرى في قاعدة البيانات المستهدفة من دون أي بيانات.

في حالتنا، بعد تشغيل هذا الأمر، أصبح لدينا جدولان، وكلاهما فارغ:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/logical_replication/target-initial-setup.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=093e10187738fb6c082c391d57a4a81e" alt="الإعداد الأولي لقاعدة بيانات ClickHouse Managed Postgres المستهدفة" size="xl" border width="2019" height="445" data-path="images/managed-postgres/logical_replication/target-initial-setup.png" />

<div id="migration-logical-replication-setup-replication">
  ## إعداد النسخ المتماثل المنطقي
</div>

بعد إعداد المخطط، يمكننا الآن تهيئة النسخ المتماثل المنطقي من قاعدة البيانات المصدر إلى قاعدة بيانات ClickHouse Managed Postgres الهدف. ويتضمن ذلك إنشاء publication على قاعدة البيانات المصدر وsubscription على قاعدة البيانات الهدف.

<div id="migration-logical-replication-create-publication">
  ### أنشئ منشورًا على قاعدة البيانات المصدر
</div>

اتصل بقاعدة بيانات PostgreSQL المصدر وأنشئ منشورًا يضم الجداول التي تريد نسخها متماثلًا.

```sql theme={null}
CREATE PUBLICATION <pub_name> FOR TABLE table1, table2...;
```

<Info>
  قد يؤدي إنشاء publication باستخدام FOR ALL TABLES إلى زيادة العبء على الشبكة إذا كان هناك عدد كبير من الجداول. يُوصى بتحديد الجداول التي تريد مزامنتها فقط.
</Info>

<div id="migration-logical-replication-create-subscription">
  ### أنشئ subscription على قاعدة بيانات ClickHouse Managed Postgres المستهدفة
</div>

بعد ذلك، اتصل بقاعدة بيانات ClickHouse Managed Postgres المستهدفة وأنشئ subscription يتصل بالـ publication على قاعدة البيانات المصدر.

```sql theme={null}
CREATE SUBSCRIPTION demo_rds_subscription
CONNECTION 'postgresql://<user>:<password>@<host>:<port>/<database>'
PUBLICATION <pub_name_you_entered_above>;
```

سيؤدي هذا تلقائيًا إلى إنشاء replication slot على قاعدة البيانات المصدر وبدء نسخ البيانات من الجداول المحددة إلى قاعدة البيانات الهدف. وقد تستغرق هذه العملية بعض الوقت، بحسب حجم بياناتك.

في حالتنا، بعد إعداد الاشتراك، بدأت البيانات بالتدفق:

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/rF8ZX2ZZNpnwXrqH/images/managed-postgres/logical_replication/migration-result.png?fit=max&auto=format&n=rF8ZX2ZZNpnwXrqH&q=85&s=89c3a5ba9125bc33afb4b104dd65af4b" alt="نتيجة الترحيل بعد النسخ المتماثل المنطقي" size="xl" border width="1920" height="658" data-path="images/managed-postgres/logical_replication/migration-result.png" />

ستُنسخ الآن الصفوف الجديدة التي يتم إدراجها في قاعدة البيانات المصدر إلى قاعدة بيانات ClickHouse Managed Postgres الهدف بشكل شبه آني.

<div id="migration-logical-replication-caveats">
  ## التحذيرات والاعتبارات
</div>

* لا ينسخ النسخ المتماثل المنطقي سوى تغييرات البيانات (INSERT, UPDATE, DELETE). أما تغييرات المخطط (مثل ALTER TABLE)، فيجب التعامل معها بشكل منفصل.
* تأكد من استقرار اتصال الشبكة بين قاعدة البيانات المصدر وقاعدة البيانات الهدف لتجنّب انقطاع النسخ المتماثل.
* راقب تأخر النسخ المتماثل للتأكد من أن قاعدة البيانات الهدف تواكب قاعدة البيانات المصدر. ويمكن أن يساعد ضبط قيمة مناسبة لـ `max_slot_wal_keep_size` في قاعدة البيانات المصدر على إدارة فتحة النسخ المتماثل المتنامية ومنعها من استهلاك مساحة كبيرة جدًا على القرص.
* بحسب حالة الاستخدام لديك، قد ترغب في إعداد المراقبة والتنبيهات لعملية النسخ المتماثل.

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

تهانينا! لقد نجحت في ترحيل قاعدة بيانات PostgreSQL الخاصة بك إلى ClickHouse Managed Postgres باستخدام pg\_dump وpg\_restore. وأصبحت الآن جاهزًا تمامًا لاستكشاف ميزات Managed Postgres وتكامله مع ClickHouse. إليك دليل بدء سريع مدته 10 دقائق لتبدأ:

* [دليل البدء السريع لـ Managed Postgres](/ar/products/managed-postgres/quickstart)
