আমার কি "mysql`" ডাটাবেসটি ব্যাকআপ করে পুনরুদ্ধার করা উচিত?


15

একটি সম্পূর্ণ মাইএসকিউএল সার্ভার ব্যাক আপ এবং পুনরুদ্ধার করার জন্য একটি স্বয়ংক্রিয় সমাধান তৈরি করার প্রক্রিয়ায় , আমি mysqlডাটাবেস জুড়ে এসেছি যা মনে হয় যে ব্যবহারকারীর অ্যাকাউন্ট, অনুমতি, মেটাডেটা, এই জাতীয় জিনিস। এই ডাটাবেস ব্যাক আপ করা উচিত? ব্যাক আপ নেওয়া এবং পুনরুদ্ধার করার চেষ্টা কি জিনিসগুলিকে ভেঙে দেবে?

আপনি কল্পনা করতে পারেন "মাইএসকিএল ব্যাকআপ মাইএসকিএল ডাটাবেস" এর জন্য গুগলিংয়ের একটি সময় আমার কাছে ছিল।


3
পুরো পুনরুদ্ধার করার জন্য আপনাকে "তথ্য_সেমিমা" ডাটাবেস ব্যতীত সমস্ত কিছু ব্যাকআপ করতে হবে।
জন গার্ডেনিয়ার্স

উত্তর:


16

এখানে কিছু আকর্ষণীয় বিষয় বিবেচনা করুন: mysqlডাটাবেস ব্যাকআপ করা আপনাকে যথেষ্ট পরিমাণে সীমাবদ্ধ করে দেয় যে আপনি কেবল এমন ডেটাবেসকে মাইএসকিএলের একই সংস্করণে পুনরুদ্ধার করতে পারবেন যেখান থেকে আপনি ব্যাকআপটি চালিয়ে গিয়েছিলেন। এখানে কেন:

এখানে MySQL 5.0.45 থেকে mysql.user রয়েছে

mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field                 | Type                              | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host                  | char(60)                          | NO   | PRI |         |       |
| User                  | char(16)                          | NO   | PRI |         |       |
| Password              | char(41)                          | NO   |     |         |       |
| Select_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Update_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Delete_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Create_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Drop_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Reload_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Shutdown_priv         | enum('N','Y')                     | NO   |     | N       |       |
| Process_priv          | enum('N','Y')                     | NO   |     | N       |       |
| File_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Grant_priv            | enum('N','Y')                     | NO   |     | N       |       |
| References_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Index_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Alter_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Show_db_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Super_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Create_tmp_table_priv | enum('N','Y')                     | NO   |     | N       |       |
| Lock_tables_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Execute_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Repl_slave_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Repl_client_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Create_view_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Show_view_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Create_routine_priv   | enum('N','Y')                     | NO   |     | N       |       |
| Alter_routine_priv    | enum('N','Y')                     | NO   |     | N       |       |
| Create_user_priv      | enum('N','Y')                     | NO   |     | N       |       |
| ssl_type              | enum('','ANY','X509','SPECIFIED') | NO   |     |         |       |
| ssl_cipher            | blob                              | NO   |     |         |       |
| x509_issuer           | blob                              | NO   |     |         |       |
| x509_subject          | blob                              | NO   |     |         |       |
| max_questions         | int(11) unsigned                  | NO   |     | 0       |       |
| max_updates           | int(11) unsigned                  | NO   |     | 0       |       |
| max_connections       | int(11) unsigned                  | NO   |     | 0       |       |
| max_user_connections  | int(11) unsigned                  | NO   |     | 0       |       |
+-----------------------+-----------------------------------+------+-----+---------+-------+
37 rows in set (0.01 sec)

এখানে MySQL 5.1.32 থেকে mysql.user রয়েছে

mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field                 | Type                              | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host                  | char(60)                          | NO   | PRI |         |       |
| User                  | char(16)                          | NO   | PRI |         |       |
| Password              | char(41)                          | NO   |     |         |       |
| Select_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Update_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Delete_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Create_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Drop_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Reload_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Shutdown_priv         | enum('N','Y')                     | NO   |     | N       |       |
| Process_priv          | enum('N','Y')                     | NO   |     | N       |       |
| File_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Grant_priv            | enum('N','Y')                     | NO   |     | N       |       |
| References_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Index_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Alter_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Show_db_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Super_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Create_tmp_table_priv | enum('N','Y')                     | NO   |     | N       |       |
| Lock_tables_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Execute_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Repl_slave_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Repl_client_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Create_view_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Show_view_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Create_routine_priv   | enum('N','Y')                     | NO   |     | N       |       |
| Alter_routine_priv    | enum('N','Y')                     | NO   |     | N       |       |
| Create_user_priv      | enum('N','Y')                     | NO   |     | N       |       |
| Event_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Trigger_priv          | enum('N','Y')                     | NO   |     | N       |       |
| ssl_type              | enum('','ANY','X509','SPECIFIED') | NO   |     |         |       |
| ssl_cipher            | blob                              | NO   |     | NULL    |       |
| x509_issuer           | blob                              | NO   |     | NULL    |       |
| x509_subject          | blob                              | NO   |     | NULL    |       |
| max_questions         | int(11) unsigned                  | NO   |     | 0       |       |
| max_updates           | int(11) unsigned                  | NO   |     | 0       |       |
| max_connections       | int(11) unsigned                  | NO   |     | 0       |       |
| max_user_connections  | int(11) unsigned                  | NO   |     | 0       |       |
+-----------------------+-----------------------------------+------+-----+---------+-------+
39 rows in set (0.00 sec)

