রেডিস (Redis) এ Persistence এবং Snapshotting দুটি গুরুত্বপূর্ণ ফিচার, যা ইন-মেমরি ডেটাবেসে ডেটার সুরক্ষা এবং পার্সিস্টেন্স নিশ্চিত করে। এগুলি রেডিসের ডেটা পার্সিস্টেন্স মেকানিজম, যা ডেটাকে ডিস্কে সংরক্ষণ করে যাতে সার্ভার বন্ধ হওয়ার পরেও ডেটা নিরাপদ থাকে। এই ফিচারগুলো রেডিসের ফাস্ট ইন-মেমরি কার্যক্ষমতা এবং ডেটার স্থায়িত্বের মধ্যে ভারসাম্য তৈরি করতে সাহায্য করে।
Persistence (পার্সিস্টেন্স)
পার্সিস্টেন্স হল রেডিসের ক্ষমতা, যা ইন-মেমরি ডেটাকে ডিস্কে সংরক্ষণ করে, যাতে ডেটা সার্ভার বন্ধ হওয়ার পরেও অক্ষত থাকে। রেডিসের দুটি প্রধান পার্সিস্টেন্স মেকানিজম আছে:
RDB (Redis Database Backup):
- RDB হল একটি স্ন্যাপশটিং সিস্টেম, যেখানে রেডিস নির্দিষ্ট সময় অন্তর ডেটাবেসের স্ন্যাপশট নেয় এবং সেই স্ন্যাপশটটি ডিস্কে সেভ করে রাখে। যদি রেডিস সার্ভার ক্র্যাশ করে বা বন্ধ হয়ে যায়, তাহলে এই স্ন্যাপশটটি থেকে ডেটা পুনরুদ্ধার করা যায়।
- RDB একটি কার্যকরী এবং দ্রুত পদ্ধতি, তবে এতে কিছু ডেটা হারানোর ঝুঁকি থাকতে পারে (যেহেতু স্ন্যাপশট নেওয়ার মধ্যে ডেটা পরিবর্তিত হতে পারে)।
উদাহরণ:
save 900 1 # 900 সেকেন্ড (15 মিনিট) পর 1টি রাইট অপারেশন হলে স্ন্যাপশট নেওয়া হবে save 300 10 # 300 সেকেন্ড (5 মিনিট) পর 10টি রাইট অপারেশন হলে স্ন্যাপশট নেওয়া হবে save 60 10000 # 60 সেকেন্ড পর 10000টি রাইট অপারেশন হলে স্ন্যাপশট নেওয়া হবেAOF (Append Only File):
- AOF একটি লেখার লগ ফাইল যেখানে প্রতিটি রেডিস কমান্ডকে লিপিবদ্ধ করা হয়। যখনই কোন রাইট অপারেশন (যেমন
SET,DEL) করা হয়, তা AOF ফাইলে অ্যাপেন্ড করা হয়। এটি ডেটা পুনরুদ্ধারের জন্য আরো নির্ভরযোগ্য কারণ এটি প্রতিটি রাইট অপারেশনকে সেভ করে রাখে। - AOF ফাইলের কারণে ডেটা পুনরুদ্ধারের সময় পারফরম্যান্স কিছুটা কম হতে পারে, কারণ এটি ফাইল সিঙ্ক করতে সময় নেয়।
উদাহরণ:
appendonly yes # AOF সক্ষম করা appendfsync everysec # প্রতি সেকেন্ডে AOF ফাইল সিঙ্ক করা- AOF একটি লেখার লগ ফাইল যেখানে প্রতিটি রেডিস কমান্ডকে লিপিবদ্ধ করা হয়। যখনই কোন রাইট অপারেশন (যেমন
Snapshotting (স্ন্যাপশটিং)
Snapshotting হল একটি পার্সিস্টেন্স পদ্ধতি, যা রেডিস ডেটাবেসের পুরো অবস্থা একটি স্ন্যাপশট আকারে ডিক্সে সেভ করে রাখে। স্ন্যাপশটিংয়ের মাধ্যমে ডেটার একটি নির্দিষ্ট মুহূর্তের কপি সংরক্ষিত হয়, যা পরবর্তীতে পুনরুদ্ধার করা যেতে পারে। এটি সাধারণত RDB ফিচারটি ব্যবহার করে, তবে আপনি এটি কাস্টমাইজ করে নির্দিষ্ট সময়ে স্ন্যাপশট নিতে পারেন।
রেডিস স্ন্যাপশটের প্রধান উপাদানগুলি:
saveনির্দেশিকা: এই নির্দেশিকা ব্যবহার করে আপনি স্ন্যাপশটের জন্য শর্তাবলী নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, আপনি রেডিসকে বলছেন যে নির্দিষ্ট সময় পর পর স্ন্যাপশট নিতে হবে।save 900 1 # 900 সেকেন্ড পর 1টি রাইট অপারেশন হলে স্ন্যাপশট নেওয়া হবে save 300 10 # 300 সেকেন্ড পর 10টি রাইট অপারেশন হলে স্ন্যাপশট নেওয়া হবে save 60 10000 # 60 সেকেন্ড পর 10000টি রাইট অপারেশন হলে স্ন্যাপশট নেওয়া হবেdbfilenameনির্দেশিকা: এই নির্দেশিকা দিয়ে আপনি স্ন্যাপশট ফাইলের নাম নির্ধারণ করতে পারেন।dbfilename dump.rdb # স্ন্যাপশট ফাইলের নাম dump.rdb হবেdirনির্দেশিকা: স্ন্যাপশট ফাইলটি যেখানে সেভ হবে তা নির্ধারণ করতে:dir /var/lib/redis/ # স্ন্যাপশট ফাইলের পাথ
RDB এবং AOF এর তুলনা
| বৈশিষ্ট্য | RDB (Redis Database Backup) | AOF (Append Only File) |
|---|---|---|
| পারফরম্যান্স | দ্রুত, কারণ এটি কম ব্যান্ডউইথ এবং I/O ব্যবহার করে | ধীর, কারণ প্রতিটি রাইট অপারেশন লগ করতে হয় |
| ডেটা হারানোর ঝুঁকি | স্ন্যাপশট নেওয়ার মধ্যে কিছু ডেটা হারানোর সম্ভাবনা থাকে | খুব কম ডেটা হারানোর ঝুঁকি, কারণ প্রতিটি রাইট অপারেশন লগ করা হয় |
| ডেটা পুনরুদ্ধার | স্ন্যাপশট ফাইল থেকে দ্রুত পুনরুদ্ধার করা যায় | পুরো লগ ফাইল থেকে ধীরে ধীরে পুনরুদ্ধার করা যায় |
| ডিস্ক স্পেস | কম ডিস্ক স্পেস ব্যবহার করে | বেশি ডিস্ক স্পেস ব্যবহার করে, কারণ প্রতিটি অপারেশন লিপিবদ্ধ হয় |
RDB এবং AOF একসাথে ব্যবহার
রেডিস আপনাকে RDB এবং AOF একসাথে ব্যবহার করার অনুমতি দেয়, যাতে আপনি দুটি পদ্ধতির সুবিধা নিতে পারেন। উদাহরণস্বরূপ, আপনি AOF ব্যবহার করতে পারেন যাতে ডেটার সব পরিবর্তন লগ হয়, এবং একই সাথে RDB ব্যবহার করতে পারেন যা ডিস্কে স্ন্যাপশট সংরক্ষণ করবে।
রেডিস কনফিগারেশন ফাইলে appendonly এবং save প্যারামিটার একসাথে ব্যবহার করা যেতে পারে:
appendonly yes # AOF সক্রিয়
appendfsync everysec # প্রতি সেকেন্ডে AOF সিঙ্ক করা
save 900 1 # 15 মিনিট পর স্ন্যাপশট নেওয়া
save 300 10 # 5 মিনিট পর স্ন্যাপশট নেওয়া
সারাংশ
- Persistence হল রেডিসের ক্ষমতা, যা ইন-মেমরি ডেটাকে ডিস্কে সংরক্ষণ করে যাতে সার্ভার রিস্টার্টের পর ডেটা অক্ষত থাকে।
- RDB (Redis Database Backup) একটি স্ন্যাপশটিং পদ্ধতি, যা রেডিসের ডেটাবেসের একটি নির্দিষ্ট মুহূর্তের কপি তৈরি করে এবং তা ডিস্কে সেভ করে।
- AOF (Append Only File) হল একটি লেখার লগ ফাইল যেখানে প্রতিটি রাইট অপারেশন লিপিবদ্ধ করা হয়।
- Snapshotting হল একটি কার্যকরী উপায় যাতে আপনি রেডিসের ডেটাবেসের একটি স্ন্যাপশট সেভ করে রাখতে পারেন এবং প্রয়োজন হলে তা পুনরুদ্ধার করতে পারেন।
রেডিসে ডেটা পার্সিস্টেন্স (Data Persistence) এর ধারণা হল যে, রেডিস মূলত একটি ইন-মেমরি ডেটাবেস, অর্থাৎ ডেটা RAM-এ সংরক্ষিত থাকে। তবে, রেডিস ডেটার স্থায়িত্ব নিশ্চিত করতে পার্সিস্টেন্স প্রযুক্তি প্রদান করে, যাতে রেডিস সার্ভার রিস্টার্ট বা সিস্টেম ক্র্যাশের পরও ডেটা হারিয়ে না যায়। রেডিসে পার্সিস্টেন্স নিশ্চিত করার জন্য দুটি প্রধান পদ্ধতি রয়েছে: RDB (Redis Database Backup) এবং AOF (Append Only File)।
1. RDB (Redis Database Backup)
RDB একটি স্ন্যাপশট (snapshot) তৈরি করার পদ্ধতি, যা একটি নির্দিষ্ট সময় অন্তর রেডিস ডেটাবেসের পুরো কনটেন্ট (যেমন key-value pairs) ডিস্কে সেভ করে। এই পদ্ধতিতে ডেটার কোনো পরিবর্তন হলে বা নির্দিষ্ট সময় পরে ডেটা ব্যাকআপ হয়ে যায়। RDB কনফিগারেশনটি সাধারণত একটি নির্দিষ্ট সময় পর পর স্ন্যাপশট তৈরির জন্য সেট করা হয়।
RDB-এর বৈশিষ্ট্য:
- ডেটার স্ন্যাপশট: RDB ডেটার একটি স্থির কপি (snapshot) তৈরি করে।
- ফাস্ট পারফরম্যান্স: এটি দ্রুত কাজ করে, কারণ এটি ডিস্কে স্ন্যাপশট তৈরি করতে পারে নির্দিষ্ট সময় পর পর।
- কম পারফরম্যান্সের প্রভাব: স্ন্যাপশট তৈরি করার সময় পারফরম্যান্সে কিছুটা প্রভাব পড়তে পারে।
RDB কনফিগারেশন:
RDB পার্সিস্টেন্সের জন্য redis.conf ফাইলে save নির্দেশিকা ব্যবহার করা হয়। এটি ডিফাইন করে কখন স্ন্যাপশট তৈরি হবে। উদাহরণস্বরূপ:
save 900 1 # 900 সেকেন্ড (15 মিনিট) পর 1টি রাইট অপারেশন হলে স্ন্যাপশট
save 300 10 # 300 সেকেন্ড (5 মিনিট) পর 10টি রাইট অপারেশন হলে স্ন্যাপশট
RDB এর সুবিধা:
- কোনো ইনফ্রাস্ট্রাকচার লোড বাড়ায় না: কারণ এটি ডেটার স্ন্যাপশট হিসেবে ব্যাকআপ রাখে, তাই কম পরিমাণে ডিস্ক স্পেস নেয়।
- রিস্টোর করা সহজ: এটি দ্রুত ব্যাকআপ তৈরি করে এবং সহজে রিস্টোর করা যায়।
2. AOF (Append Only File)
AOF একটি পার্সিস্টেন্স পদ্ধতি যেখানে রেডিস সমস্ত লেখার অপারেশন (write operations) ডিস্কে একটি লোগ ফাইলে রেকর্ড করে রাখে। প্রতিটি write অপারেশন একটি লাইন হিসেবে এফাইলের শেষে যুক্ত হয়। এটি ইনক্রিমেন্টাল ব্যাকআপের মত কাজ করে।
AOF-এর বৈশিষ্ট্য:
- সম্পূর্ণ লোগিং: AOF ফাইল প্রতিটি লেখার অপারেশন ডিস্কে রেকর্ড করে রাখে, তাই কোনো একটি নির্দিষ্ট পয়েন্টে ফিরে গিয়ে সমস্ত লেখার অপারেশন পুনরুদ্ধার করা সম্ভব।
- ডেটার পুরো ইতিহাস: AOF ডেটার ইতিহাস সংরক্ষণ করে, এবং এটি সর্বদা সর্বশেষ পরিবর্তন দেখতে দেয়।
AOF কনফিগারেশন:
AOF সক্রিয় করতে, redis.conf ফাইলে নিচের কনফিগারেশন সেট করতে হবে:
appendonly yes # AOF সক্রিয় করা
appendfsync everysec # প্রতি সেকেন্ডে AOF ফাইল সিঙ্ক করা
AOF এর সুবিধা:
- এফিসিয়েন্ট রিকভারি: AOF সিস্টেমে যদি কিছু ডেটা হারিয়ে যায়, তবে সিস্টেমটি সেকেন্ডের মধ্যে পুনরুদ্ধার করতে পারে।
- নির্ভুলতা: AOF প্রতি লেখার অপারেশন হিসাব করে সেভ করে, তাই এই পদ্ধতিটি খুবই নির্ভুল।
3. RDB এবং AOF একসাথে ব্যবহার করা
রেডিসে RDB এবং AOF একসাথে ব্যবহার করা সম্ভব। এই পদ্ধতিতে, আপনি দুটি পার্সিস্টেন্স মেকানিজমের সুবিধা নিতে পারেন—একটি দ্রুত ব্যাকআপ (RDB) এবং একটি সঠিক পুনরুদ্ধারের জন্য ইনক্রিমেন্টাল লগ (AOF)। আপনি যখন উভয় পদ্ধতি ব্যবহার করবেন, তখন রেডিস প্রতি সেকেন্ডে AOF সিঙ্ক করতে এবং নির্দিষ্ট সময় পর পর RDB স্ন্যাপশট নিতে পারবে।
RDB এবং AOF একসাথে কনফিগারেশন:
appendonly yes # AOF সক্রিয় করা
appendfsync everysec # প্রতি সেকেন্ডে AOF ফাইল সিঙ্ক করা
save 900 1 # 15 মিনিট পর 1টি রাইট অপারেশন হলে স্ন্যাপশট
এভাবে উভয় পদ্ধতি সক্রিয় করা হলে, রেডিস ডেটা রিস্টোর করতে AOF থেকে রিকভারি করবে এবং যদি AOF ফাইলটি ক্ষতিগ্রস্ত হয়, তাহলে RDB স্ন্যাপশটটি থেকে রিকভারি করা যাবে।
4. RDB বনাম AOF
- RDB:
- দ্রুত পারফরম্যান্স।
- কম ডিস্ক স্পেস নেয়।
- পুনরুদ্ধার কিছুটা সময়সাপেক্ষ।
- স্ন্যাপশট তৈরি নির্দিষ্ট সময় পর পর।
- AOF:
- রিয়েল-টাইম রাইট অপারেশন লগিং।
- বড় ডিস্ক স্পেস নিতে পারে, কারণ প্রতিটি অপারেশন সংরক্ষিত হয়।
- পুনরুদ্ধার দ্রুত এবং নির্ভুল।
- পুনরুদ্ধারের সময় বেশি হতে পারে যদি AOF ফাইল বড় হয়।
সারাংশ
রেডিসে ডেটা পার্সিস্টেন্স দুটি প্রধান পদ্ধতিতে করা হয়: RDB এবং AOF। RDB একটি নির্দিষ্ট সময় পর পর স্ন্যাপশট তৈরি করে এবং AOF প্রতিটি write অপারেশন লগ করে রাখে। আপনি RDB এবং AOF উভয় পদ্ধতি একসাথে ব্যবহার করতে পারেন, যাতে উভয় পদ্ধতির সুবিধা পাওয়া যায়—দ্রুত ব্যাকআপ এবং নির্ভুল রিকভারি।
RDB (Redis Database Backup) স্ন্যাপশট হল রেডিসের একটি পার্সিস্টেন্স মেকানিজম যা নির্দিষ্ট সময় পর পর রেডিস ডেটাবেসের ডেটার স্ন্যাপশট তৈরি করে এবং সেই স্ন্যাপশট ডিস্কে সংরক্ষণ করে। এটি ডেটার ব্যাকআপ তৈরি করতে ব্যবহৃত হয়, যাতে ডেটা হারানো বা সার্ভার ক্র্যাশ হওয়ার পর পুনরুদ্ধার করা যায়।
RDB স্ন্যাপশট কনফিগারেশন সাধারণত রেডিস কনফিগারেশন ফাইল (redis.conf) দ্বারা পরিচালিত হয়।
RDB Snapshot কনফিগারেশন সেটিংস
RDB স্ন্যাপশট কনফিগার করার জন্য, আপনি redis.conf ফাইলটি কনফিগার করতে পারেন। নিচে কিছু প্রধান কনফিগারেশন প্যারামিটার দেওয়া হল যা RDB স্ন্যাপশট পরিচালনা করতে সাহায্য করে:
১. save প্যারামিটার
save প্যারামিটারটি নির্ধারণ করে যে কত সময় পর পর স্ন্যাপশট তৈরি হবে এবং কতটি রাইট অপারেশন হওয়া উচিত। এই প্যারামিটারটি একটি কমা দিয়ে পৃথক করা হয়, যেমন:
সিনট্যাক্স:
save <seconds> <changes>
ব্যাখ্যা:
- : সময় (সেকেন্ডে) যেখানে রেডিস স্ন্যাপশট তৈরি করবে।
- : এই সময়ের মধ্যে কতটি রাইট অপারেশন (SET, DEL, ইত্যাদি) ঘটতে হবে।
উদাহরণ:
save 900 1 # 900 সেকেন্ডে (15 মিনিট) 1টি রাইট অপারেশন হলে স্ন্যাপশট নেবে
save 300 10 # 300 সেকেন্ডে (5 মিনিট) 10টি রাইট অপারেশন হলে স্ন্যাপশট নেবে
save 60 10000 # 60 সেকেন্ডে 10000টি রাইট অপারেশন হলে স্ন্যাপশট নেবে
উপরের উদাহরণগুলোতে, আপনি দেখবেন যে:
- প্রথমে, 15 মিনিটে একটি পরিবর্তন হলে স্ন্যাপশট হবে।
- দ্বিতীয় উদাহরণে, 5 মিনিটে 10টি পরিবর্তন হলে স্ন্যাপশট হবে।
- তৃতীয় উদাহরণে, প্রতি মিনিটে 10000টি রাইট অপারেশন হলে স্ন্যাপশট তৈরি হবে।
২. dir প্যারামিটার
এই প্যারামিটারটি স্ন্যাপশট ফাইল সংরক্ষণের ডিরেক্টরি নির্ধারণ করে।
সিনট্যাক্স:
dir <directory_path>
উদাহরণ:
dir /var/lib/redis
এটি রেডিসের স্ন্যাপশট ফাইল /var/lib/redis ডিরেক্টরিতে সংরক্ষণ করবে।
৩. dbfilename প্যারামিটার
এই প্যারামিটারটি ডিফল্ট নাম dump.rdb দিয়ে স্ন্যাপশট ফাইলটির নাম নির্ধারণ করে।
সিনট্যাক্স:
dbfilename <filename>
উদাহরণ:
dbfilename mydb.rdb
এটি স্ন্যাপশট ফাইলের নাম হিসেবে mydb.rdb ব্যবহার করবে।
৪. rdbcompression প্যারামিটার
এই প্যারামিটারটি RDB ফাইল সঞ্চয় করার সময় ডেটা কম্প্রেস করার জন্য ব্যবহার করা হয়। এটি ডিফল্টভাবে yes থাকে, যা ডেটা কম্প্রেস করে সংরক্ষণ করে।
সিনট্যাক্স:
rdbcompression yes
আপনি যদি কম্প্রেশন বন্ধ করতে চান, তাহলে এটি no করতে পারেন:
rdbcompression no
৫. stop-writes-on-bgsave-error প্যারামিটার
এই প্যারামিটারটি নির্ধারণ করে যে, যদি স্ন্যাপশট তৈরি করার সময় কোনো সমস্যা হয়, তবে কি রেডিস রাইট অপারেশন বন্ধ করবে কিনা। ডিফল্টভাবে, এটি yes থাকে।
সিনট্যাক্স:
stop-writes-on-bgsave-error yes
যদি আপনি এটি পরিবর্তন করতে চান:
stop-writes-on-bgsave-error no
এটি স্ন্যাপশট তৈরির সময় কোনো ত্রুটি হলে, রাইট অপারেশন চালু রাখবে।
৬. appendonly প্যারামিটার
যদি আপনি AOF (Append Only File) ব্যবহার করতে চান, এটি yes করতে হবে। AOF ফাইল RDB স্ন্যাপশটের সাথে একত্রিত হতে পারে এবং ডেটার আরও ভাল পার্সিস্টেন্স সরবরাহ করে।
সিনট্যাক্স:
appendonly yes
RDB স্ন্যাপশট কনফিগারেশন উদাহরণ:
# স্ন্যাপশট ফাইল সঞ্চয় করার ডিরেক্টরি
dir /var/lib/redis
# স্ন্যাপশট ফাইলের নাম
dbfilename dump.rdb
# 15 মিনিট পর একটী পরিবর্তন হলে স্ন্যাপশট তৈরি হবে
save 900 1
# 5 মিনিটে 10টি পরিবর্তন হলে স্ন্যাপশট তৈরি হবে
save 300 10
# 1 মিনিটে 10000টি পরিবর্তন হলে স্ন্যাপশট তৈরি হবে
save 60 10000
# রেডিসের স্ন্যাপশট ফাইল কম্প্রেস করা হবে
rdbcompression yes
# স্ন্যাপশট তৈরির সময় কোনো সমস্যা হলে রাইট অপারেশন বন্ধ হবে
stop-writes-on-bgsave-error yes
RDB Snapshot কিভাবে ম্যানুয়ালি তৈরি করবেন
আপনি কখনও চাইলে ম্যানুয়ালি RDB স্ন্যাপশট তৈরি করতে পারেন। রেডিসের CLI থেকে BGSAVE কমান্ড ব্যবহার করে আপনি একটি ব্যাকগ্রাউন্ড প্রক্রিয়ায় স্ন্যাপশট তৈরি করতে পারেন।
BGSAVE
এটি ফনction call-এর মাধ্যমে একটি ব্যাকগ্রাউন্ড প্রসেস শুরু করবে যা স্ন্যাপশট তৈরি করবে।
সারাংশ
RDB (Redis Database Backup) স্ন্যাপশট হল রেডিসের পার্সিস্টেন্স মেকানিজম যা নির্দিষ্ট সময় পর পর ডেটার স্ন্যাপশট তৈরি করে। এটি redis.conf কনফিগারেশন ফাইলে save, dir, dbfilename, rdbcompression, এবং অন্যান্য প্যারামিটার ব্যবহার করে কনফিগার করা যায়। স্ন্যাপশট কনফিগারেশনের মাধ্যমে আপনি আপনার রেডিস ডেটাবেসের ব্যাকআপ কিভাবে তৈরি হবে তা নিয়ন্ত্রণ করতে পারেন।
AOF (Append Only File) রেডিসের একটি পার্সিস্টেন্স মেকানিজম, যা প্রতিটি রেডিস রাইট অপারেশনকে একটি ফাইলে অ্যাপেন্ড (যে কোন লেখা অপারেশন) করে রাখে। AOF রেডিস সার্ভারের ডেটা পার্সিস্টেন্স নিশ্চিত করতে ব্যবহৃত হয়, যাতে সার্ভার বন্ধ হলেও আপনার ডেটা সুরক্ষিত থাকে এবং পুনরুদ্ধার করা সম্ভব হয়।
এটি RDB (Redis Database Backup) থেকে ভিন্ন, কারণ AOF প্রতিটি লেখা অপারেশনকে ডিস্কে লিপিবদ্ধ করে এবং সার্ভারের পুনরুদ্ধারের সময় ডেটা পুনরুদ্ধারের জন্য ব্যবহার করা হয়।
AOF কনফিগারেশন পদ্ধতি
রেডিসের AOF সক্রিয় এবং কনফিগার করার জন্য রেডিসের কনফিগারেশন ফাইল (redis.conf) এ কিছু সেটিং পরিবর্তন করতে হবে। নিচে AOF কনফিগারেশন সম্পর্কে বিস্তারিত আলোচনা করা হলো:
১. AOF সক্রিয় করা
রেডিস কনফিগারেশন ফাইলে AOF সক্রিয় করতে, আপনাকে appendonly প্যারামিটারটি yes করতে হবে। এটি নিশ্চিত করবে যে, রেডিস প্রতিটি রাইট অপারেশনকে একটি ফাইলে লিখবে।
কমান্ড:
appendonly yes
এটি রেডিসকে নির্দেশ দেবে যে, ডেটার যেকোনো পরিবর্তন (যেমন SET, DEL, LPUSH ইত্যাদি) AOF ফাইলে রেকর্ড করা হবে।
২. AOF ফাইলের অবস্থান নির্ধারণ করা
আপনি AOF ফাইলের অবস্থান নির্ধারণ করতে পারেন। ডিফল্টভাবে, এটি রেডিসের কাজ করার ডিরেক্টরিতে appendonly.aof নামে ফাইল তৈরি হয়।
কমান্ড:
appendfilename "appendonly.aof"
এটি আপনাকে AOF ফাইলের নাম ও অবস্থান কনফিগার করতে সহায়তা করবে। আপনি আপনার পছন্দ অনুযায়ী ফাইলের নাম এবং পাথ পরিবর্তন করতে পারেন।
৩. AOF ফাইল সিঙ্ক করার পদ্ধতি নির্ধারণ করা
AOF ফাইল সিঙ্ক করার তিনটি পদ্ধতি রয়েছে: no, everysec, এবং always। আপনি appendfsync প্যারামিটার ব্যবহার করে এই পদ্ধতিগুলি নির্বাচন করতে পারেন।
- no: সিঙ্কিং করা হবে না। এটি রেডিসকে ডিস্কে লেখার জন্য অটো সিঙ্কিং নিশ্চিত করবে না।
- everysec: প্রতি সেকেন্ডে সিঙ্ক হবে। এটি সাধারণত প্রস্তাবিত পদ্ধতি।
- always: প্রতিটি অপারেশনের পরে সিঙ্ক হবে, যা ডিস্কের I/O সক্ষমতা কমাতে পারে।
কমান্ড:
appendfsync everysec # প্রতি সেকেন্ডে সিঙ্ক হবে
এটি সাধারণত everysec সেটিং প্রস্তাবিত, কারণ এটি ভালো পারফরম্যান্স এবং পার্সিস্টেন্স সমন্বয় করে।
৪. AOF পুনর্নির্মাণ (Rewrite) কনফিগারেশন
AOF ফাইলের আকার বাড়তে থাকে যতটা বেশি রাইট অপারেশন হবে। এই কারণে রেডিস AOF Rewrite সাপোর্ট করে, যা AOF ফাইলের আকার কমিয়ে এনে পুরনো অপারেশনগুলোকে একটি একক ফাইলে পুনর্লিখন করে।
- auto-aof-rewrite-percentage: এটি AOF ফাইল পুনর্নির্মাণের জন্য একটি শতাংশ নির্দেশ করে। উদাহরণস্বরূপ, 100 শতাংশ অর্থাৎ AOF ফাইলের আকার ডাবল হলে এটি পুনর্নির্মাণ শুরু করবে।
- auto-aof-rewrite-min-size: এটি AOF ফাইলের ন্যূনতম আকার নির্ধারণ করে, যাতে পুনর্নির্মাণ শুরু না হয় যতক্ষণ না ফাইল এই আকারে পৌঁছায়।
কমান্ড:
auto-aof-rewrite-percentage 100 # ফাইলের আকার 100% বেড়ে গেলে পুনর্লিখন হবে
auto-aof-rewrite-min-size 64mb # ফাইলের আকার অন্তত 64MB হওয়া উচিত
৫. AOF ফাইল বন্ধ করা
যদি আপনি AOF নিষ্ক্রিয় করতে চান, তাহলে appendonly প্যারামিটারটি no করতে হবে।
কমান্ড:
appendonly no
এটি AOF পদ্ধতিটি সম্পূর্ণভাবে বন্ধ করে দেবে, কিন্তু যদি AOF সিঙ্কিংয়ের কারণে আপনার ডেটা যদি কখনও ডিস্কে না লেখা হয়, তবে তা হারিয়ে যাবে।
৬. AOF এর নিরাপত্তা এবং পারফরম্যান্স
- ফাইল সিঙ্কিং:
everysecসিঙ্কিং পদ্ধতি অনেকাংশে ভাল পারফরম্যান্স প্রদান করে, কারণ এতে ডিস্ক I/O কম থাকে এবং ডেটার সুরক্ষাও থাকে। - পারফরম্যান্সের দিকে খেয়াল রাখুন: AOF-এ always সিঙ্কিং করলে অনেক বেশি ডিস্ক I/O সৃষ্টি হতে পারে, যা পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে। সাধারণভাবে everysec ব্যবহারের পরামর্শ দেওয়া হয়।
৭. AOF থেকে ডেটা পুনরুদ্ধার
যখন রেডিস রিস্টার্ট করা হয়, তখন এটি AOF ফাইল থেকে সকল রাইট অপারেশন পুনরুদ্ধার করবে এবং সেগুলো আবার সিস্টেমে চালু করবে।
এটি নিশ্চিত করে যে, যদি সার্ভার ক্র্যাশ করে, তবে সর্বশেষ সফল রাইট অপারেশন পুনরুদ্ধার করা যাবে।
সারাংশ
- AOF (Append Only File) রেডিসের একটি শক্তিশালী পার্সিস্টেন্স মেকানিজম যা সমস্ত রাইট অপারেশনকে একটি ফাইলে সংরক্ষণ করে।
- AOF কনফিগার করার জন্য
redis.confফাইলেappendonly,appendfsync, এবংauto-aof-rewrite-*প্যারামিটারগুলি ব্যবহার করতে হয়। - AOF সিঙ্ক করার পদ্ধতি, পুনর্নির্মাণ, এবং সুরক্ষার মাধ্যমে আপনি রেডিস ডেটার পার্সিস্টেন্স এবং পারফরম্যান্স কাস্টমাইজ করতে পারবেন।
Snapshot (RDB) এবং AOF (Append Only File) হল রেডিসের ডেটা পার্সিস্টেন্সের দুইটি প্রধান পদ্ধতি। এই দুটি পদ্ধতি রেডিস সার্ভারের ডেটা ডিস্কে সেভ করতে ব্যবহৃত হয়, তবে তাদের কাজ করার পদ্ধতি এবং বৈশিষ্ট্যগুলো আলাদা।
নিচে Snapshot (RDB) এবং AOF এর মধ্যে পার্থক্য বিস্তারিতভাবে ব্যাখ্যা করা হলো:
১. Snapshot (RDB - Redis Database Backup)
RDB হল রেডিসের একটি পদ্ধতি যা নির্দিষ্ট সময় পর পর ডেটার স্ন্যাপশট নেয় এবং সেই স্ন্যাপশটটি ডিস্কে সংরক্ষণ করে। এটি মূলত ডেটার একটি পয়েন্ট-ইন-টাইম কপি তৈরি করে।
বৈশিষ্ট্য:
- পিরিওডিক স্ন্যাপশট: RDB স্ন্যাপশট নির্দিষ্ট সময় পর পর তৈরি হয়, যেমন প্রতি 5 মিনিটে একবার, অথবা প্রতি 10000টি রাইট অপারেশনের পর।
- পারফরম্যান্স: RDB কম পারফরম্যান্স ইমপ্যাক্টের সাথে কাজ করে, কারণ এটি শুধুমাত্র নির্দিষ্ট সময় পর পর স্ন্যাপশট নেয়।
- ডিস্ক স্পেস: RDB সাধারণত কম ডিস্ক স্পেস ব্যবহার করে কারণ এটি শুধুমাত্র স্ন্যাপশট ফাইল সংরক্ষণ করে।
- ডেটা রিকভারি: RDB স্ন্যাপশট থেকে ডেটা রিকভারির সময় কিছু ডেটা হারানো হতে পারে, কারণ স্ন্যাপশট একবার তৈরি হওয়ার পর পরবর্তী স্ন্যাপশট তৈরি না হওয়া পর্যন্ত ডেটা ডিস্কে সেভ হয় না।
- ফাস্ট রিকভারি: RDB ফাইল রিকভার করা অনেক দ্রুত হয় কারণ স্ন্যাপশট একত্রিত আকারে থাকে।
কনফিগারেশন:
RDB স্ন্যাপশট নির্দিষ্ট সময় পর পর তৈরি করতে, redis.conf ফাইলে save কনফিগারেশন ব্যবহার করা হয়:
save 900 1 # 900 সেকেন্ড পর 1টি রাইট অপারেশন হলে স্ন্যাপশট তৈরি হবে
save 300 10 # 300 সেকেন্ড পর 10টি রাইট অপারেশন হলে স্ন্যাপশট তৈরি হবে
২. AOF (Append Only File)
AOF হল একটি পদ্ধতি যা রেডিসের সমস্ত লেখা অপারেশনকে ডিস্কে লিপিবদ্ধ করে। এটি প্রতিটি রাইট অপারেশনকে একটি ফাইলে অ্যাপেন্ড (যোগ) করে রাখে। AOF ফাইলের মাধ্যমে রেডিসের সমস্ত রাইট অপারেশন পুনরায় সম্পন্ন করা যায়।
বৈশিষ্ট্য:
- লগিং: AOF প্রতিটি রাইট অপারেশনকে লগ আকারে ডিস্কে সেভ করে। যেমন
SET,DEL,INCRইত্যাদি। - ডেটা রিকভারি: AOF ফাইলের মাধ্যমে রিকভারি অনেক নির্ভুল হয়, কারণ এটি প্রতিটি রাইট অপারেশন লিপিবদ্ধ করে।
- পারফরম্যান্স ইমপ্যাক্ট: AOF এর পারফরম্যান্সে কিছুটা প্রভাব পড়ে, কারণ এটি প্রতিটি রাইট অপারেশনকে ডিস্কে লিখে রাখে।
- ডিস্ক স্পেস: AOF সাধারণত বড় হয়, কারণ এটি রাইট অপারেশনগুলো প্রতিবার ফাইলে অ্যাপেন্ড করে রাখে।
- অফলাইন রিকভারি: AOF ফাইল রিকভারি করার সময় কিছু সময় নিতে পারে, কারণ এটি সেগুলিকে পুনরায় সম্পন্ন করতে হয়।
কনফিগারেশন:
AOF সক্ষম করতে, redis.conf ফাইলে appendonly প্যারামিটারটি yes করতে হবে:
appendonly yes # AOF সক্রিয় করা
appendfsync everysec # প্রতি সেকেন্ডে AOF ফাইল সিঙ্ক করা
Snapshot (RDB) এবং AOF এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | RDB (Snapshot) | AOF (Append Only File) |
|---|---|---|
| ডেটা পার্সিস্টেন্স | নির্দিষ্ট সময় পর পর স্ন্যাপশট তৈরি করা হয়। | প্রতিটি রাইট অপারেশনকে ডিস্কে লগ আকারে সেভ করা হয়। |
| পারফরম্যান্স | কম পারফরম্যান্স ইমপ্যাক্ট। | কিছু পারফরম্যান্স ইমপ্যাক্ট হতে পারে। |
| ডেটা হারানো | কিছু ডেটা হারানো সম্ভব (যদি স্ন্যাপশট তৈরি না হয়)। | AOF নিশ্চিতভাবে ডেটা সেভ করে, হারানো সম্ভাবনা কম। |
| ডিস্ক স্পেস | কম ডিস্ক স্পেস ব্যবহৃত হয়। | বড় ডিস্ক স্পেস ব্যবহৃত হতে পারে। |
| ফাস্ট রিকভারি | দ্রুত রিকভারি (একক স্ন্যাপশট ফাইল)। | রিকভারি সময় বেশি (লম্বা AOF ফাইল পুনঃরায় প্রসেস করা হয়)। |
| নির্ভুলতা | স্ন্যাপশট নির্ভরযোগ্য নয় (স্ন্যাপশট তৈরির সময় পর্যন্ত ডেটা সেভ হয়)। | প্রতিটি রাইট অপারেশন সেভ হয়ে থাকে। |
| ব্যবহার | দ্রুত স্ন্যাপশট তৈরির জন্য উপযুক্ত। | ডেটার সম্পূর্ণ ইতিহাস রক্ষার জন্য উপযুক্ত। |
সারাংশ
- RDB একটি স্ন্যাপশট-ভিত্তিক পার্সিস্টেন্স মেকানিজম, যা নির্দিষ্ট সময় পর পর ডেটার স্ন্যাপশট নেয় এবং ফাস্ট রিকভারি সক্ষম।
- AOF একটি লগ-ভিত্তিক পার্সিস্টেন্স মেকানিজম, যা প্রতিটি রাইট অপারেশন ডিস্কে অ্যাপেন্ড করে এবং ডেটার যথাযথ ইতিহাস সংরক্ষণ করে।
অন্যথায়, আপনি রেডিসে RDB এবং AOF একসাথে ব্যবহার করতে পারেন, যার ফলে এটি স্ন্যাপশট এবং লগ উভয় রিকভারি মেকানিজমকে একত্রে ব্যবহার করবে।
Read more