MariaDB-তে ডেটাবেজ ব্যাকআপ এবং রিকভারি হল ডেটাবেস ম্যানেজমেন্টের অন্যতম গুরুত্বপূর্ণ অংশ। সঠিক ব্যাকআপ কৌশল ব্যবহারের মাধ্যমে ডেটাবেসের ডেটা নিরাপদ রাখা যায় এবং প্রয়োজনে ডেটা পুনরুদ্ধার করা সম্ভব হয়। MariaDB-তে ব্যাকআপ ও রিকভারি করার জন্য বেশ কয়েকটি পদ্ধতি রয়েছে, যেমন কমান্ড লাইন টুল, স্ক্রিপ্ট এবং থার্ড-পার্টি টুল ব্যবহার করা।
MariaDB ব্যাকআপ পদ্ধতিসমূহ
MariaDB-তে প্রধানত দুটি ধরণের ব্যাকআপ পদ্ধতি ব্যবহার করা হয়:
- লজিক্যাল ব্যাকআপ (Logical Backup): এটি SQL ফাইল হিসেবে ডেটাবেসের কাঠামো এবং ডেটা সংরক্ষণ করে।
- ফিজিক্যাল ব্যাকআপ (Physical Backup): এটি ডেটাবেসের ইনফরমেশন ডিরেক্টরি এবং ফাইল সিস্টেমের মাধ্যমে ব্যাকআপ তৈরি করে।
১. mysqldump কমান্ড ব্যবহার করে ব্যাকআপ (Using mysqldump)
MariaDB-তে mysqldump একটি প্রধান টুল যা লজিক্যাল ব্যাকআপ তৈরি করতে ব্যবহৃত হয়। এটি ডেটাবেসের কাঠামো এবং ডেটা SQL ফাইল হিসেবে এক্সপোর্ট করে।
mysqldump ব্যাকআপ কমান্ড:
mysqldump -u username -p database_name > backup_file.sql
ব্যাখ্যা:
-u username: MariaDB ইউজারের নাম।-p: পাসওয়ার্ডের জন্য প্রম্পট।database_name: যে ডেটাবেসটির ব্যাকআপ নিতে চান।> backup_file.sql: ব্যাকআপ ফাইলের নাম যা SQL ফরম্যাটে সংরক্ষণ হবে।
উদাহরণ:
mysqldump -u root -p mydatabase > mydatabase_backup.sql
এটি mydatabase ডেটাবেসের ব্যাকআপ mydatabase_backup.sql নামে তৈরি করবে।
২. পুরো সার্ভারের ব্যাকআপ (Backing up All Databases)
যদি পুরো সার্ভারের সকল ডেটাবেসের ব্যাকআপ নিতে চান, তাহলে --all-databases অপশন ব্যবহার করতে পারেন।
mysqldump -u root -p --all-databases > all_databases_backup.sql
এটি MariaDB সার্ভারের সমস্ত ডেটাবেসের ব্যাকআপ তৈরি করবে।
৩. ডেটাবেসের কাঠামো (Structure Only) ব্যাকআপ
কখনও কখনও শুধুমাত্র ডেটাবেসের কাঠামো (ডেটা ছাড়াই) ব্যাকআপ নেওয়ার প্রয়োজন হতে পারে। এটি --no-data অপশন দিয়ে করা যায়।
mysqldump -u root -p --no-data mydatabase > mydatabase_structure.sql
এটি mydatabase ডেটাবেসের শুধু কাঠামো (টেবিল, ভিউ, সূচী ইত্যাদি) ব্যাকআপ করবে।
৪. নির্দিষ্ট টেবিলের ব্যাকআপ
যদি শুধুমাত্র এক বা একাধিক টেবিলের ব্যাকআপ নিতে চান, তাহলে টেবিলের নাম উল্লেখ করতে হবে।
mysqldump -u root -p mydatabase table1 table2 > mydatabase_tables_backup.sql
এটি mydatabase ডেটাবেসের table1 এবং table2 টেবিলের ব্যাকআপ তৈরি করবে।
MariaDB ফিজিক্যাল ব্যাকআপ
ফিজিক্যাল ব্যাকআপে ডেটাবেসের ডিরেক্টরি এবং ফাইল সিস্টেমের মাধ্যমে ব্যাকআপ নেওয়া হয়। MariaDB-তে ফিজিক্যাল ব্যাকআপ তৈরির জন্য সাধারণত xtrabackup (Percona XtraBackup) বা MariaDB নিজস্ব টুলস ব্যবহার করা হয়।
Percona XtraBackup ব্যবহার করে ব্যাকআপ
Percona XtraBackup হল একটি ওপেন-সোর্স টুল যা MariaDB এবং MySQL-এর ইনক্রিমেন্টাল এবং পূর্ণ ব্যাকআপ তৈরির জন্য ব্যবহৃত হয়। এটি দ্রুত ব্যাকআপ এবং রিকভারি প্রদান করে।
ব্যাকআপ কমান্ড:
xtrabackup --backup --target-dir=/path/to/backup/dir
এটি পুরো ডেটাবেসের ফিজিক্যাল ব্যাকআপ তৈরি করবে।
ব্যাকআপ রিকভারি (Restoring Physical Backup)
ফিজিক্যাল ব্যাকআপ পুনরুদ্ধার করতে প্রথমে ব্যাকআপ ফাইলটি প্রস্তুত করতে হবে এবং তারপরে MariaDB সার্ভারে পুনরুদ্ধার করতে হবে।
xtrabackup --prepare --target-dir=/path/to/backup/dir
xtrabackup --copy-back --target-dir=/path/to/backup/dir
MariaDB রিকভারি পদ্ধতিসমূহ
ডেটাবেস রিকভারি হল একটি গুরুত্বপূর্ণ প্রক্রিয়া, যেখানে ব্যাকআপ থেকে ডেটা পুনরুদ্ধার করা হয়। এই প্রক্রিয়া ব্যাকআপের ধরণের উপর নির্ভর করে ভিন্ন হতে পারে।
১. mysqldump ব্যাকআপ থেকে রিকভারি
mysqldump-এর মাধ্যমে করা ব্যাকআপ থেকে রিকভারি করতে নিম্নলিখিত কমান্ড ব্যবহার করা হয়:
mysql -u username -p database_name < backup_file.sql
ব্যাখ্যা:
database_name: যে ডেটাবেসে ব্যাকআপ পুনরুদ্ধার করতে চান।< backup_file.sql: ব্যাকআপ ফাইল থেকে ডেটা ইম্পোর্ট করা হবে।
উদাহরণ:
mysql -u root -p mydatabase < mydatabase_backup.sql
এটি mydatabase_backup.sql ফাইল থেকে mydatabase ডেটাবেসে ডেটা পুনরুদ্ধার করবে।
২. সমস্ত ডেটাবেসের রিকভারি
যদি আপনি সমস্ত ডেটাবেসের ব্যাকআপ থেকে রিকভারি করতে চান, তাহলে --all-databases অপশন ব্যবহার করা হয়:
mysql -u root -p < all_databases_backup.sql
এটি all_databases_backup.sql ফাইল থেকে সমস্ত ডেটাবেস পুনরুদ্ধার করবে।
৩. ইনক্রিমেন্টাল রিকভারি (Incremental Recovery)
যদি ইনক্রিমেন্টাল ব্যাকআপ ব্যবহার করেন (যেমন xtrabackup), তবে প্রথমে পূর্ণ ব্যাকআপ পুনরুদ্ধার করতে হবে এবং তারপরে ইনক্রিমেন্টাল ব্যাকআপগুলি পুনরুদ্ধার করতে হবে।
xtrabackup --prepare --apply-log-only --target-dir=/path/to/backup/dir
xtrabackup --prepare --target-dir=/path/to/backup/dir
এটি পূর্ণ ব্যাকআপ এবং ইনক্রিমেন্টাল ব্যাকআপগুলি একত্রে পুনরুদ্ধার করবে।
MariaDB ব্যাকআপ এবং রিকভারি সেরা প্র্যাকটিস
- নিয়মিত ব্যাকআপ: নিয়মিত ব্যাকআপ নেওয়া উচিত, বিশেষ করে ডেটাবেসে গুরুত্বপূর্ণ পরিবর্তন হলে।
- বিভিন্ন ধরনের ব্যাকআপ: লজিক্যাল এবং ফিজিক্যাল ব্যাকআপ দুটি ধরনই ব্যবহার করা উচিত। ফিজিক্যাল ব্যাকআপ দ্রুত হলেও, লজিক্যাল ব্যাকআপ রিকভারি সহজ করে।
- ইনক্রিমেন্টাল ব্যাকআপ: ইনক্রিমেন্টাল ব্যাকআপ ব্যবহার করলে ব্যাকআপ ফাইলের আকার কমে এবং ব্যাকআপ প্রক্রিয়া দ্রুত হয়।
- ব্যাকআপ নিরাপত্তা: ব্যাকআপ ফাইলগুলি এনক্রিপ্ট করা উচিত, যাতে সেগুলি অবাঞ্ছিত অ্যাক্সেস থেকে রক্ষা থাকে।
- ব্যাকআপ যাচাই: ব্যাকআপ সম্পূর্ণ এবং সঠিক কিনা তা নিশ্চিত করার জন্য নিয়মিতভাবে ব্যাকআপ পরীক্ষা করা উচিত।
সারাংশ
MariaDB-তে ডেটাবেস ব্যাকআপ এবং রিকভারি একটি গুরুত্বপূর্ণ প্রক্রিয়া যা ডেটাবেসের নিরাপত্তা এবং স্থায়িত্ব নিশ্চিত করতে সাহায্য করে। mysqldump এবং xtrabackup ব্যবহার করে লজিক্যাল এবং ফিজিক্যাল ব্যাকআপ তৈরি করা যায়। ব্যাকআপ রিকভারি প্রক্রিয়াটি ব্যাকআপের ধরন এবং ব্যবহৃত টুলসের ওপর নির্ভর করে পরিবর্তিত হয়। সঠিক ব্যাকআপ কৌশল এবং নিয়মিত রিকভারি প্রক্রিয়া ডেটাবেস সুরক্ষিত রাখে এবং অপূর্ণতা বা ডেটা ক্ষতির ক্ষেত্রে দ্রুত পুনরুদ্ধার সম্ভব হয়।
MariaDB-তে ডেটাবেস ব্যাকআপ (backup) নেওয়া খুবই গুরুত্বপূর্ণ, কারণ এটি ডেটাবেসের তথ্য হারানো, দুর্নীতি বা সিস্টেম ক্র্যাশের ক্ষেত্রে ডেটা পুনরুদ্ধারের একটি উপায় সরবরাহ করে। MariaDB-তে ব্যাকআপ নেওয়ার জন্য বিভিন্ন পদ্ধতি রয়েছে, যা সাধারণত mysqldump টুল, mysqlhotcopy, অথবা SELECT INTO OUTFILE কমান্ড ব্যবহার করে করা হয়।
1. mysqldump ব্যবহার করে ব্যাকআপ নেওয়া
mysqldump হলো MariaDB এবং MySQL ডেটাবেসের জন্য প্রধান ব্যাকআপ টুল। এটি ডেটাবেসের সমস্ত টেবিল, ডেটা, স্ট্রাকচার এবং ইউজারের অনুমতি (permissions) সহ ডেটাবেসের কনটেন্ট একটি SQL স্ক্রিপ্ট ফাইলে রপ্তানি (export) করে, যা পরে পুনরুদ্ধার (restore) করা যায়।
সাধারণ গঠন
mysqldump -u username -p database_name > backup_file.sql
- -u username: MariaDB-এর ইউজারনেম
- -p: পাসওয়ার্ড প্রম্পটের জন্য
- database_name: যেই ডেটাবেসটির ব্যাকআপ নিতে চান
- backup_file.sql: যেখানে ব্যাকআপ ফাইলটি সংরক্ষণ হবে
উদাহরণ
mysqldump -u root -p students > students_backup.sql
এটি students ডেটাবেসের একটি ব্যাকআপ তৈরি করবে এবং students_backup.sql ফাইলে সংরক্ষণ করবে।
সব ডেটাবেসের ব্যাকআপ নেওয়া
mysqldump -u root -p --all-databases > all_databases_backup.sql
এই কমান্ডটি সমস্ত ডেটাবেসের ব্যাকআপ নেবে এবং all_databases_backup.sql ফাইলে সংরক্ষণ করবে।
শুধু স্ট্রাকচার (Schema) ব্যাকআপ নেওয়া
mysqldump -u root -p --no-data database_name > database_structure_backup.sql
এটি শুধু ডেটাবেসের স্ট্রাকচার (টেবিল, ইনডেক্স, প্রোসিডিউর) ব্যাকআপ নিবে, ডেটা (data) ছাড়া।
ব্যাকআপে একাধিক টেবিল অন্তর্ভুক্ত করা
mysqldump -u root -p database_name table1 table2 > backup_tables.sql
এটি নির্দিষ্ট টেবিলগুলির ব্যাকআপ নিবে।
2. mysqlhotcopy ব্যবহার করে ব্যাকআপ নেওয়া
mysqlhotcopy একটি দ্রুত ব্যাকআপ টুল যা শুধুমাত্র MyISAM টেবিলের জন্য ব্যবহৃত হয়। এটি ডেটাবেসের পুরো টেবিল ফাইল (যেমন .MYD, .MYI) কপি করে ব্যাকআপ নেয়।
উদাহরণ
mysqlhotcopy database_name /path/to/backup_directory
এটি database_name ডেটাবেসের ব্যাকআপ নেবে এবং /path/to/backup_directory ফোল্ডারে সংরক্ষণ করবে।
3. SELECT INTO OUTFILE ব্যবহার করে ব্যাকআপ নেওয়া
SELECT INTO OUTFILE কমান্ডটি ব্যবহার করে নির্দিষ্ট টেবিলের ডেটা একটি ফাইলে এক্সপোর্ট (export) করা যায়। এটি সাধারণত সিএSV (CSV) বা ট্যাব-ডেলিমিটেড ফাইলের জন্য ব্যবহৃত হয়।
উদাহরণ
SELECT * INTO OUTFILE '/path/to/backup_file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM students;
এটি students টেবিলের সমস্ত ডেটা backup_file.csv ফাইলে সংরক্ষণ করবে।
4. ইনক্রিমেন্টাল ব্যাকআপ (Incremental Backup)
ইনক্রিমেন্টাল ব্যাকআপে শুধুমাত্র সেই সমস্ত ডেটা ব্যাকআপ নেওয়া হয় যা গত ব্যাকআপের পর পরিবর্তিত হয়েছে। MariaDB-তে সরাসরি ইনক্রিমেন্টাল ব্যাকআপ করার কোনো বিল্ট-ইন টুল নেই, তবে লজ (log) ফাইলের সাহায্যে এটি করা যেতে পারে।
MariaDB-তে binary log ব্যবহার করে ইনক্রিমেন্টাল ব্যাকআপ নেওয়া সম্ভব। এটি ডেটাবেসে করা প্রতিটি পরিবর্তন (INSERT, UPDATE, DELETE) ট্র্যাক করে।
উদাহরণ
Binary log চালু করা: MariaDB কনফিগারেশন ফাইলে (
my.cnfবাmy.ini)log_binঅপশন সক্রিয় করতে হবে।[mysqld] log_bin = /var/log/mysql/mysql-bin.log- ব্যাকআপ প্রক্রিয়া:
- প্রথম ব্যাকআপ তৈরি করুন (যেমন,
mysqldumpব্যবহার করে)। - পরে,
mysqlbinlogটুল ব্যবহার করে শুধুমাত্র পরিবর্তিত লোগ ফাইলগুলির ব্যাকআপ নিন।
- প্রথম ব্যাকআপ তৈরি করুন (যেমন,
5. MariaDB Replication এবং Snapshot ব্যবহার
কিছু উন্নত পরিবেশে MariaDB replication অথবা snapshot ব্যবহৃত হতে পারে। এই পদ্ধতিগুলো ক্লাস্টার বা রেপ্লিকেশন সিস্টেমে ডেটাবেসের ব্যাকআপ তৈরি করতে সহায়ক।
Snapshot (ফাইল সিস্টেম বা স্টোরেজ স্তরে ব্যাকআপ)
যদি MariaDB একটি ডেডিকেটেড স্টোরেজ সিস্টেমে চালানো হয় (যেমন LVM বা ZFS), তাহলে স্ন্যাপশট প্রযুক্তি ব্যবহার করে ডেটাবেসের একটি সম্পূর্ণ ব্যাকআপ নেওয়া যেতে পারে।
ব্যাকআপ রক্ষণাবেক্ষণ এবং পুনরুদ্ধার
ব্যাকআপ নিয়মিতভাবে নেওয়া উচিত এবং সেগুলো সঠিকভাবে সংরক্ষণ করা উচিত। ব্যাকআপ সফলভাবে নেওয়া হলে, সেটি পুনরুদ্ধার (restore) করার জন্য mysql অথবা mysqlimport কমান্ড ব্যবহার করা যেতে পারে।
ব্যাকআপ পুনরুদ্ধার (Restore) করা
mysql -u root -p database_name < backup_file.sql
এটি backup_file.sql থেকে ব্যাকআপ ডেটাবেস পুনরুদ্ধার করবে।
সারাংশ
MariaDB-তে ডেটাবেসের ব্যাকআপ নেওয়া একটি গুরুত্বপূর্ণ কাজ, যা mysqldump, mysqlhotcopy, এবং SELECT INTO OUTFILE এর মতো বিভিন্ন পদ্ধতির মাধ্যমে করা যায়। ব্যাকআপ নেয়ার পদ্ধতি ডেটাবেসের আকার, টেবিলের ধরন এবং ব্যাকআপের প্রয়োজনীয়তার উপর নির্ভর করে পরিবর্তিত হতে পারে। নিয়মিত ব্যাকআপ নেওয়া এবং তা নিরাপদ স্থানে সংরক্ষণ করা ডেটা নিরাপত্তার জন্য অপরিহার্য।
মারিয়া ডিবি (MariaDB)-তে ডেটাবেসের ব্যাকআপ নেওয়া একটি গুরুত্বপূর্ণ কাজ, যা ডেটার সুরক্ষা এবং পুনরুদ্ধারের জন্য প্রয়োজনীয়। mysqldump একটি জনপ্রিয় টুল, যা মারিয়া ডিবি (MariaDB) এবং MySQL ডেটাবেসের ব্যাকআপ নেওয়ার জন্য ব্যবহৃত হয়। এছাড়া, আরও কিছু টুল ও পদ্ধতি রয়েছে যার মাধ্যমে ব্যাকআপ নেয়া যায়।
mysqldump টুল দিয়ে ব্যাকআপ নেওয়া
mysqldump একটি কমান্ড-লাইন টুল যা ডেটাবেসের কাঠামো এবং ডেটা একটি SQL ফাইলের মধ্যে এক্সপোর্ট করে। এটি সাধারণত ডেটাবেসের সম্পূর্ণ ব্যাকআপ, নির্দিষ্ট টেবিল, বা নির্দিষ্ট ডেটার জন্য ব্যাকআপ নেওয়ার জন্য ব্যবহৃত হয়।
mysqldump এর সাধারণ সিনট্যাক্স:
mysqldump -u username -p database_name > backup_file.sql
-u username: ডেটাবেস ব্যবহারকারীর নাম।-p: পাসওয়ার্ডের জন্য প্রম্পট দেখাবে।database_name: ব্যাকআপ নেওয়ার ডেটাবেসের নাম।backup_file.sql: ব্যাকআপ ফাইলের নাম এবং লোকেশন।
ব্যাকআপ নেওয়ার উদাহরণ:
mysqldump -u root -p my_database > my_database_backup.sql
এই কুয়েরিটি my_database নামক ডেটাবেসের ব্যাকআপ নিয়ে my_database_backup.sql নামে একটি ফাইল তৈরি করবে।
সব ডেটাবেসের ব্যাকআপ নেওয়া
যদি আপনি সমস্ত ডেটাবেসের ব্যাকআপ নিতে চান, তাহলে --all-databases অপশন ব্যবহার করতে হবে:
mysqldump -u root -p --all-databases > all_databases_backup.sql
একাধিক টেবিলের ব্যাকআপ নেওয়া
একাধিক টেবিলের ব্যাকআপ নিতে চাইলে তাদের নাম কমা দিয়ে আলাদা করতে হবে:
mysqldump -u root -p my_database table1 table2 > tables_backup.sql
রিলেশনশিপ এবং ডেটাবেসের কাঠামো সহ ব্যাকআপ নেওয়া
কিছু ক্ষেত্রেও ডেটাবেসের কাঠামো (structure) এবং ডেটার পাশাপাশি প্রাইমারি কী, ফরেন কী সম্পর্কসহ ব্যাকআপ নিতে হতে পারে। এর জন্য --routines এবং --triggers ফ্ল্যাগ ব্যবহার করা যেতে পারে:
mysqldump -u root -p --routines --triggers my_database > full_backup_with_triggers.sql
ব্যাকআপ পুনরুদ্ধার করা
mysqldump দ্বারা নেওয়া ব্যাকআপ পুনরুদ্ধার করতে mysql কমান্ড ব্যবহার করা হয়। এটি SQL ফাইলের মধ্যে থাকা কমান্ডগুলো রান করে ডেটাবেস পুনরুদ্ধার করে।
ব্যাকআপ পুনরুদ্ধারের উদাহরণ:
mysql -u root -p my_database < my_database_backup.sql
এখানে, my_database_backup.sql ফাইল থেকে ডেটাবেস পুনরুদ্ধার করা হবে।
অন্যান্য টুল এবং পদ্ধতি
মারিয়া ডিবি ব্যাকআপ নেওয়ার জন্য mysqldump ছাড়া আরও কিছু টুল এবং পদ্ধতি ব্যবহার করা যেতে পারে। এখানে কিছু জনপ্রিয় পদ্ধতি দেওয়া হলো:
MariaDB Backup টুল
MariaDB Backup একটি অফিসিয়াল টুল, যা অনেক ক্ষেত্রে mysqldump এর তুলনায় দ্রুত এবং কার্যকরী। এটি ইনক্রিমেন্টাল ব্যাকআপও সমর্থন করে, অর্থাৎ শুধুমাত্র পরিবর্তিত ডেটা ব্যাকআপ নেয়, পুরো ডেটাবেস নয়।
ব্যাকআপ নেওয়া:
mariadb-backup --backup --target-dir=/path/to/backup/ --user=root --password
ব্যাকআপ পুনরুদ্ধার:
mariadb-backup --prepare --target-dir=/path/to/backup/
mariadb-backup --copy-back --target-dir=/path/to/backup/
এটি ডিরেক্টরি ব্যাকআপ ফাইলগুলো পুনরুদ্ধার করে এবং ডেটাবেসে আবার লিখে দেয়।
XtraBackup (Percona XtraBackup)
Percona XtraBackup একটি ওপেন সোর্স টুল, যা MySQL এবং MariaDB ডেটাবেসের জন্য উন্নত ব্যাকআপ সমাধান সরবরাহ করে। এটি ইনক্রিমেন্টাল এবং পয়েন্ট-ইন-টাইম রিকভারি সমর্থন করে।
ব্যাকআপ নেওয়া:
xtrabackup --backup --target-dir=/path/to/backup/ --user=root --password
ব্যাকআপ পুনরুদ্ধার:
xtrabackup --prepare --target-dir=/path/to/backup/
xtrabackup --copy-back --target-dir=/path/to/backup/
এটি দ্রুত ব্যাকআপ এবং পুনরুদ্ধারের জন্য উপযোগী, বিশেষ করে বড় ডেটাবেসের জন্য।
ব্যাকআপ সংক্রান্ত পরামর্শ
- নিয়মিত ব্যাকআপ: ডেটাবেসের ব্যাকআপ নিয়মিত নেয়া উচিত, যেমন ডেইলি, উইকলি বা মাসিক ভিত্তিতে।
- ব্যাকআপের স্থান নির্বাচন: ব্যাকআপ ফাইলগুলি আপনার মূল সার্ভারের বাইরে সুরক্ষিত স্থানে সংরক্ষণ করা উচিত।
- ব্যাকআপের ধরণ নির্বাচন: আপনি পুরো ডেটাবেস ব্যাকআপ নিতে পারেন, অথবা যদি ডেটা খুব বড় হয়, তবে ইনক্রিমেন্টাল ব্যাকআপ নিতে পারেন।
- ব্যাকআপ পরীক্ষা করা: ব্যাকআপ নিয়মিত পরীক্ষা করা উচিত, যাতে কখনও যদি প্রয়োজন হয় তা দ্রুত পুনরুদ্ধার করা যায়।
সারাংশ
মারিয়া ডিবি (MariaDB)-তে ব্যাকআপ নেওয়া এবং পুনরুদ্ধার করা একটি অত্যন্ত গুরুত্বপূর্ণ কাজ যা ডেটার সুরক্ষা নিশ্চিত করতে সাহায্য করে। mysqldump একটি জনপ্রিয় টুল, যা ব্যাকআপ এবং পুনরুদ্ধারের জন্য ব্যবহৃত হয়। এছাড়া, MariaDB Backup এবং Percona XtraBackup এর মতো টুলগুলিও ব্যাকআপের জন্য ব্যবহার করা যেতে পারে। প্রতিটি টুলের নিজস্ব সুবিধা রয়েছে এবং সেগুলি বিভিন্ন ডেটাবেস কনফিগারেশন এবং প্রয়োজনে ব্যবহার করা যেতে পারে।
ডেটাবেস ব্যাকআপ হল ডেটাবেসের ডেটা এবং স্ট্রাকচারের একটি কপি তৈরি করার প্রক্রিয়া, যাতে কোন অপ্রত্যাশিত পরিস্থিতি (যেমন হার্ডওয়্যার ব্যর্থতা, সিস্টেম ক্র্যাশ, বা ডেটা লস) এ ডেটা পুনরুদ্ধার করা যায়। মারিয়া ডিবি (MariaDB) তে ব্যাকআপ করার দুটি প্রধান কৌশল আছে: Full Backup এবং Incremental Backup।
- Full Backup: পুরো ডেটাবেসের একটি পূর্ণ কপি তৈরি করে।
- Incremental Backup: শুধুমাত্র পূর্ববর্তী ব্যাকআপের পর পরিবর্তিত বা নতুন ডেটার কপি তৈরি করে।
Full Backup কী?
Full Backup হল ডেটাবেসের সব ডেটা এবং স্ট্রাকচার (টেবিল, ইনডেক্স, কনফিগারেশন, ইত্যাদি) একবারে একটি ফাইল বা আর্কাইভে কপি করার প্রক্রিয়া। এতে ডেটাবেসের সম্পূর্ণ কপি থাকে, যা দ্রুত এবং সহজে পুনরুদ্ধার করা যায়।
Full Backup নেওয়ার পদ্ধতি
১. mysqldump কমান্ড ব্যবহার করে Full Backup
mysqldump হল MariaDB এবং MySQL এর জন্য একটি কনভেনশনাল টুল যা ডেটাবেসের ডাম্প ফাইল তৈরি করতে ব্যবহৃত হয়। নিচে একটি উদাহরণ দেয়া হলো:
mysqldump -u root -p --all-databases > full_backup.sql
এখানে:
-u root: MariaDB সার্ভারে ব্যবহারকারীর নাম।-p: পাসওয়ার্ড প্রম্পট।--all-databases: সমস্ত ডেটাবেসের ব্যাকআপ নেয়।> full_backup.sql: ব্যাকআপ ফাইলের নাম।
এই কমান্ডটি সমস্ত ডেটাবেসের পূর্ণ কপি তৈরি করে এবং full_backup.sql ফাইলে সংরক্ষণ করবে।
২. mysqlhotcopy টুল ব্যবহার করে Full Backup
আরেকটি সহজ উপায় হল mysqlhotcopy টুল ব্যবহার করা, যা নির্দিষ্ট ডেটাবেসের দ্রুত ব্যাকআপ তৈরি করে:
mysqlhotcopy my_database /path/to/backup/
এটি my_database নামক ডেটাবেসের সমস্ত ডেটা /path/to/backup/ ফোল্ডারে কপি করবে।
৩. ফাইল-সিস্টেম ব্যাকআপ
MariaDB ডেটাবেসের ফিজিক্যাল ফাইলগুলির (যেমন .ibd, .frm, .myd ফাইল) সরাসরি কপি করতে ফাইল সিস্টেম ব্যাকআপ পদ্ধতিও ব্যবহার করা যায়। তবে, এই পদ্ধতি তখনই উপযুক্ত যখন MariaDB সার্ভার বন্ধ থাকে অথবা ব্যাকআপ নেওয়ার সময় ডেটাবেসে কোনো ট্রানজেকশন না হয়।
cp -r /var/lib/mysql/my_database /path/to/backup/
Incremental Backup কী?
Incremental Backup হল একটি ব্যাকআপ কৌশল যেখানে শুধুমাত্র শেষ ব্যাকআপের পর পরিবর্তিত বা নতুন ডেটা ব্যাকআপ করা হয়। এটি ব্যাকআপের আকার ছোট রাখে এবং ব্যাকআপ সময়কে কমিয়ে দেয়।
MariaDB তে incremental backups তৈরি করতে, আপনাকে binary log files এবং point-in-time recovery কৌশল ব্যবহার করতে হবে।
Incremental Backup নেওয়ার পদ্ধতি
১. Binary Logging সক্রিয় করা
MariaDB তে binary logs সক্রিয় করতে, আপনাকে কনফিগারেশন ফাইলে (my.cnf) নিচের লাইনটি যোগ করতে হবে:
[mysqld]
log-bin = /var/lib/mysql/mysql-bin
এটি MariaDB তে সমস্ত ট্রানজেকশন এবং অন্যান্য পরিবর্তন লগ করতে শুরু করবে। এরপর MariaDB সার্ভারটি রিস্টার্ট করুন:
sudo systemctl restart mariadb
২. প্রথম Full Backup নেওয়া
প্রথমে একটি full backup নিতে হবে, যেটি বেসলাইন হিসেবে কাজ করবে। এই ব্যাকআপের পরে যে সমস্ত পরিবর্তন হবে, তা পরবর্তীতে incremental backup হিসেবে সংরক্ষিত হবে।
mysqldump -u root -p --all-databases > full_backup.sql
৩. Binary Log Files-এর মাধ্যমে Incremental Backup নেওয়া
পরে আপনি শুধুমাত্র binary log files ব্যবহার করে incremental backups নিতে পারেন। MariaDB এর binary logs হোল ডেটাবেসের পরিবর্তনসমূহ সংরক্ষিত রাখে এবং সেগুলি incremental backup হিসেবে ব্যবহৃত হয়। প্রথমে, আপনি যে binary log file ব্যবহার করছেন তা চিহ্নিত করুন:
SHOW BINARY LOGS;
এরপর, mysqlbinlog কমান্ড ব্যবহার করে ইনক্রিমেন্টাল ব্যাকআপ নেওয়া যায়:
mysqlbinlog /var/lib/mysql/mysql-bin.000001 > incremental_backup.sql
এটি শুধুমাত্র mysql-bin.000001 ফাইলের মধ্যে থাকা পরিবর্তনগুলি (অথবা ইনক্রিমেন্ট) কপি করবে।
৪. Point-in-Time Recovery (PITR)
Point-in-Time Recovery (PITR) পদ্ধতির মাধ্যমে, আপনি একটি নির্দিষ্ট সময়ের পরে আপনার ডেটাবেস পুনরুদ্ধার করতে পারেন। এটি মূলত full backup এবং incremental backup একত্রিত করে কাজ করে।
- প্রথমে full backup নিন।
- তারপর binary logs (incremental backups) ব্যবহার করে ডেটাবেসে সময়ের একটি নির্দিষ্ট পয়েন্টে রিস্টোর করুন।
mysql < full_backup.sql
mysqlbinlog --start-position=xxxx /var/lib/mysql/mysql-bin.000001 | mysql
এখানে --start-position=xxxx এর মাধ্যমে আপনি যে বিনারি লগ ফাইলের একটি নির্দিষ্ট পজিশন থেকে ডেটা পুনরুদ্ধার করতে চান, তা চিহ্নিত করবেন।
Full এবং Incremental Backup-এর তুলনা
| বৈশিষ্ট্য | Full Backup | Incremental Backup |
|---|---|---|
| ব্যাকআপ সাইজ | বৃহৎ (সম্পূর্ণ ডেটাবেস) | ছোট (শুধুমাত্র পরিবর্তিত ডেটা) |
| ব্যাকআপ সময় | বেশি সময় নেয় | কম সময় নেয় |
| ব্যাকআপ ফ্রিকোয়েন্সি | কম (সপ্তাহে একবার বা মাসে একবার) | বেশি (প্রতিদিন বা প্রায় সময়) |
| পুনরুদ্ধার প্রক্রিয়া | সহজ এবং দ্রুত | সম্পূর্ণ পুনরুদ্ধার করতে Full Backup প্রয়োজন |
| রিসোর্স ব্যবহার | বেশি (ডেটাবেসের সমস্ত ডেটা কপি করতে হয়) | কম (শুধু পরিবর্তিত ডেটা কপি করা হয়) |
সারাংশ
মারিয়া ডিবি (MariaDB) তে Full Backup এবং Incremental Backup দুটি গুরুত্বপূর্ণ কৌশল। Full Backup সম্পূর্ণ ডেটাবেসের কপি তৈরি করে, যা সহজে পুনরুদ্ধার করা যায়, তবে এটি সময়সাপেক্ষ এবং বৃহৎ আকারের। অন্যদিকে, Incremental Backup শুধুমাত্র শেষ ব্যাকআপের পরবর্তী পরিবর্তিত ডেটার কপি করে, যা দ্রুত এবং কম সাইজের, কিন্তু পুনরুদ্ধার প্রক্রিয়া কিছুটা জটিল হতে পারে। নির্ভর করে আপনার প্রয়োজন এবং পরিমাণগত সুবিধার উপর, আপনি এই দুটি কৌশল নির্বাচন করতে পারেন।
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