মাইএসকিউএল 5.5.12 থেকে mysql.user এখানে রয়েছে

mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N       |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N       |       |
| File_priv              | enum('N','Y')                     | NO   |     | N       |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N       |       |
| References_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N       |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N       |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N       |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N       |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N       |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |         |       |
| ssl_cipher             | blob                              | NO   |     | NULL    |       |
| x509_issuer            | blob                              | NO   |     | NULL    |       |
| x509_subject           | blob                              | NO   |     | NULL    |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0       |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0       |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0       |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0       |       |
| plugin                 | char(64)                          | YES  |     |         |       |
| authentication_string  | text                              | YES  |     | NULL    |       |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.01 sec)

আপনি যদি মাইএসকিউএল এর কোনও সংস্করণে mysql.user টি পুনরুদ্ধার করার চেষ্টা করেন তবে এটি এর জন্য নয়, এটি এলোমেলো অনুমতি সমস্যা তৈরি করবে। সংস্করণ-অজোনস্টিক উপায়ে মাইএসকিএল ব্যবহারকারীর অনুমতিগুলি ব্যাকআপ করার উপায়টি হল এসকিউএল-তে ব্যবহারকারী অনুদানগুলি ডাম্প করা। এইভাবে, ব্যবহারকারী অনুদানগুলি সম্পূর্ণ পোর্টেবল। এটি সম্পাদন করার দুটি উপায় রয়েছে:

বিকল্প # 1: MAATKIT ব্যবহার করা

এমকে-শো-অনুদানগুলি এসএসকিউএল তৈরি করবে যা আপনি মাইএসকিএল দৃষ্টান্তের সাথে সংযুক্ত করেন needed (মনে রাখবেন যে MAATKIT পার্কোনা টুলকিটে স্থানান্তরিত হচ্ছে This সম্ভবত এই সরঞ্জামটিকে পিটি-শো-অনুদান হিসাবে ডাকা হবে)।

বিকল্প # 2: এসকিউএল অনুদানের ডাম্পিং স্ক্রিপ্ট করুন

আমি এমকে-শো-অনুদানের নিজস্ব অনুকরণ লিখেছি। এটি অনামী ব্যবহারকারীদের ছেড়ে চলে যাবে। দেখে মনে হচ্ছে:

mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql

এই বিকল্পগুলির মধ্যে যে কোনও একটি ব্যবহার করে ব্যবহারকারী অনুদানগুলির আরও স্থিতিশীল ব্যাকআপ তৈরি করবে।

একটি পৃথক নোটে

এখন আপনি যদি এই লগ-আউটপুট বিকল্পটি ব্যবহার করেন

[mysqld]
log-output=TABLE

মাইএসকিএল ডাটাবেসটি কোনও পাঠ্য ফাইলের চেয়ে মাইএসকিএল স্কিমায় স্লো লগটি (যদি সক্ষম করা থাকে) মাইএসকিএল টেবিল হিসাবে পপুলেট করবে। সুতরাং, শারীরিক ব্যাকআপগুলি করা যেমন মাইএসকিএল টেবিল-ভিত্তিক লগগুলি অন্তর্ভুক্ত করবে। বিশ্বাস করুন, সাধারণ লগ এবং স্লো ক্যোয়ারী লগটি সক্রিয় করা হয় এবং মাইএসকিএল স্কিমাতে পাইলিং করা থাকলে ডিস্কস্পেসের পক্ষে মূল্য নেই। কেবল মাইএসকিউএল গ্রান্টস ডাম্প বিকল্পের সাথে লেগে থাকুন।

আপডেট ২০১১-০৯-১-19 15:54 ইডিটি

এসকিউএল অনুদানের মাধ্যমে মাইএসকিউএল অনুমতিগুলির ব্যাকআপগুলি বজায় রাখার জন্য খুব গুরুত্বপূর্ণ একটি বিষয় রয়েছে:

প্রতিটি ব্যবহারকারীর কিছু পরিবর্তিত MD5 ফর্ম্যাটে তাদের পাসওয়ার্ড নিয়ে আসে। Mysql 4.0 এবং পিছনে, এটি একটি 16-অক্ষরের হেক্সাডেসিমাল স্ট্রিং। Mysql 4.1+ এর জন্য এটি 41 টি অক্ষর (একটি অক্ষরেখার পরে 40-অক্ষরের হেক্সাডেসিমাল স্ট্রিং)।

