Skill

MariaDB এর জন্য ডেটাবেজ ব্যাকআপ এবং রিকভারি

মারিয়া ডিবি (MariaDB) - Database Tutorials

327

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 ব্যাকআপ এবং রিকভারি সেরা প্র্যাকটিস

  1. নিয়মিত ব্যাকআপ: নিয়মিত ব্যাকআপ নেওয়া উচিত, বিশেষ করে ডেটাবেসে গুরুত্বপূর্ণ পরিবর্তন হলে।
  2. বিভিন্ন ধরনের ব্যাকআপ: লজিক্যাল এবং ফিজিক্যাল ব্যাকআপ দুটি ধরনই ব্যবহার করা উচিত। ফিজিক্যাল ব্যাকআপ দ্রুত হলেও, লজিক্যাল ব্যাকআপ রিকভারি সহজ করে।
  3. ইনক্রিমেন্টাল ব্যাকআপ: ইনক্রিমেন্টাল ব্যাকআপ ব্যবহার করলে ব্যাকআপ ফাইলের আকার কমে এবং ব্যাকআপ প্রক্রিয়া দ্রুত হয়।
  4. ব্যাকআপ নিরাপত্তা: ব্যাকআপ ফাইলগুলি এনক্রিপ্ট করা উচিত, যাতে সেগুলি অবাঞ্ছিত অ্যাক্সেস থেকে রক্ষা থাকে।
  5. ব্যাকআপ যাচাই: ব্যাকআপ সম্পূর্ণ এবং সঠিক কিনা তা নিশ্চিত করার জন্য নিয়মিতভাবে ব্যাকআপ পরীক্ষা করা উচিত।

সারাংশ

MariaDB-তে ডেটাবেস ব্যাকআপ এবং রিকভারি একটি গুরুত্বপূর্ণ প্রক্রিয়া যা ডেটাবেসের নিরাপত্তা এবং স্থায়িত্ব নিশ্চিত করতে সাহায্য করে। mysqldump এবং xtrabackup ব্যবহার করে লজিক্যাল এবং ফিজিক্যাল ব্যাকআপ তৈরি করা যায়। ব্যাকআপ রিকভারি প্রক্রিয়াটি ব্যাকআপের ধরন এবং ব্যবহৃত টুলসের ওপর নির্ভর করে পরিবর্তিত হয়। সঠিক ব্যাকআপ কৌশল এবং নিয়মিত রিকভারি প্রক্রিয়া ডেটাবেস সুরক্ষিত রাখে এবং অপূর্ণতা বা ডেটা ক্ষতির ক্ষেত্রে দ্রুত পুনরুদ্ধার সম্ভব হয়।

Content added By

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) ট্র্যাক করে।

