মতে মাইএসকিউএল 5.0 সার্টিফিকেশন স্টাডি গাইড , অধ্যায় 32 অনুচ্ছেদ 32.3.4, পৃষ্ঠাগুলি 456.457 বর্ণনা বাইনারি পোর্টেবিলিটি জন্য শর্ত যা আউট নিম্নলিখিত আনতে:
বাইনারি বহনযোগ্যতা গুরুত্বপূর্ণ যদি আপনি একটি বাইনারি ব্যাকআপ নিতে চান যা একটি মেশিনে তৈরি হয়েছিল এবং এটি অন্য মেশিনে ব্যবহার করতে পারে যার আলাদা স্থাপত্য রয়েছে। উদাহরণস্বরূপ, বাইনারি ব্যাকআপ ব্যবহার করা এক মাইএসকিউএল সার্ভার থেকে অন্যটিতে ডাটাবেসগুলি অনুলিপি করার এক উপায়।
মাইআইএসএএম-এর জন্য, বাইনারি বহনযোগ্যতার অর্থ হল যে আপনি মাইএসএএম টেবিলের জন্য ফাইলগুলি একটি মাইএসকিউএল সার্ভার থেকে অন্য মেশিনে অন্যটিতে অনুলিপি করতে পারবেন এবং দ্বিতীয় সার্ভারটি টেবিলটি অ্যাক্সেস করতে সক্ষম হবেন।
ইনোডিবি-র জন্য, বাইনারি বহনযোগ্যতার অর্থ আপনি সরাসরি কোনও মেশিনের মাইএসকিউএল সার্ভার থেকে টেবিল স্পেস ফাইলগুলি অন্য একটি মেশিনের অন্য সার্ভারে অনুলিপি করতে পারেন এবং দ্বিতীয় সার্ভারটি টেবিলস্পেসে অ্যাক্সেস করতে সক্ষম হবেন। ডিফল্টরূপে, সার্ভার দ্বারা পরিচালিত সমস্ত InnoDB টেবিলগুলি টেবিল স্পেসে একসাথে সংরক্ষণ করা হয়, সুতরাং টেবিলস্পেসের বহনযোগ্যতা সমস্ত স্বতন্ত্র InnoDB টেবিলগুলি বহনযোগ্য কিনা তা একটি ফাংশন। এমনকি একটি টেবিল পোর্টেবল না হলেও টেবিল স্পেস নয়।
মাইআইএসএএম টেবিল এবং ইনোডিবি টেবিল স্পেসগুলি দুটি শর্ত পূরণ করলে একটি হোস্ট থেকে অন্য হোস্টে বাইনারি পোর্টেবল হয়:
- উভয় মেশিনে অবশ্যই দু'জনের পরিপূরক পূর্ণসংখ্যার গাণিতিক ব্যবহার করা উচিত
- উভয়ই মেশিন অবশ্যই আইইইই ভাসমান-পয়েন্ট ফর্ম্যাট ব্যবহার করতে হবে অন্যথায় সারণিতে অবশ্যই কোনও ভাসমান-পয়েন্ট কলাম থাকতে হবে না (ফ্লাট বা ডাবল)
অনুশীলনে, এই দুটি শর্ত সামান্য বিধিনিষেধ সৃষ্টি করে। দুইটির পরিপূরক পূর্ণসংখ্যার গাণিতিক এবং আইইইই ফ্লোটিং-পয়েন্ট ফর্ম্যাটটি আধুনিক হার্ডওয়্যারটির আদর্শ। InnoDB বাইনারি বহনযোগ্যতার জন্য একটি তৃতীয় শর্ত হ'ল আপনার সারণী এবং ডাটাবেসগুলির জন্য ছোট হাতের নাম ব্যবহার করা উচিত। এর কারণ ইনোএনডিবি এই নামগুলি অভ্যন্তরীণভাবে (এটির ডেটা অভিধানে) উইন্ডোজে লোয়ারকেসে সংরক্ষণ করে। ছোট হাতের নাম ব্যবহার করে উইন্ডোজ এবং ইউনিক্সের মধ্যে বাইনারি বহনযোগ্যতা, ছোট হাতের নাম ব্যবহার করতে বাধ্য করতে, আপনি একটি বিকল্প ফাইলে নিম্নলিখিত লাইনগুলি রাখতে পারেন:
[mysqld]
lower_case_table_names=1
আপনি যদি প্রতি টেবিল টেবিল স্পেসগুলি ব্যবহার করতে InnoDB কনফিগার করেন তবে বাইনারি বহনযোগ্যতার শর্তগুলি InnoDB টেবিলের জন্য .ibd ফাইলগুলি অন্তর্ভুক্ত করার জন্য বাড়ানো হয়েছে। (ভাগ করা টেবিল স্পেসগুলির শর্তাবলী এখনও প্রযোজ্য কারণ এতে ডেটা ডিকশনারি রয়েছে যা সমস্ত InnoDB টেবিল সম্পর্কে তথ্য সঞ্চয় করে))
বাইনারি বহনযোগ্যতার জন্য শর্তগুলি যদি সন্তুষ্ট না হয় তবে আপনি মাইআইএসএএম বা ইনোডিবি টেবিলগুলি একটি সার্ভার থেকে অন্য সার্ভারে অনুলিপি করে কিছু পাঠ্য বিন্যাস (উদাহরণস্বরূপ, মাইকিকিল্ডম্প সহ) ব্যবহার করে সেগুলি গন্তব্য সার্ভারে পুনরায় লোড করে কপি করতে পারেন।
পৃথক সারণী সরানোর জন্য স্টোরেজ ইঞ্জিনের উপর ভিত্তি করে দুটি বড় উপায় রয়েছে।
প্রদত্ত উদাহরণের জন্য আমরা নিম্নলিখিতটি অনুমান করব:
- ডেটাডির হ'ল / ভার / লিব / মাইএসকিএল
- ডাটাবেস মাইডিবি নামে পরিচিত
- mydb ডাটাবেসে সারণী বলা হয় mytable ।
মাইআইএসএএম টেবিল
যদি mydb.mytable মাইআইএসএএম স্টোরেজ ইঞ্জিন ব্যবহার করে, টেবিলটি শারীরিকভাবে তিনটি পৃথক ফাইল হিসাবে প্রকাশিত হবে
- /var/lib/mysql/mydb/mytable.frm (.frm ফাইল)
- /var/lib/mysql/mydb/mytable.MYD (.MYD ফাইল)
- /var/lib/mysql/mydb/mytable.MYI (.MYI ফাইল)
.Frm এ টেবিলের কাঠামো
রয়েছে। এমওয়াইডি টেবিলের ডেটা
ধারণ করে .MYI সারণী সূচী পৃষ্ঠাটি রয়েছে
এই ফাইলগুলি মাইএসকিএল-এর যৌক্তিক দৃষ্টিকোণ থেকে টেবিলকে উপস্থাপন করতে পরস্পর নির্ভরশীলভাবে ব্যবহৃত হয়। যেহেতু এই ফাইলটির কোনও যুক্তিসঙ্গত সংযুক্তি নেই, তাই একটি ডিবি সার্ভার থেকে অন্য টেবিলে একটি টেবিল স্থানান্তরিত। আপনি এমনকি এটি একটি উইন্ডোজ সার্ভার থেকে একটি লিনাক্স সার্ভার বা ম্যাকওএসেও করতে পারেন। অবশ্যই, আপনি মাইএসকিএল বন্ধ করে 3 টি টেবিল ফাইলগুলি অনুলিপি করতে পারেন। আপনি নিম্নলিখিত চালাতে পারে:
LOCK TABLES mydb.mytable READ;
SELECT SLEEP(86400);
UNLOCK TABLES;
কেবলমাত্র পঠনযোগ্য হিসাবে টেবিল রাখার জন্য এক ssh অধিবেশনে এবং 24 ঘন্টা লকটি ধরে রাখুন। এক সেকেন্ড পরে, অন্য ssh সেশনে অনুলিপি সম্পাদন করুন। তারপরে 24 ঘন্টা লক দিয়ে মাইএসকিএল সেশনটি হত্যা করুন। আপনার 24 ঘন্টা অপেক্ষা করার দরকার নেই।
InnoDB টেবিল
শংসাপত্রের বইয়ের পূর্বোক্ত উক্তির উপর ভিত্তি করে, এমন অনেকগুলি কারণ রয়েছে যা কোনও নির্দিষ্ট InnoDB টেবিলটিকে কীভাবে ব্যাকআপ করবেন তা পরিচালনা করে। সরলতা, স্বচ্ছতা এবং সংকোচনের স্বার্থে, সারণির নিখুঁত পয়েন্ট-ইন-টাইম ডাম্পের জন্য - একচেটিয়া-লেনদেনের পরামিতিগুলি ব্যবহার করে পছন্দসই টেবিলের একটি মাইএসকিএলড্প সঞ্চালন করুন। আপনি কেবল একটি টেবিল চাইলে InnoDB শব্দার্থবিজ্ঞানের সাথে নিজেকে সেন্সর করার দরকার নেই। আপনি নিজের পছন্দমতো যে কোনও মাইএসকিউএল সার্ভারে সেই ডাম্পফিলটি পুনরায় লোড করতে পারেন।
যেহেতু এখানে দুটি প্রশ্ন একত্রীভূত হয়েছিল (jcolebrand): EDIT
আপনি যদি কিছু ধীর ডিবি পারফরম্যান্সের সাথে বাঁচতে ইচ্ছুক না হন, তবে mysql এখনও সার্ভারে চলমান থাকা সত্ত্বেও আপনি পুরানো সার্ভার (সার্ভারএ) থেকে নতুন সার্ভারে (সার্ভারবি) বেশ কয়েকটি সিরিজ করতে পারেন s
পদক্ষেপ 01) সার্ভারএর যে মাইএসকিএল এর একই সংস্করণ ইনস্টল করুন
পদক্ষেপ 02) সার্ভারএ-তে, মাইএসকিএল SET GLOBAL innodb_max_dirty_pages_pct = 0;
এবং প্রায় 10 মিনিট থেকে চালান (এটি InnoDB বাফার পুল থেকে নোংরা পৃষ্ঠাগুলি মুছে দেয় It এটি মাইএসকিএল শাটডাউন দ্রুত সম্পাদন করতেও সহায়তা করে) আপনার ডাটাবেস যদি সমস্ত মাইআইএসএএম হয় তবে আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন।
পদক্ষেপ 03) rsync --archive --verbose --stats --partial --progress --human-readable ServerA:/var/lib/mysql ServerB:/var/lib/mysql
পদক্ষেপ 04) আরএসসিএন 1 মিনিটেরও কম সময় না নেয় না হওয়া পর্যন্ত পদক্ষেপ 03 পুনরাবৃত্তি করুন
পদক্ষেপ 05) service mysql stop
সার্ভারে
পদক্ষেপ 06) আরও একটি আরএসএনসি সম্পাদন করুন
পদক্ষেপ 07) scp ServerA:/etc/my.cnf ServerB:/etc/
পদক্ষেপ 08) service mysql start
সার্ভারে
পদক্ষেপ 08) service mysql start
সার্ভারএতে (alচ্ছিক)
একবার চেষ্টা করে দেখো !!!
বিচারকার্য স্থগিত রাখার আদেশ
আপনি এর মতো একটি রেপ্লিকেশন স্লেভ তৈরি করতে পারেন। কেবল মনে রাখবেন সার্ভার-আইডি স্পষ্টভাবে মাস্টার /etc/my.cnf এ সেট করা এবং স্লেভ /etc/my.cnf- এ সার্ভার-আইডির জন্য আলাদা নম্বর