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

# الترحيل بين ClickHouse مُدار ذاتيًا وClickHouse Cloud باستخدام remoteSecure

> صفحة تشرح كيفية الترحيل بين ClickHouse مُدار ذاتيًا وClickHouse Cloud

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

<Image img="https://mintcdn.com/private-7c7dfe99-detect-table-modification/sWsbrb2bBAr-0f9w/images/integrations/migration/self-managed-01.webp?fit=max&auto=format&n=sWsbrb2bBAr-0f9w&q=85&s=56f271609d9908832205f2f7800ea45f" size="lg" alt="الترحيل من ClickHouse المُدار ذاتيًا" width="2048" height="936" data-path="images/integrations/migration/self-managed-01.webp" />

يوضح هذا الدليل كيفية الترحيل من خادم ClickHouse مُدار ذاتيًا إلى ClickHouse Cloud، وكذلك كيفية الترحيل بين خدمات ClickHouse Cloud.
تُستخدم الدالة [`remoteSecure`](/ar/reference/functions/table-functions/remote) في استعلامات `SELECT` و`INSERT` لإتاحة الوصول إلى خوادم ClickHouse البعيدة، مما يجعل ترحيل الجداول بسيطًا بمجرد كتابة استعلام `INSERT INTO` يتضمن `SELECT`.

<div id="migrating-from-self-managed-clickhouse-to-clickhouse-cloud">
  ## الترحيل من ClickHouse المُدار ذاتيًا إلى ClickHouse Cloud
</div>

<Image img="https://mintcdn.com/private-7c7dfe99-detect-table-modification/sWsbrb2bBAr-0f9w/images/integrations/migration/self-managed-02.webp?fit=max&auto=format&n=sWsbrb2bBAr-0f9w&q=85&s=f2c226d2b85fc2411e87b1c1d4170fc2" size="lg" alt="ترحيل ClickHouse المُدار ذاتيًا" width="2048" height="936" data-path="images/integrations/migration/self-managed-02.webp" />

بغضّ النظر عمّا إذا كان جدول المصدر لديك مُجزّأً و/أو مُكرَّرًا، ففي ClickHouse Cloud لا تحتاج إلا إلى إنشاء جدول وجهة (يمكنك ترك معلمة `Engine` لهذا الجدول، إذ سيُختار `SharedMergeTree` تلقائيًا بوصفه محرك الجدول)،
وسيتولى ClickHouse Cloud تلقائيًا التوسّع الرأسي والأفقي.
ولا حاجة من جانبك للتفكير في كيفية تكرار الجدول أو تجزئته.

في هذا المثال، يكون ClickHouse server المُدار ذاتيًا هو *المصدر*، وتكون خدمة ClickHouse Cloud هي *الوجهة*.

<div id="overview">
  ### نظرة عامة
</div>

العملية كالتالي:

1. أضِف مستخدمًا للقراءة فقط إلى خدمة المصدر
2. أنشئ بنية جدول المصدر نفسها على خدمة الوجهة
3. اسحب البيانات من المصدر إلى الوجهة، أو ادفعها من المصدر، بحسب مدى توفّر الشبكة لدى المصدر
4. أزل خادم المصدر من IP Access List على الوجهة (إن أمكن)
5. أزل المستخدم المخصّص للقراءة فقط من خدمة المصدر

<div id="migration-of-tables-from-one-system-to-another">
  ### ترحيل الجداول من نظام إلى آخر:
</div>

يشرح هذا المثال كيفية ترحيل جدول واحد من خادم ClickHouse مُدار ذاتيًا إلى ClickHouse Cloud.

