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 এর মতো বিভিন্ন পদ্ধতির মাধ্যমে করা যায়। ব্যাকআপ নেয়ার পদ্ধতি ডেটাবেসের আকার, টেবিলের ধরন এবং ব্যাকআপের প্রয়োজনীয়তার উপর নির্ভর করে পরিবর্তিত হতে পারে। নিয়মিত ব্যাকআপ নেওয়া এবং তা নিরাপদ স্থানে সংরক্ষণ করা ডেটা নিরাপত্তার জন্য অপরিহার্য।
Read more