Point-in-time Recovery (PITR) হল একটি ডেটাবেস রিকভারি কৌশল যা আপনাকে নির্দিষ্ট একটি সময়ের বা তারিখের পয়েন্টে ডেটাবেস পুনরুদ্ধার করতে সহায়তা করে। এটি বিশেষত ডেটাবেসে কোনো ত্রুটি, সিস্টেম ক্র্যাশ, বা ম্যানুয়াল ত্রুটির কারণে ডেটা ক্ষতি হলে অত্যন্ত কার্যকরী। PITR ব্যবহৃত হয় যখন আপনাকে ডেটাবেসের সর্বশেষ ব্যাকআপ থেকে পুনরুদ্ধার করে, তার পরে ঘটে যাওয়া সমস্ত লেনদেন থেকে কেবল নির্দিষ্ট একটি সময় পর্যন্ত ডেটাবেসের অবস্থা ফিরিয়ে আনতে হয়।
PITR কী?
Point-in-time Recovery (PITR) এক ধরনের ডেটাবেস রিকভারি প্রক্রিয়া, যা আপনাকে একটি নির্দিষ্ট সময়ে বা তারিখে ডেটাবেসের অবস্থা পুনরুদ্ধার করার সুযোগ দেয়। এটি সাধারণত ঘটে যখন একটি সিস্টেম ক্র্যাশের পর, ডেটা ক্যোরাপশন বা কোনো ভুল ইনসার্ট/আপডেটের কারণে ডেটাবেসের অবস্থা সঠিক থাকে না।
PITR সাধারণত নিম্নলিখিত ক্ষেত্রে ব্যবহার হয়:
- যখন সিস্টেমের ক্র্যাশ বা ডেটাবেস সিস্টেমের কোনো ত্রুটি ঘটে।
- ভুল ডেটা ইনসার্ট বা আপডেট হলে।
- সিস্টেম বা ডেটাবেসে কোনো ম্যানুয়াল ত্রুটি ঘটে।
PITR কিভাবে কাজ করে?
PITR তে দুটি প্রধান উপাদান রয়েছে:
- Full Backup: এটি আপনার ডেটাবেসের সম্পূর্ণ ব্যাকআপ (যেমন, একটি সম্পূর্ণ
mysqldumpবাphysical backup) যা একটি নির্দিষ্ট সময়ের পয়েন্টে তৈরি হয়। - Binary Logs: মারিয়া ডিবি-তে সব পরিবর্তনগুলি binary logs-এ (বাইনরি লগ) লেখা হয়। এই লগগুলি সমস্ত INSERT, UPDATE, DELETE ইভেন্ট রেকর্ড করে এবং ডেটাবেসের লেনদেনের ইতিহাসের ট্র্যাক রাখে।
PITR করতে হলে, প্রথমে একটি Full Backup নিতে হবে, তারপর সেই ব্যাকআপ থেকে ডেটাবেস পুনরুদ্ধার করতে হবে এবং তারপরে binary logs ব্যবহার করে নির্দিষ্ট সময়ে পৌঁছানোর জন্য লগগুলি পুনরুদ্ধার করতে হবে।
PITR প্রক্রিয়া
Full Backup গ্রহণ
প্রথমে, একটি সম্পূর্ণ ব্যাকআপ নিন, যা একটি নির্দিষ্ট সময়ে ডেটাবেসের পুরো অবস্থান ধারণ করে। মারিয়া ডিবি-তে এটিmysqldumpবাXtraBackupব্যবহার করে নেওয়া যেতে পারে।উদাহরণস্বরূপ,
mysqldumpব্যবহার করে ব্যাকআপ:mysqldump -u root -p --all-databases --single-transaction > full_backup.sqlBinary Log সমর্থন সক্রিয় করা
মারিয়া ডিবি-তে binary logs সক্রিয় করতে হবে, যাতে সমস্ত লেনদেন লগ করা হয়। এটি সাধারণতmy.cnfফাইলে কনফিগার করে সক্রিয় করা হয়:[mysqld] log-bin = /var/log/mysql/mysql-bin server-id = 1 binlog-format = ROWlog-bin এর মাধ্যমে আপনি সিস্টেমে বাইনরি লগ সংরক্ষণ করতে পারবেন।
- PITR জন্য প্রস্তুতি
PITR করার জন্য আপনার কাছে একটি Full Backup এবং Binary Logs থাকতে হবে। এখন, ব্যাকআপ নেওয়ার পরের সমস্ত binary log ফাইলগুলো সংরক্ষণ করুন, কারণ এগুলি PITR প্রক্রিয়ায় ব্যবহৃত হবে। Full Backup থেকে পুনরুদ্ধার
আপনাকে প্রথমে full backup থেকে ডেটাবেস পুনরুদ্ধার করতে হবে। উদাহরণস্বরূপ, যদিfull_backup.sqlফাইলটি ব্যাকআপ হিসেবে নেওয়া হয়ে থাকে, তাহলে এটি পুনরুদ্ধার করতে হবে:mysql -u root -p < full_backup.sqlBinary Logs ব্যবহার করে পুনরুদ্ধার
একবার ব্যাকআপ পুনরুদ্ধার হলে, তারপরে আপনি যে binary log গুলি সংরক্ষণ করেছেন তা ব্যবহার করে নির্দিষ্ট সময়ে পৌঁছানোর জন্য ডেটাবেস আপডেট করতে হবে।mysqlbinlog /var/log/mysql/mysql-bin.000001 | mysql -u root -p mysqlbinlog /var/log/mysql/mysql-bin.000002 | mysql -u root -pপ্রতিটি binary log ফাইলের মাধ্যমে সমস্ত লেনদেন পুনরুদ্ধার হবে, যতক্ষণ না আপনি সেই নির্দিষ্ট সময়ে পৌঁছান।
- তথ্য সঠিক সময়ের পয়েন্টে পুনরুদ্ধার করা
যখন আপনি একটি নির্দিষ্ট সময়ে পৌঁছাতে চান, তখন আপনি সেই সময়ের আগে সমস্ত binary log ফাইল অ্যাপ্লাই করতে পারেন। যদি আপনি কোনও নির্দিষ্ট ট্রানজেকশন বাদ দিতে চান, তবে আপনি তার আগে পর্যন্ত binary log অ্যাপ্লাই করতে পারেন।
PITR কনফিগারেশন এবং ব্যাকআপের নির্দেশিকা
- ব্যাকআপ সিডিউল করা
আপনাকে নিয়মিত ব্যাকআপ নিতে হবে। এটি এমনভাবে কনফিগার করতে হবে যাতে ব্যাকআপগুলো নতুন লেনদেনের সঙ্গে সিঙ্ক্রোনাইজড থাকে। উদাহরণস্বরূপ, আপনিcronjob ব্যবহার করে নিয়মিত ব্যাকআপ নিতে পারেন। Binary Log Rotation
নিয়মিত binary log ফাইলের আর্কাইভ এবং রোটেশন প্রয়োজন। অনেক বড় সিস্টেমে, binary log দ্রুত বাড়তে পারে এবং এতে সিস্টেমের পারফরম্যান্সের ওপর প্রভাব পড়তে পারে। রোটেশন সেট করতেexpire_logs_daysব্যবহার করতে পারেন।[mysqld] expire_logs_days = 7এটি ৭ দিনের বেশি পুরোনো binary logs অটোমেটিক্যালি ডিলিট করে দেবে।
- কনফিগারেশন ফাইল নিরাপত্তা
আপনার my.cnf কনফিগারেশন ফাইলে binary log এবং server-id এর মতো গুরুত্বপূর্ণ তথ্য থাকে, তাই এগুলি সুরক্ষিত রাখা গুরুত্বপূর্ণ।
PITR-এর সুবিধা
- নির্দিষ্ট সময়ে রিকভারির সক্ষমতা: PITR আপনাকে সিস্টেমের কোন নির্দিষ্ট সময়ে ডেটাবেস ফিরিয়ে আনার সুবিধা দেয়, যেমন সিস্টেম ক্র্যাশ বা ডেটা লসের পর।
- ডেটার অখণ্ডতা রক্ষা: এটি আপনার ডেটা অখণ্ডতা নিশ্চিত করতে সাহায্য করে, যেহেতু আপনি শুধু লগগুলির মাধ্যমে নির্দিষ্ট পরিবর্তনগুলি পুনরুদ্ধার করতে পারেন।
- ফুল ব্যাকআপের পাশাপাশি সময় ভিত্তিক লেনদেন: একটি পূর্ণ ব্যাকআপের সাথে সব লেনদেনের ট্র্যাক রেখে আপনি নিরাপদে ডেটাবেস রিকভারি করতে পারেন।
PITR-এর সীমাবদ্ধতা
- ব্যাকআপের আকার: পূর্ণ ব্যাকআপের আকার বেশ বড় হতে পারে, এবং পুরো ডেটাবেস পুনরুদ্ধার করতে অনেক সময় লাগতে পারে।
- মেমরি এবং স্টোরেজ: binary logs এবং full backup সংরক্ষণে যথেষ্ট মেমরি এবং স্টোরেজ প্রয়োজন।
- ব্যাকআপ এবং লগ ম্যানেজমেন্ট: binary logs এবং ব্যাকআপ ফাইলগুলি সঠিকভাবে পরিচালনা না করলে রিকভারি প্রক্রিয়া জটিল হয়ে পড়তে পারে।
সারাংশ
Point-in-time Recovery (PITR) একটি শক্তিশালী ডেটাবেস রিকভারি কৌশল যা আপনাকে নির্দিষ্ট সময়ে ডেটাবেস পুনরুদ্ধার করতে সক্ষম করে। এটি Full Backup এবং Binary Logs ব্যবহার করে কাজ করে। PITR সিস্টেম ক্র্যাশ, ভুল ইনপুট বা অন্যান্য ত্রুটির পর ডেটা পুনরুদ্ধারে অত্যন্ত কার্যকরী। সঠিক কনফিগারেশন এবং ব্যাকআপ প্রক্রিয়া ব্যবহার করে আপনি ডেটাবেসের সর্বশেষ অবস্থায় ফিরে যেতে পারেন এবং ডেটার অখণ্ডতা বজায় রাখতে পারেন।
Read more