Mysqldump কি এবং আমি কিভাবে এটি ব্যবহার করব?

সুচিপত্র:

Mysqldump কি এবং আমি কিভাবে এটি ব্যবহার করব?
Mysqldump কি এবং আমি কিভাবে এটি ব্যবহার করব?
Anonim

একটি নেতৃস্থানীয় অবাধে উপলব্ধ ডাটাবেস হিসাবে, MySQL অনেক ওয়েব অ্যাপ্লিকেশনের জন্য একটি জনপ্রিয় পছন্দ। ইন্টারনেটের সংস্পর্শে আসায়, আপনার অ্যাপটি দূষিত আক্রমণের সম্মুখীন হয়। আপনার সার্ভার আপস করা হলে, সর্বোত্তমভাবে, আপনাকে অ্যাপ্লিকেশনটি পুনরায় ইনস্টল করতে হবে; সবচেয়ে খারাপভাবে, আপনি আপনার ডেটা হারাতে পারেন। উপরন্তু, আপনি এমন পরিস্থিতিতে পড়তে পারেন যেখানে আপনাকে একটি সার্ভার থেকে অন্য সার্ভারে একটি ডাটাবেস স্থানান্তর করতে হবে৷

mysqldump কিসের জন্য ব্যবহার করা হয়?

mysqldump টুল আপনাকে সার্ভার আপস এবং মাইগ্রেশন উভয় পরিস্থিতির জন্য কভার করেছে। এর মৌলিক কাজ হল একটি MySQL ডাটাবেস নেওয়া এবং এটিকে একটি টেক্সট ফাইল হিসাবে ডাম্প করা। কিন্তু কোনো টেক্সট ফাইল নয়; ফাইলটি SQL স্টেটমেন্টের একটি সেট।এই বিবৃতিগুলি, যখন কার্যকর করা হয়, তখন ডাটাবেসটিকে সঠিক অবস্থায় পুনর্গঠন করে যা ডাম্পটি কার্যকর করার সময় ছিল৷

ব্যাকআপ হিসাবে একটি ডাটাবেসের রপ্তানি তৈরি করতে বা একটি নতুন হোস্টে ডাটাবেস সরানোর সময় mysqldump ব্যবহার করুন। উভয় ক্ষেত্রেই, পাঠ্য ফাইলটি একটি MySQL ডাটাবেস সার্ভারে আবার আমদানি করা হবে। এটি ফাইলের সমস্ত SQL স্টেটমেন্ট এক্সিকিউট করবে, যা ডাটাবেসকে তার আসল অবস্থায় পুনঃনির্মাণ করে। এই অংশটি mysqldump কমান্ড ব্যবহার করে না, তবে এই ইউটিলিটি ছাড়া এটি সম্ভব হবে না।

MySQL ডক্স ব্যাকআপ করার জন্য অন্যান্য পদ্ধতির তালিকা করে, কিন্তু এর ত্রুটি রয়েছে:

  • MySQL এন্টারপ্রাইজ থেকে একটি ডাটাবেস হটকপি করা এই ব্যাকআপগুলি অর্জন করার একটি দুর্দান্ত উপায় - যদি আপনি এন্টারপ্রাইজের মূল্য ট্যাগ নিয়ে কিছু মনে না করেন৷
  • অপারেটিং সিস্টেম জুড়ে চলার সময় ডাটাবেস ডেটা ডিরেক্টরি অনুলিপি করা কঠিন হতে পারে, কারণ গন্তব্য ভিন্ন হবে।
  • একটি সীমাবদ্ধ পাঠ্য ফাইলে রপ্তানি করা আপনাকে সামগ্রী দেবে, তবে আপনাকে কাঠামোটি পুনরায় তৈরি করতে হবে।
  • আপনি প্রায়শই MySQL ওয়ার্কবেঞ্চের মতো GUI প্রোগ্রাম থেকে ডেটাবেস ব্যাকআপ করতে পারেন। কিন্তু এটি একটি ম্যানুয়াল প্রক্রিয়া; এমন কিছু নয় যা আপনি স্ক্রিপ্ট করতে পারেন বা ব্যাচের চাকরিতে অন্তর্ভুক্ত করতে পারেন।

