النسخ المتماثل المتدفق وWAL
اضبط النسخ المتماثل الفعلي المتدفق المستند إلى WAL، وراقب التأخر، وأعدّ نسخًا متماثلة متزامنة لعمليات كتابة دون فقدان البيانات
النسخ المتماثل المتدفق وWAL درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
لماذا نستخدم النسخ المتماثل؟
يحقق النسخ المتماثل عدة أهداف في آن واحد:
- HA — تحمّل تعطل الخادم الأساسي
- توسيع القراءة — تفريغ استعلامات SELECT إلى النسخ المتماثلة
- النسخ الاحتياطي / PITR — الأرشفة المستمرة
- التوزيع الجغرافي — وضع النسخ المتماثلة بالقرب من المستخدمين
WAL: سجل الكتابة المسبقة
تُكتب كل عملية كتابة في WAL أولًا. ويضمن WAL المتانة، كما يشكل أساس النسخ المتماثل: بث WAL إلى نسخة متماثلة ← تعيد النسخة المتماثلة تشغيل WAL ← تصبح النسخة المتماثلة محدثة.
النسخ المتماثل الفعلي المتدفق
بث WAL حرفيًا من الخادم الأساسي إلى النسخة المتماثلة:
- النسخة المتماثلة نسخة ثنائية من الخادم الأساسي
- الإصدار نفسه من Postgres
- يُنسخ العنقود بالكامل، بما في ذلك جميع قواعد البيانات والجداول
- للقراءة فقط
الإعداد: الخادم الأساسي
اضبط الخادم الأساسي في postgresql.conf:
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
-- pg_hba.conf: allow replication connections
host replication replicator 10.0.0.0/24 md5الإعداد: النسخة المتماثلة
أنشئ النسخة الاحتياطية الأساسية، ثم ابدأ باستخدام primary_conninfo:
pg_basebackup -h primary -D /var/lib/postgresql/data -U replicator -W -X stream -P
-- postgresql.conf on replica:
primary_conninfo = 'host=primary port=5432 user=replicator password=...'
-- Touch standby.signal file and start:
touch /var/lib/postgresql/data/standby.signalالمتزامن مقابل غير المتزامن
- غير متزامن (افتراضيًا) — يجري الخادم الأساسي COMMIT من دون انتظار؛ وقد تتأخر النسخة المتماثلة
- متزامن — ينتظر الخادم الأساسي تأكيد النسخة المتماثلة قبل COMMIT؛ ما يضمن عدم فقدان البيانات لكنه أبطأ
-- Synchronous configuration on primary:
synchronous_commit = on
synchronous_standby_names = 'replica1, replica2'تأخر النسخ المتماثل
تتخلف النسخ المتماثلة غير المتزامنة عن الخادم الأساسي. راقب ما يلي:
SELECT client_addr, state, sent_lsn, write_lsn, replay_lsn,
pg_wal_lsn_diff(sent_lsn, replay_lsn) AS replay_lag_bytes
FROM pg_stat_replication;خانات النسخ المتماثل
تضمن الخانات احتفاظ الخادم الأساسي بـ WAL إلى أن تستهلكه النسخة المتماثلة:
SELECT pg_create_physical_replication_slot('replica1');
-- On replica:
primary_slot_name = 'replica1'مشكلة خانات النسخ المتماثل
إذا انقطعت النسخة المتماثلة ولم تعد للاتصال، فستمنع خانتها تنظيف WAL، ما يؤدي إلى امتلاء القرص. احذف الخانات غير المستخدمة:
SELECT pg_drop_replication_slot('replica1');النسخ المتماثلة المتسلسلة
يمكن للنسخة المتماثلة نفسها بث WAL إلى نسخ متماثلة أخرى، ما يقلل الحمل على الخادم الأساسي.
وضع الاستعداد الساخن
تقبل النسخ المتماثلة، افتراضيًا، استعلامات للقراءة فقط (hot_standby = on). وقد تؤخر استعلامات القراءة طويلة التنفيذ على النسخة المتماثلة إعادة تشغيل WAL؛ لذا اضبط max_standby_streaming_delay.
الترقية
لجعل نسخة متماثلة هي الخادم الأساسي الجديد:
pg_ctl promote -D /var/lib/postgresql/data
-- Or in SQL:
SELECT pg_promote();مراجعة
النسخ المتماثل المتدفق = إرسال WAL وإعادة تشغيله.
- فعلي وثنائي مطابق
- غير متزامن افتراضيًا؛ ومتزامن لمنع فقدان البيانات
- تحتفظ الخانات بـ WAL لكنها تتطلب عناية
- تحول الترقية نسخة متماثلة إلى خادم أساسي
تحقق سريع
ما الخطر الرئيسي لعدم استخدام خانة نسخ متماثل لنسخة متماثلة متدفقة؟
الأسئلة الشائعة
هل درس «النسخ المتماثل المتدفق وWAL» مجاني؟
نعم — نص درس «النسخ المتماثل المتدفق وWAL» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «النسخ المتماثل المتدفق وWAL»؟
اضبط النسخ المتماثل الفعلي المتدفق المستند إلى WAL، وراقب التأخر، وأعدّ نسخًا متماثلة متزامنة لعمليات كتابة دون فقدان البيانات تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «النسخ المتماثل المتدفق وWAL»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- النسخ المتماثل المتدفق وWAL
- النسخ المتماثل المنطقي للتقسيم
- التجاوز التلقائي وانتخاب القائد (Patroni وStolon)
- النسخ المتماثلة للقراءة وتوجيه الاتصالات