PostgreSQL ডেটাবেসে replication হল একটি প্রক্রিয়া যার মাধ্যমে একটি সার্ভারের ডেটা অন্য একটি সার্ভারে কপি করা হয়। এটি মূলত ডেটাবেসের উচ্চ উপলব্ধতা এবং লোড ব্যালান্সিং নিশ্চিত করতে ব্যবহৃত হয়। PostgreSQL-এ বিভিন্ন ধরনের replication সমর্থিত, যার মধ্যে Streaming Replication এবং Asynchronous Replication দুটি গুরুত্বপূর্ণ কৌশল।
এখানে আমরা Streaming Replication এবং Asynchronous Replication এর ব্যাখ্যা এবং পার্থক্য আলোচনা করব।
1. Streaming Replication
Streaming Replication হল PostgreSQL এর একটি ফিচার যা মূল সার্ভার (primary server) থেকে ডেটা পরিবর্তন (WAL logs) রিয়েল টাইমে স্ট্রীমিং করে একটি বা একাধিক standby server তে পাঠায়। এটি একটি synchronous অথবা asynchronous পদ্ধতিতে কাজ করতে পারে। তবে, সাধারণভাবে এটি asynchronous replication হিসেবে ব্যবহৃত হয়।
How Streaming Replication Works:
- WAL (Write-Ahead Logs): PostgreSQL একটি ডেটাবেস ট্রানজেকশন চালানোর আগে পরিবর্তনগুলির একটি লগ তৈরি করে। এই লগকে WAL logs বলা হয়।
- Primary Server: প্রাইমারি সার্ভারে পরিবর্তনগুলি WAL logs এ লেখা হয়।
- Standby Server: স্ট্যান্ডবাই সার্ভার WAL logs স্ট্রীমিংয়ের মাধ্যমে প্রাইমারি সার্ভার থেকে সংগ্রহ করে এবং সেগুলিকে নিজের ডেটাবেসে সিঙ্ক্রোনাইজ করে।
Key Features of Streaming Replication:
- Real-Time Data Replication: ডেটা পরিবর্তন স্ট্রীমিংয়ের মাধ্যমে রিয়েল টাইমে স্ট্যান্ডবাই সার্ভারে কপি হয়।
- Continuous Syncing: স্ট্যান্ডবাই সার্ভার প্রাইমারি সার্ভারের সাথে অনবরত সিঙ্ক্রোনাইজড থাকে।
- WAL Shipping: WAL logs স্ট্রীমিং এবং প্রেরণ একটি ইফেক্টিভ এবং রিয়েল টাইম পদ্ধতি।
Benefits of Streaming Replication:
- High Availability: সার্ভার ডাউন হলে, স্ট্যান্ডবাই সার্ভার দ্রুত অ্যাক্টিভ হয়ে কাজ চালিয়ে যেতে পারে।
- Load Balancing: স্ট্যান্ডবাই সার্ভার থেকে রিড-কুয়েরি পরিচালনা করা যায়, যাতে প্রাইমারি সার্ভারের ওপর লোড কমে।
Configuration Steps:
- Enable replication on Primary Server:
In
postgresql.conf:wal_level = replica max_wal_senders = 5In
pg_hba.conf:host replication all 192.168.1.0/24 md5
- Setup Standby Server: Set up streaming replication on the standby server with
restore_commandandstandby_modesettings.
2. Asynchronous Replication
Asynchronous Replication হল PostgreSQL এর একটি replication পদ্ধতি যেখানে প্রাইমারি সার্ভার ডেটা পরিবর্তন করার পর, সেই পরিবর্তনগুলি স্ট্যান্ডবাই সার্ভারে পাঠানো হয় তবে প্রাইমারি সার্ভার রিড-ওয়াইট অপারেশন সম্পন্ন করার সময় স্ট্যান্ডবাই সার্ভারের কাছে সেগুলি সিঙ্ক্রোনাইজ হতে অপেক্ষা করে না। এর মানে, প্রাইমারি সার্ভার স্ট্যান্ডবাই সার্ভারের সাথে সিঙ্ক্রোনাইজেশন না হওয়া সত্ত্বেও অব্যাহতভাবে কাজ চালিয়ে যেতে পারে।
How Asynchronous Replication Works:
- WAL Logs: প্রাইমারি সার্ভার তার WAL logs তৈরি করে এবং সেগুলি স্ট্যান্ডবাই সার্ভারে পাঠাতে শুরু করে।
- No Wait for Acknowledgement: প্রাইমারি সার্ভার ওয়েল লগ পাঠানোর পর কোন acknowledgment ছাড়াই তার অপারেশন চালিয়ে যায়।
- Eventual Consistency: স্ট্যান্ডবাই সার্ভার পরবর্তীতে প্রাইমারি সার্ভারের পরিবর্তনগুলো গ্রহণ করবে, তবে এটি সবসময় রিয়েল-টাইম বা সিঙ্ক্রোনাস হবে না। কিছু সময়ের জন্য ডেটা কিছুটা অসামঞ্জস্য থাকতে পারে।
Benefits of Asynchronous Replication:
- Performance: প্রাইমারি সার্ভার দ্রুত তার কাজ সম্পন্ন করতে পারে, কারণ এটি স্ট্যান্ডবাই সার্ভারের সাথে সিঙ্ক্রোনাইজেশন জন্য অপেক্ষা করে না।
- Minimal Impact on Primary Server: স্ট্যান্ডবাই সার্ভারের কনফিগারেশন এবং ডেটা সিঙ্ক্রোনাইজেশন প্রাইমারি সার্ভারের পারফরম্যান্সে খুব কম প্রভাব ফেলে।
Limitations of Asynchronous Replication:
- Data Loss: যদি প্রাইমারি সার্ভার ক্র্যাশ করে এবং সেই সময় স্ট্যান্ডবাই সার্ভার পরিবর্তনগুলি সিঙ্ক্রোনাইজ না করে, তবে কিছু ডেটা হারানো যেতে পারে।
- Eventual Consistency: ডেটা আস্তে আস্তে সিঙ্ক্রোনাইজ হয়, এবং কিছু সময় পর্যন্ত ডেটার মধ্যে অমিল থাকতে পারে।
Configuration Steps:
- Enable replication on Primary Server:
- Same as in streaming replication.
- Configure Standby Server:
- No waiting for acknowledgment from standby.
3. Key Differences Between Streaming and Asynchronous Replication
| Feature | Streaming Replication | Asynchronous Replication |
|---|---|---|
| Data Consistency | High consistency; near real-time synchronization | Eventual consistency; possible delay in sync |
| Performance | Slight performance overhead due to real-time syncing | Higher performance due to no wait for acknowledgment |
| Risk of Data Loss | Low risk of data loss due to real-time replication | Higher risk of data loss if primary crashes |
| Replication Type | Synchronous or Asynchronous (in PostgreSQL terms) | Always asynchronous |
| Use Case | High availability, real-time applications | Applications with higher tolerance for data delay |
| Primary Server Impact | Moderate impact on performance due to sync delay | Minimal impact, faster operations for primary server |
4. Conclusion
- Streaming Replication provides real-time synchronization between the primary and standby servers, ensuring high availability and minimal data loss risk. It's ideal for scenarios where real-time consistency is crucial, like in high-availability clusters.
- Asynchronous Replication is more suitable when performance is a priority, and data consistency can be tolerated to some extent. It’s ideal for read-heavy applications, load balancing scenarios, and cases where performance is more important than immediate consistency.
In PostgreSQL, you can configure both of these replication types to meet different application requirements.
Read more