mysqldump টুল ইনস্টল করুন

Windows-এর জন্য, Windows 7 এ MySQL ইনস্টল করার জন্য আমাদের নির্দেশাবলী দেখুন (ইনস্টল প্রক্রিয়াটি Windows 10-এর জন্য একই)। macOS-এ, macOS 10.7-এ MySQL ইনস্টল করার জন্য আমাদের নির্দেশাবলী দেখুন (আবার, পুরানো কিন্তু এখনও প্রযোজ্য)। উবুন্টু-ভিত্তিক লিনাক্স সিস্টেমের ব্যবহারকারীরা মাইএসকিউএল ক্লায়েন্ট এবং ইউটিলিটি ইনস্টল করতে নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:

sudo apt install mysql-client

একটি MySQL ডাম্প বের করুন

একবার ইন্সটল করলে, একটি ডাটাবেসের সম্পূর্ণ ব্যাকআপ পেতে mysqldump ব্যবহার করুন।

mysqldump -h [আপনার DB হোস্টের নাম বা IP] -u [ডিবি ব্যবহারকারীর নাম] -p [ডেটাবেসের নাম] > db_backup.sql

এই কমান্ডে ব্যবহৃত পতাকাগুলির একটি বিবরণ এখানে রয়েছে:

  • - h: এই পতাকাটি ডাটাবেস হোস্ট। এটি একটি সম্পূর্ণ হোস্টনাম (উদাহরণস্বরূপ, myhost.domain.com) বা একটি আইপি ঠিকানা হতে পারে। যদি আপনি মাইএসকিউএল সার্ভারের মতো একই হোস্টে কমান্ডটি চালান তবে এটি খালি রাখুন৷
  • - u: আপনার ব্যবহারকারীর নাম।
  • - p: আপনি যদি সঠিকভাবে MySQL ইনস্টলেশন সুরক্ষিত করেন, তাহলে সংযোগ করার জন্য আপনার একটি পাসওয়ার্ডের প্রয়োজন হবে। কোন যুক্তি ছাড়া এই পতাকা আপনাকে একটি পাসওয়ার্ডের জন্য অনুরোধ করে যখন আপনি কমান্ডটি চালান। কখনও কখনও এই ফ্ল্যাগের আর্গুমেন্ট হিসাবে সরাসরি পাসওয়ার্ড প্রদান করা দরকারী, উদাহরণস্বরূপ, একটি ব্যাকআপ স্ক্রিপ্টে৷ কিন্তু প্রম্পটে, আপনার উচিত নয়, কারণ যদি কেউ আপনার কম্পিউটারে অ্যাক্সেস লাভ করে, তবে তারা কমান্ড ইতিহাসে এই পাসওয়ার্ডটি পেতে পারে৷
  • > db_backup.sql: এই অংশটি mysqldump কে তার আউটপুটকে একটি ফাইলে নির্দেশ করতে বলে। সাধারণত, কমান্ডটি কনসোলে সবকিছু আউটপুট করে, যার অর্থ আপনি স্ক্রিনে বেশ কয়েকটি SQL বিবৃতি দেখতে পাবেন। > চিহ্ন আউটপুটটিকে নামযুক্ত টেক্সট ফাইলে ফানেল করে। যদি এই ফাইলটি বিদ্যমান না থাকে তবে এটি স্বয়ংক্রিয়ভাবে তৈরি হয়৷

এটি শেষ হলে, আপনার কাছে একটি. SQL ফাইল থাকবে। এটি একটি টেক্সট ফাইল যাতে SQL স্টেটমেন্ট রয়েছে। বিষয়বস্তু পরিদর্শন করার জন্য আপনি এটি যেকোনো পাঠ্য সম্পাদকে খুলতে পারেন। এখানে একটি ওয়ার্ডপ্রেস ডাটাবেস থেকে রপ্তানি করা হয়েছে যা দেখায় কিভাবে এই ফাইলগুলিকে একত্রিত করা হয়৷