উদাহরণ

  1. Binary log চালু করা: MariaDB কনফিগারেশন ফাইলে (my.cnf বা my.ini) log_bin অপশন সক্রিয় করতে হবে।

    [mysqld]
    log_bin = /var/log/mysql/mysql-bin.log
    
  2. ব্যাকআপ প্রক্রিয়া:
    • প্রথম ব্যাকআপ তৈরি করুন (যেমন, 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 এর মতো বিভিন্ন পদ্ধতির মাধ্যমে করা যায়। ব্যাকআপ নেয়ার পদ্ধতি ডেটাবেসের আকার, টেবিলের ধরন এবং ব্যাকআপের প্রয়োজনীয়তার উপর নির্ভর করে পরিবর্তিত হতে পারে। নিয়মিত ব্যাকআপ নেওয়া এবং তা নিরাপদ স্থানে সংরক্ষণ করা ডেটা নিরাপত্তার জন্য অপরিহার্য।


Content added By

মারিয়া ডিবি (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/

এটি দ্রুত ব্যাকআপ এবং পুনরুদ্ধারের জন্য উপযোগী, বিশেষ করে বড় ডেটাবেসের জন্য।


ব্যাকআপ সংক্রান্ত পরামর্শ

  1. নিয়মিত ব্যাকআপ: ডেটাবেসের ব্যাকআপ নিয়মিত নেয়া উচিত, যেমন ডেইলি, উইকলি বা মাসিক ভিত্তিতে।
  2. ব্যাকআপের স্থান নির্বাচন: ব্যাকআপ ফাইলগুলি আপনার মূল সার্ভারের বাইরে সুরক্ষিত স্থানে সংরক্ষণ করা উচিত।
  3. ব্যাকআপের ধরণ নির্বাচন: আপনি পুরো ডেটাবেস ব্যাকআপ নিতে পারেন, অথবা যদি ডেটা খুব বড় হয়, তবে ইনক্রিমেন্টাল ব্যাকআপ নিতে পারেন।
  4. ব্যাকআপ পরীক্ষা করা: ব্যাকআপ নিয়মিত পরীক্ষা করা উচিত, যাতে কখনও যদি প্রয়োজন হয় তা দ্রুত পুনরুদ্ধার করা যায়।

সারাংশ

মারিয়া ডিবি (MariaDB)-তে ব্যাকআপ নেওয়া এবং পুনরুদ্ধার করা একটি অত্যন্ত গুরুত্বপূর্ণ কাজ যা ডেটার সুরক্ষা নিশ্চিত করতে সাহায্য করে। mysqldump একটি জনপ্রিয় টুল, যা ব্যাকআপ এবং পুনরুদ্ধারের জন্য ব্যবহৃত হয়। এছাড়া, MariaDB Backup এবং Percona XtraBackup এর মতো টুলগুলিও ব্যাকআপের জন্য ব্যবহার করা যেতে পারে। প্রতিটি টুলের নিজস্ব সুবিধা রয়েছে এবং সেগুলি বিভিন্ন ডেটাবেস কনফিগারেশন এবং প্রয়োজনে ব্যবহার করা যেতে পারে।

Content added By

ডেটাবেস ব্যাকআপ হল ডেটাবেসের ডেটা এবং স্ট্রাকচারের একটি কপি তৈরি করার প্রক্রিয়া, যাতে কোন অপ্রত্যাশিত পরিস্থিতি (যেমন হার্ডওয়্যার ব্যর্থতা, সিস্টেম ক্র্যাশ, বা ডেটা লস) এ ডেটা পুনরুদ্ধার করা যায়। মারিয়া ডিবি (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 BackupIncremental Backup
ব্যাকআপ সাইজবৃহৎ (সম্পূর্ণ ডেটাবেস)ছোট (শুধুমাত্র পরিবর্তিত ডেটা)
ব্যাকআপ সময়বেশি সময় নেয়কম সময় নেয়
ব্যাকআপ ফ্রিকোয়েন্সিকম (সপ্তাহে একবার বা মাসে একবার)বেশি (প্রতিদিন বা প্রায় সময়)
পুনরুদ্ধার প্রক্রিয়াসহজ এবং দ্রুতসম্পূর্ণ পুনরুদ্ধার করতে Full Backup প্রয়োজন
রিসোর্স ব্যবহারবেশি (ডেটাবেসের সমস্ত ডেটা কপি করতে হয়)কম (শুধু পরিবর্তিত ডেটা কপি করা হয়)

সারাংশ

মারিয়া ডিবি (MariaDB) তে Full Backup এবং Incremental Backup দুটি গুরুত্বপূর্ণ কৌশল। Full Backup সম্পূর্ণ ডেটাবেসের কপি তৈরি করে, যা সহজে পুনরুদ্ধার করা যায়, তবে এটি সময়সাপেক্ষ এবং বৃহৎ আকারের। অন্যদিকে, Incremental Backup শুধুমাত্র শেষ ব্যাকআপের পরবর্তী পরিবর্তিত ডেটার কপি করে, যা দ্রুত এবং কম সাইজের, কিন্তু পুনরুদ্ধার প্রক্রিয়া কিছুটা জটিল হতে পারে। নির্ভর করে আপনার প্রয়োজন এবং পরিমাণগত সুবিধার উপর, আপনি এই দুটি কৌশল নির্বাচন করতে পারেন।

Content added By

Point-in-time Recovery (PITR) হল একটি ডেটাবেস রিকভারি কৌশল যা আপনাকে নির্দিষ্ট একটি সময়ের বা তারিখের পয়েন্টে ডেটাবেস পুনরুদ্ধার করতে সহায়তা করে। এটি বিশেষত ডেটাবেসে কোনো ত্রুটি, সিস্টেম ক্র্যাশ, বা ম্যানুয়াল ত্রুটির কারণে ডেটা ক্ষতি হলে অত্যন্ত কার্যকরী। PITR ব্যবহৃত হয় যখন আপনাকে ডেটাবেসের সর্বশেষ ব্যাকআপ থেকে পুনরুদ্ধার করে, তার পরে ঘটে যাওয়া সমস্ত লেনদেন থেকে কেবল নির্দিষ্ট একটি সময় পর্যন্ত ডেটাবেসের অবস্থা ফিরিয়ে আনতে হয়।


PITR কী?

Point-in-time Recovery (PITR) এক ধরনের ডেটাবেস রিকভারি প্রক্রিয়া, যা আপনাকে একটি নির্দিষ্ট সময়ে বা তারিখে ডেটাবেসের অবস্থা পুনরুদ্ধার করার সুযোগ দেয়। এটি সাধারণত ঘটে যখন একটি সিস্টেম ক্র্যাশের পর, ডেটা ক্যোরাপশন বা কোনো ভুল ইনসার্ট/আপডেটের কারণে ডেটাবেসের অবস্থা সঠিক থাকে না।

PITR সাধারণত নিম্নলিখিত ক্ষেত্রে ব্যবহার হয়:

  • যখন সিস্টেমের ক্র্যাশ বা ডেটাবেস সিস্টেমের কোনো ত্রুটি ঘটে।
  • ভুল ডেটা ইনসার্ট বা আপডেট হলে।
  • সিস্টেম বা ডেটাবেসে কোনো ম্যানুয়াল ত্রুটি ঘটে।

PITR কিভাবে কাজ করে?

PITR তে দুটি প্রধান উপাদান রয়েছে:

  1. Full Backup: এটি আপনার ডেটাবেসের সম্পূর্ণ ব্যাকআপ (যেমন, একটি সম্পূর্ণ mysqldump বা physical backup) যা একটি নির্দিষ্ট সময়ের পয়েন্টে তৈরি হয়।
  2. Binary Logs: মারিয়া ডিবি-তে সব পরিবর্তনগুলি binary logs-এ (বাইনরি লগ) লেখা হয়। এই লগগুলি সমস্ত INSERT, UPDATE, DELETE ইভেন্ট রেকর্ড করে এবং ডেটাবেসের লেনদেনের ইতিহাসের ট্র্যাক রাখে।

PITR করতে হলে, প্রথমে একটি Full Backup নিতে হবে, তারপর সেই ব্যাকআপ থেকে ডেটাবেস পুনরুদ্ধার করতে হবে এবং তারপরে binary logs ব্যবহার করে নির্দিষ্ট সময়ে পৌঁছানোর জন্য লগগুলি পুনরুদ্ধার করতে হবে।


PITR প্রক্রিয়া

  1. Full Backup গ্রহণ
    প্রথমে, একটি সম্পূর্ণ ব্যাকআপ নিন, যা একটি নির্দিষ্ট সময়ে ডেটাবেসের পুরো অবস্থান ধারণ করে। মারিয়া ডিবি-তে এটি mysqldump বা XtraBackup ব্যবহার করে নেওয়া যেতে পারে।

    উদাহরণস্বরূপ, mysqldump ব্যবহার করে ব্যাকআপ:

    mysqldump -u root -p --all-databases --single-transaction > full_backup.sql
    
  2. Binary Log সমর্থন সক্রিয় করা
    মারিয়া ডিবি-তে binary logs সক্রিয় করতে হবে, যাতে সমস্ত লেনদেন লগ করা হয়। এটি সাধারণত my.cnf ফাইলে কনফিগার করে সক্রিয় করা হয়:

    [mysqld]
    log-bin = /var/log/mysql/mysql-bin
    server-id = 1
    binlog-format = ROW
    

    log-bin এর মাধ্যমে আপনি সিস্টেমে বাইনরি লগ সংরক্ষণ করতে পারবেন।

  3. PITR জন্য প্রস্তুতি
    PITR করার জন্য আপনার কাছে একটি Full Backup এবং Binary Logs থাকতে হবে। এখন, ব্যাকআপ নেওয়ার পরের সমস্ত binary log ফাইলগুলো সংরক্ষণ করুন, কারণ এগুলি PITR প্রক্রিয়ায় ব্যবহৃত হবে।
  4. Full Backup থেকে পুনরুদ্ধার
    আপনাকে প্রথমে full backup থেকে ডেটাবেস পুনরুদ্ধার করতে হবে। উদাহরণস্বরূপ, যদি full_backup.sql ফাইলটি ব্যাকআপ হিসেবে নেওয়া হয়ে থাকে, তাহলে এটি পুনরুদ্ধার করতে হবে:

    mysql -u root -p < full_backup.sql
    
  5. Binary 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 ফাইলের মাধ্যমে সমস্ত লেনদেন পুনরুদ্ধার হবে, যতক্ষণ না আপনি সেই নির্দিষ্ট সময়ে পৌঁছান।

  6. তথ্য সঠিক সময়ের পয়েন্টে পুনরুদ্ধার করা
    যখন আপনি একটি নির্দিষ্ট সময়ে পৌঁছাতে চান, তখন আপনি সেই সময়ের আগে সমস্ত binary log ফাইল অ্যাপ্লাই করতে পারেন। যদি আপনি কোনও নির্দিষ্ট ট্রানজেকশন বাদ দিতে চান, তবে আপনি তার আগে পর্যন্ত binary log অ্যাপ্লাই করতে পারেন।

PITR কনফিগারেশন এবং ব্যাকআপের নির্দেশিকা

  1. ব্যাকআপ সিডিউল করা
    আপনাকে নিয়মিত ব্যাকআপ নিতে হবে। এটি এমনভাবে কনফিগার করতে হবে যাতে ব্যাকআপগুলো নতুন লেনদেনের সঙ্গে সিঙ্ক্রোনাইজড থাকে। উদাহরণস্বরূপ, আপনি cron job ব্যবহার করে নিয়মিত ব্যাকআপ নিতে পারেন।
  2. Binary Log Rotation
    নিয়মিত binary log ফাইলের আর্কাইভ এবং রোটেশন প্রয়োজন। অনেক বড় সিস্টেমে, binary log দ্রুত বাড়তে পারে এবং এতে সিস্টেমের পারফরম্যান্সের ওপর প্রভাব পড়তে পারে। রোটেশন সেট করতে expire_logs_days ব্যবহার করতে পারেন।

    [mysqld]
    expire_logs_days = 7
    

    এটি ৭ দিনের বেশি পুরোনো binary logs অটোমেটিক্যালি ডিলিট করে দেবে।

  3. কনফিগারেশন ফাইল নিরাপত্তা
    আপনার 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 সিস্টেম ক্র্যাশ, ভুল ইনপুট বা অন্যান্য ত্রুটির পর ডেটা পুনরুদ্ধারে অত্যন্ত কার্যকরী। সঠিক কনফিগারেশন এবং ব্যাকআপ প্রক্রিয়া ব্যবহার করে আপনি ডেটাবেসের সর্বশেষ অবস্থায় ফিরে যেতে পারেন এবং ডেটার অখণ্ডতা বজায় রাখতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...