আমি ফাইলগুলি অনুলিপি করে একটি মাইএসকিউএল ডাটাবেস অনুলিপি করতে পারি? ফাইলগুলি ঠিক কী ধারণ করে?


13

আমি মাইএসকিউএল ডাটাবেস ব্যবহার করছি এবং একটি উবুন্টু লিনাক্স মেশিন ব্যবহার করছি।

আমার ডাটাবেসের নামে db_test, আমি পথ অধীনে লক্ষ্য /var/lib/mysql/db_test, সেখানে ফাইল সঙ্গে প্রত্যয় .frm, .MYD, .MYIনিম্নলিখিত বর্ণনার অনুরূপ:

/var/lib/mysql/db_test# ls

cars.frm 
cars.MYD 
cars.MYI

customers.frm
customers.MYD
customers.MYI

departments.frm
departments.MYD
departments.MYI

... 

প্রতিটি মনে .frm, .MYD, .MYIফাইল গ্রুপ ডাটাবেসের মধ্যে এক টেবিলে সঙ্গে মানচিত্র তৈরী করেন।

আমি জিজ্ঞাসা করতে দুটি প্রশ্ন নিম্নলিখিত:

  1. তিনটি ফাইল ঠিক কী করছে?

  2. যদি আমি पथের অধীনে একটি নতুন ডিরেক্টরি তৈরি করি এবং ডিরেক্টরি থেকে প্রতিটি ফাইল অনুলিপি /var/lib/mysql/করি db_test_2, তবে এটিও কি একটি নতুন ডাটাবেস তৈরি করবে যার ঠিক একই বিষয়বস্তু (সারণী) এর মতো ?db_test_1db_test_2db_test_2db_test_1

এই শারীরিকভাবে ডাটাবেস ফাইলগুলি ক্রিয়াকলাপে পদক্ষেপ নেওয়ার ফলে নিম্নলিখিত কমান্ড-লাইন ক্রিয়াগুলির মতো একই ফলাফল তৈরি হয়:

  1. ডাটাবেস db_test_1ফেলা

  2. একটি নতুন ডাটাবেস তৈরি করুন db_test_2

  3. তারপরে db_test_1নতুন ডাটাবেসে ডাটাবেস ফেলা db_test_2?

যদি তা হয় তবে mysqldumpডাটাবেসগুলি অনুলিপি করতে (বা মাইএসকিউএল থেকে একটি ডিবি থেকে অন্য ডিবিতে ডেটা আমদানি করার জন্য) ফাইলগুলি মুভিং করার চেয়ে অনেক বেশি দ্রুত বলে মনে হচ্ছে । এ সম্পর্কে কোন মতামত?

উত্তর:


5
  1. আফাআর, .frm হ'ল বিবরণ-ফাইল (যেখানে ডাটাবেস টেবিল স্টেকচার বর্ণিত), এমওয়াইডি ডেটা সহ ফাইল, .এমওয়াইআই ইনডেক্স সহ ফাইল।

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

সম্পাদনা করুন: পিএস আপনি নিরাপদে এই ফাইলগুলি অনুলিপি করতে পারেন, তবে আপনার মাইএসকিএল সার্ভারটি বন্ধ করার আগে।


4

আপনার কাছে একটি সেমিডি-লাইনের সরঞ্জাম রয়েছে যা এটি ঠিকভাবে করে: mysqlhotcopy

এটি মাইসাম টেবিলগুলি ভাল কাজ করে, তবে ইনোডিবি টেবিলগুলির সাথে নয়।

আপনি যদি নিজের সার্ভারটি lvm দিয়ে কনফিগার করেছেন এবং আপনার / var / lib / mysql এখানে একটি উত্সর্গীকৃত ভলিউমে রেখেছেন তবে আমি আপনার সমস্ত ডাটাবেসগুলিকে খুব দ্রুত এবং একটি অবরুদ্ধকরণ উপায়ে ব্যাকআপ দেওয়ার পরামর্শ দিই:

mysql -U root -p
  > flush tables with read lock;

এটি আপনার সমস্ত টেবিলগুলি ডিস্কে ফ্লাশ করে এবং কোনও আর / ডাব্লু অপারেশন অবরুদ্ধ করে

  > system "lvcreate -s -L 1G -n lvMysql_snap /dev/vg_myserver/lv_mysql" ;

আপনার কনফিগারেশনের সাথে খাপ খাইয়ে নেওয়া দরকার, এটি আপনার ডাটাবেসের ফাইল সিস্টেমের একটি স্ন্যাপশট তৈরি করে। সময় লাগে না

  > unlock tables;

এটি সম্পন্ন হয়, আর / ডাব্লু অপারেশন আবার শুরু হয়।

এখন আপনি মাউন্ট / dev / vg_myserver / lvMysql_snap করতে পারেন এবং আপনার ডাটাবেসের একটি সংরক্ষণাগার তৈরি করতে পারেন!


এটি ডিবি ব্যাকআপ করার একটি দ্রুত উপায় বলে মনে হচ্ছে। তবে সেই স্ন্যাপশটটি আবার স্যুইচ করার বিষয়ে কী তাই এটি আবার আমার লাইভ ডাটাবেস হয়ে যায়? এই অংশটি সম্পর্কে আমি সত্যিই উদ্বিগ্ন। আমি mysqldumpআমার সেকেন্ডের 2 সেকেন্ডের মধ্যে ডিবি করতে পারি। এটি পুনরুদ্ধার করা 5-10 মিনিট সময় নিয়ে ধীর অংশ।
বাটল বুট্কাস

সাম্প্রতিক ডিস্ট্রোজগুলিতে lvm স্ন্যাপশটগুলি উত্সটিতে ফিরে যেতে পারে, তবে আপনি সম্ভবত ডাটাবেস ব্যাকআপ পরিচালনা করার জন্য যা চান তা নয়।
অলিভিয়ার এস

MySQLlhotcopy সম্পর্কিত: "এই ইউটিলিটিটি মাইএসকিউএল 5.6.20 এ অবচয় করা হয়েছে এবং মাইএসকিউএল ৫. in এ অপসারণ করা হয়েছে" থেকে: [ dev.mysql.com/doc/refman/5.6/en/mysqlhotcopy.html]
জিউস্টল

0

এটি মাইআইএসএএম এর পক্ষে কাজ করবে, তবে ইনোডিবি-র পক্ষে নয়। Https://serverfault.com/a/367321/57569 দেখুন

উত্তর থেকে ইনোডিবি সম্পর্কে:

যদি আপনি কেবল .frm এবং .ibd ফাইলটি অনুলিপি করার কথা ভাবছেন, তবে আপনি আঘাতের জগতের পক্ষে রয়েছেন। InnoDB টেবিলের .frm এবং .ibd ফাইলটি অনুলিপি করা কেবল তখনই ভাল যদি আপনি গ্যারান্টি দিতে পারেন যে .bd ফাইলের টেবিলস্পেস আইডিটি আইবিডেটা 1 ফাইলের মেটাডেটা টেবিলস্পেস আইডি প্রবেশের সাথে ঠিক মেলে।

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