<Info>
  **التوافق**

  إذا كنت تلاحظ اختلافات في السلوك بين عملية نشر ClickHouse ذاتية الاستضافة لديك وخدمة ClickHouse Cloud،
  فقد يكون ذلك مرتبطًا بـ[إعداد التوافق](/ar/reference/settings/session-settings#compatibility).
  في Cloud، يُضبط التوافق عند إنشاء الخدمة، ولا يتغير على مستوى الخدمة لضمان حصول التطبيقات العميلة على سلوك متسق حتى مع ترقية الخدمة.
  إذا كنت ترغب في تغيير التوافق، يمكنك طلب ذلك عبر [الدعم](https://clickhouse.com/support/program).
</Info>

<div id="on-the-source-clickhouse-system-the-system-that-currently-hosts-the-data">
  ### على نظام ClickHouse المصدر (النظام الذي يستضيف البيانات حاليًا)
</div>

* أضف مستخدمًا بصلاحية القراءة فقط يمكنه قراءة الجدول المصدر (`db.table` في هذا المثال)

```sql theme={null}
CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;
```

```sql theme={null}
GRANT SELECT ON db.table TO exporter;
```

* انسخ تعريف الجدول

```sql theme={null}
SELECT create_table_query
FROM system.tables
WHERE database = 'db' AND table = 'table'
```

<div id="on-the-destination-clickhouse-cloud-system">
  ### في نظام ClickHouse Cloud الوجهة:
</div>

* أنشئ قاعدة البيانات المستهدفة:

```sql theme={null}
CREATE DATABASE db
```

* باستخدام عبارة CREATE TABLE من المصدر، أنشئ الوجهة.

<Tip>
  غيّر `ENGINE` إلى `ReplicatedMergeTree` من دون أي معلمات عند تشغيل عبارة CREATE. تكون الجداول في ClickHouse Cloud مكرّرة دائمًا، ويوفّر الخدمة المعلمات الصحيحة. مع ذلك، احتفِظ ببنود `ORDER BY` و`PRIMARY KEY` و`PARTITION BY` و`SAMPLE BY` و`TTL` و`SETTINGS`.
</Tip>

```sql theme={null}
CREATE TABLE db.table ...
```

* استخدم الدالة `remoteSecure` لسحب البيانات من المصدر المُدار ذاتيًا

<Image img="https://mintcdn.com/private-7c7dfe99-detect-table-modification/sWsbrb2bBAr-0f9w/images/integrations/migration/self-managed-03.webp?fit=max&auto=format&n=sWsbrb2bBAr-0f9w&q=85&s=d46730e11c83656de50b870eba27508e" size="lg" alt="ترحيل ClickHouse المُدار ذاتيًا" width="2048" height="936" data-path="images/integrations/migration/self-managed-03.webp" />

```sql theme={null}
INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
```

<Note>
  إذا لم يكن نظام المصدر متاحًا من الشبكات الخارجية، فيمكنك دفع البيانات بدلًا من سحبها، لأن الدالة `remoteSecure` تعمل مع كلٍّ من عمليات `SELECT` و`INSERT`. راجع الخيار التالي.
</Note>

* استخدم الدالة `remoteSecure` لدفع البيانات إلى خدمة ClickHouse Cloud

<Image img="https://mintcdn.com/private-7c7dfe99-detect-table-modification/sWsbrb2bBAr-0f9w/images/integrations/migration/self-managed-04.webp?fit=max&auto=format&n=sWsbrb2bBAr-0f9w&q=85&s=3eb0f9e86cf5d4779f38423971153e53" size="lg" alt="ترحيل ClickHouse المُدار ذاتيًا" width="2048" height="936" data-path="images/integrations/migration/self-managed-04.webp" />

<Tip>
  **أضف النظام البعيد إلى IP Access List الخاصة بخدمة ClickHouse Cloud**

  لكي تتمكن الدالة `remoteSecure` من الاتصال بخدمة ClickHouse Cloud، يجب السماح بعنوان IP الخاص بالنظام البعيد ضمن IP Access List. وسِّع **Manage your IP Access List** أسفل هذه الملاحظة لمزيد من المعلومات.
</Tip>

<Accordion title="إدارة قائمة الوصول إلى IP">
  من قائمة خدمات ClickHouse Cloud، اختر الخدمة التي ستعمل عليها ثم انتقل إلى **Settings**. إذا كانت قائمة الوصول إلى IP لا تتضمن عنوان IP أو نطاق العناوين الخاص بالنظام البعيد الذي يحتاج إلى الاتصال بخدمة ClickHouse Cloud، يمكنك حل المشكلة باستخدام **Add IPs**:

  <Image size="md" img="https://mintcdn.com/private-7c7dfe99-detect-table-modification/0yJtAU6cqYAQlCWC/images/_snippets/ip-allow-list-check-list.webp?fit=max&auto=format&n=0yJtAU6cqYAQlCWC&q=85&s=1ff19fef941c6f2179142efa7c6e9d01" alt="تحقق مما إذا كانت الخدمة تسمح بمرور الزيارات من عنوان IP الخاص بك ضمن قائمة الوصول إلى IP" border width="3840" height="2042" data-path="images/_snippets/ip-allow-list-check-list.webp" />

  أضف عنوان IP الفردي أو نطاق العناوين الذي يحتاج إلى الاتصال بخدمة ClickHouse Cloud. عدّل النموذج بما يناسبك ثم انقر على **Save**.

  <Image size="md" img="https://mintcdn.com/private-7c7dfe99-detect-table-modification/0yJtAU6cqYAQlCWC/images/_snippets/ip-allow-list-add-current-ip.webp?fit=max&auto=format&n=0yJtAU6cqYAQlCWC&q=85&s=af4266bf943ec623acb39bd17a39dcb4" alt="أضف عنوان IP الحالي إلى قائمة الوصول إلى IP في ClickHouse Cloud" border width="1188" height="796" data-path="images/_snippets/ip-allow-list-add-current-ip.webp" />
</Accordion>

```sql theme={null}
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
'default', 'PASS') SELECT * FROM db.table
```

<div id="migrating-between-clickhouse-cloud-services">
  ## الترحيل بين خدمات ClickHouse Cloud
</div>

<Image img="https://mintcdn.com/private-7c7dfe99-detect-table-modification/sWsbrb2bBAr-0f9w/images/integrations/migration/self-managed-05.webp?fit=max&auto=format&n=sWsbrb2bBAr-0f9w&q=85&s=4ca2d12dae8f208e75917af3c28f0ba0" size="lg" alt="ترحيل ClickHouse المُدار ذاتيًا" width="2048" height="356" data-path="images/integrations/migration/self-managed-05.webp" />

فيما يلي بعض الاستخدامات الشائعة لترحيل البيانات بين خدمات ClickHouse Cloud:

* ترحيل البيانات من نسخة احتياطية تمت استعادتها
* نسخ البيانات من خدمة تطوير إلى خدمة مرحلية (أو من الخدمة المرحلية إلى بيئة production)

في هذا المثال، توجد خدمتان من ClickHouse Cloud، وسيُشار إليهما باسم *المصدر* و*الوجهة*. ستُسحب البيانات من المصدر إلى الوجهة. ومع أنه يمكنك استخدام الدفع إذا رغبت، فإن السحب هو المعروض هنا لأنه يستخدم مستخدمًا للقراءة فقط.

<Image img="https://mintcdn.com/private-7c7dfe99-detect-table-modification/sWsbrb2bBAr-0f9w/images/integrations/migration/self-managed-06.webp?fit=max&auto=format&n=sWsbrb2bBAr-0f9w&q=85&s=cae48b9463ec77a94fb21682d2c867cd" size="lg" alt="ترحيل ClickHouse المُدار ذاتيًا" width="2048" height="356" data-path="images/integrations/migration/self-managed-06.webp" />

تتضمن عملية الترحيل بضع خطوات:

1. حدِّد إحدى خدمتي ClickHouse Cloud لتكون *المصدر*، والأخرى لتكون *الوجهة*
2. أضف مستخدمًا للقراءة فقط إلى الخدمة المصدر
3. أنشئ بنية جدول المصدر نفسها على الخدمة الوجهة
4. اسمح مؤقتًا بالوصول عبر IP إلى الخدمة المصدر
5. انسخ البيانات من المصدر إلى الوجهة
6. أعد تفعيل IP Access List على الوجهة
7. أزل المستخدم المخصص للقراءة فقط من الخدمة المصدر

<div id="add-a-read-only-user-to-the-source-service">
  #### أضِف مستخدمًا للقراءة فقط إلى خدمة المصدر
</div>

* أضِف مستخدمًا للقراءة فقط يمكنه قراءة الجدول المصدر (`db.table` في هذا المثال)

  ```sql theme={null}
  CREATE USER exporter
  IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
  SETTINGS readonly = 1;
  ```

  ```sql theme={null}
  GRANT SELECT ON db.table TO exporter;
  ```

* انسخ تعريف الجدول
  ```sql theme={null}
  select create_table_query
  from system.tables
  where database = 'db' and table = 'table'
  ```

<div id="duplicate-the-table-structure-on-the-destination-service">
  #### انسخ بنية الجدول إلى خدمة الوجهة
</div>

على الوجهة، أنشئ قاعدة البيانات إذا لم تكن موجودة بالفعل:

* أنشئ قاعدة بيانات الوجهة:
  ```sql theme={null}
  CREATE DATABASE db
  ```

* باستخدام عبارة CREATE TABLE من المصدر، أنشئ الجدول على الوجهة.

  على الوجهة، أنشئ الجدول باستخدام ناتج `select create_table_query...` من المصدر:

  ```sql theme={null}
  CREATE TABLE db.table ...
  ```

<div id="allow-remote-access-to-the-source-service">
  #### اسمح بالوصول عن بُعد إلى خدمة المصدر
</div>

لكي تتمكن من سحب البيانات من المصدر إلى الوجهة، يجب أن تسمح خدمة المصدر بالاتصالات. عطّل مؤقتًا ميزة "IP Access List" على خدمة المصدر.

<Tip>
  إذا كنت ستواصل استخدام خدمة ClickHouse Cloud المصدر، فصدّر "IP Access List" الحالية إلى ملف JSON قبل التبديل إلى السماح بالوصول من أي مكان؛ فهذا يتيح لك إعادة استيراد قائمة الوصول بعد اكتمال ترحيل البيانات.
</Tip>

عدّل قائمة السماح واسمح بالوصول من **Anywhere** مؤقتًا. راجع وثائق [IP Access List](/ar/products/cloud/guides/security/connectivity/setting-ip-filters) لمزيد من التفاصيل.

<div id="copy-the-data-from-source-to-destination">
  #### انسخ البيانات من المصدر إلى الوجهة
</div>

* استخدم الدالة `remoteSecure` لسحب البيانات من خدمة ClickHouse Cloud المصدر
  اتصل بالوجهة. شغّل هذا الأمر على خدمة ClickHouse Cloud الوجهة:

  ```sql theme={null}
  INSERT INTO db.table SELECT * FROM
  remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
  ```

* تحقّق من البيانات في خدمة الوجهة

<div id="re-establish-the-ip-access-list-on-the-source">
  #### أعد إعداد IP Access List على المصدر
</div>

إذا كنت قد صدّرت IP Access List سابقًا، فيمكنك إعادة استيرادها باستخدام **Share**، وإلا فأعد إضافة عناوينك إلى قائمة الوصول.

<div id="remove-the-read-only-exporter-user">
  #### أزل المستخدم `exporter` ذو صلاحية القراءة فقط
</div>

```sql theme={null}
DROP USER exporter
```

* غيّر IP Access List الخاصة بالخدمة لتقييد الوصول