আপনি কোনও এসকিউএল অনুদানের ডাম্প পুনরুদ্ধার করার আগে, কোনও 16-অক্ষরের হেক্সাডেসিমেল পাসওয়ার্ডের জন্য এসকিউএল অনুদানের ডাম্প ফাইলটি পরীক্ষা করে দেখুন। আপনি যদি একটিটি দেখতে পান তবে আপনাকে মাইএসকিএল সার্ভারে নিম্নলিখিতটি /etc/my.cnf (অথবা উইন্ডোজের জন্য my.ini) যুক্ত করতে হবে যা আপনি পুনরুদ্ধার করবেন:

[mysqld]
old_password=1

Old_password নির্দেশ সহাবস্থান প্রয়োজন এবং সঠিকভাবে একই চলমান মাইএসকিউএল ইনস্ট্যান্সের মধ্যে প্রমাণীকরণ 16 গৃহস্থালির কাজ এবং 41 গৃহস্থালির কাজ পাসওয়ার্ডগুলি অনুমতি দেয়। এগিয়ে যাওয়া যে কোনও পাসওয়ার্ড 16-অক্ষরের হবে।

মাইএসকিউএল পুনরায় চালু করার প্রয়োজন নেই। শুধু এটি চালান:

SET GLOBAL old_password = 1;

সম্পূর্ণ উত্তরের জন্য +1।
মিরসিয়া ভুটকোভিসি

1
আমি SHOW GRANTSপ্রজন্মের QUOTE()SELECT CONCAT('SHOW GRANTS FOR ',QUOTE(user),'@',QUOTE(host),';') FROM mysql.user WHERE user<>'';
এসকিউএলটি

11

হ্যাঁ, আপনি অবশ্যই mysqlডাটাবেসটি ব্যাকআপ করতে চান - এটি আপনার পরিষেবার একটি অবিচ্ছেদ্য অঙ্গ। আপনি অন্যান্য তথ্য থেকে এর বিষয়বস্তু পুনর্গঠন করতে পারেন , আপনি যদি আবার পরিষেবাতে ফিরে যেতে চাইছেন তবে তা করা অসুবিধাজনক।


1
+1 যদি আপনি মাইএসকিএল ডাটাবেসটিকে ব্যাকআপ না করেন তবে পুনরুদ্ধার করার পরে ভাঙা সিস্টেম থাকার প্রতিক্রিয়াগুলি খুব বেশি। সেখানে এসেছেন, এটি করেছেন, এটি প্রমাণ করার মানসিক দাগ পেয়েছেন।
জন গার্ডেনিয়ার্স

6

আপনি কমপক্ষে মোটামুটি সাম্প্রতিক সংস্করণগুলির মধ্যে মাইএসকিএল ডাটাবেস পুনরুদ্ধার করতে পারেন। mysql_upgradeমাইএসকিউএল এর নতুন সংস্করণগুলিতে অন্তর্ভুক্ত নামের একটি সরঞ্জাম রয়েছে যা আপনার জন্য সিস্টেম সারণীগুলি আপগ্রেড করবে।

http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html


এটা খুব সত্য। আমি কেসগুলি দেখেছি যেখানে কেউ এটি ব্যবহার করে এবং ঠিক নিখুঁতভাবে আপগ্রেড করে। আমি অন্যদের কসাই দেখেছি। মাইএসকিউএল ডিবিএ হিসাবে আমার দৃষ্টিকোণ থেকে। আমি সেই পদ্ধতিতে বিশ্বাস হারিয়ে ফেলেছি। যেহেতু আপনার উত্তরটি এর ব্যবহারের প্রতি দৃ faith় বিশ্বাসকে প্রতিফলিত করে, তাই আপনাকে অবশ্যই প্রথম গোষ্ঠী থেকে আসা উচিত। মাইএসকিএল_আপগ্রেডে এই ধরনের আত্মবিশ্বাসের জন্য +1।
RolandoMySQLDBA

আমি যখন আমার 5.6 8.0 সংস্করণে আমদানি করেছিলাম তখন এটি সার্ভারটিকে বিরক্ত করে।
পিএইচপিস্ট

5

যতক্ষণ আপনি অনুরূপ মাইএসকিএল সংস্করণে পুনরুদ্ধার করেন ততক্ষণ আপনি ব্যাকআপ থেকে মাইএসকিএল ডাটাবেস পুনরুদ্ধার করতে পারেন। যদি আপনার সন্দেহ হয় তবে মাইএসকিএল ডাটাবেস স্কিমার (ব্যাকআপ থেকে একটি এবং নতুন মাইএসকিএল সার্ভারের একটি) মধ্যে পার্থক্য তৈরি করুন।


আপনি যে সংস্করণ থেকে ব্যাক আপ করেছিলেন সেই একই সংস্করণে মাইএসকিএল পুনরুদ্ধার করার ক্ষেত্রে প্রথমে থাকার জন্য +1।
রোল্যান্ডোমাইএসকিউএলডিবিএ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.