Image
Image

ফাইলটি বিভাগে বিভক্ত। প্রথম বিভাগটি ওয়ার্ডপ্রেস মন্তব্যের জন্য টেবিল সেট আপ করে। দ্বিতীয় বিভাগটি সেই টেবিলের বিষয়বস্তু পুনরায় তৈরি করে (এই উদাহরণে, মন্তব্য রেকর্ড)। আপনি যখন MySQL ডাম্প পুনরায় আমদানি করেন, কমান্ডটি ফাইলের মাধ্যমে কাজ করে, বিবৃতিগুলি সম্পাদন করে এবং ডাটাবেসটিকে আগের মতোই পুনরায় তৈরি করে৷

একটি MySQL ডাম্প ফাইল আমদানি করুন

আপনি ডাম্প ফাইল আমদানি করার আগে, আপনার ইতিমধ্যে তৈরি করা একটি ডাটাবেস এবং এর বৈধ ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন। আপনার ডাটাবেসের জন্য সমস্ত অনুমতি থাকা উচিত। আপনার মঞ্জুর অনুমতির প্রয়োজন নেই, তবে তাদের সকলকে মঞ্জুর করা সহজ৷

আপনার ডাটাবেসের মধ্যে নিরাপত্তা ভূমিকা পরিবর্তন করার আগে ডাটাবেসের অনুমতি সম্পর্কে আরও জানুন।

আপনার ডেটা পুনরায় আমদানি করতে, mysql কমান্ড দিয়ে MySQL সার্ভারে লগ ইন করুন। প্রম্পটে use [ডাটাবেসের নাম] টাইপ করুন এবং ডাটাবেসের নাম প্রতিস্থাপন করুন। সোর্স [ফাইলের নাম] লিখুন এবং আপনি আগে যে ডাম্প ফাইলটি নিয়েছিলেন তার নামটি প্রতিস্থাপন করুন৷

আপনি শেষ হয়ে গেলে, এসকিউএল স্টেটমেন্টগুলি কার্যকর করা হচ্ছে উল্লেখ করে বার্তাগুলির একটি তালিকা প্রদর্শিত হবে৷ ত্রুটিগুলির জন্য নজর রাখুন, তবে আপনার যদি সঠিক অনুমতি থাকে তবে আপনি ঠিক থাকবেন৷

Image
Image

প্রসেসটি সম্পূর্ণ হলে, আপনার কাছে আসল ডাটাবেসের একটি ডুপ্লিকেট থাকবে। ডাটাবেসের মধ্যে মিল যাচাই করতে, অন্য ডাম্প সম্পাদন করুন তারপর দুটি আউটপুট তুলনা করুন। দুটি ফাইলের তুলনা করার জন্য একটি পাঠ্য সম্পাদক বা একটি ডেডিকেটেড ডিফ টুল ব্যবহার করুন৷

Image
Image

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

FAQ

    আপনি কিভাবে mysqldump ত্রুটি ঠিক করবেন: লক টেবিল ব্যবহার করার সময় অ্যাক্সেস অস্বীকার করা হয়েছে?

    আপনার ডাটাবেস অ্যাডমিনিস্ট্রেটরকে বলুন আপনাকে LOCK সুবিধা দিতে। যদি এটি সমস্যার সমাধান না করে, তাহলে একই mysqldump কমান্ডটি - -একক-লেনদেন পতাকা যোগ করার চেষ্টা করুন, যেমন [ $ mysqldump --single-transaction] [-u ব্যবহারকারী] [-p DBNAME] > backup.sql

    আপনি কি mysqldump-এর সাথে "কোথায়" ক্লজ ব্যবহার করতে পারেন?

    একটি ব্যাকআপ তৈরি করার সময় একটি WHERE ক্লজ ব্যবহার করুন যাতে শুধুমাত্র প্রদত্ত শর্ত পূরণকারী সারিগুলি অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, 100-এর বেশি আইডি কলামের সারি থেকে ডেটা ডাম্প করতে, "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql" লিখুন।

প্রস্তাবিত: