মাস্টার অফলাইনে চলে গেলে স্লেভ ডিবি পরিবর্তনের সাথে আপনি কীভাবে মাস্টার মাইএসকিউএল ডিবি পুনরায় সিঙ্ক করবেন?


11

মাইএসকিউএল সার্ভার 1 মাস্টার হিসাবে চলছে।
মাইএসকিউএল সার্ভার 2 স্লেভ হিসাবে চলছে।

উভয় ডিবি অনলাইনেই, তারা "নিখুঁত সিঙ্কে" রয়েছে। স্লেভ যদি অফলাইনে চলে যায় তবে মাস্টার এখনও অনলাইনে থাকলে সমস্যা নেই; স্লেভ আবার অনলাইনে আসার পরে তারা সিঙ্কে ফিরে যাবে।

সার্ভার কনফিগারেশন ছাড়াও, স্ল্যাব ডিবিতে মাস্টার অফলাইন হয়ে গেলে আমি সংযোগ (জেএসপি কোড সহ) পুনঃনির্দেশ করেছি (আমি অবশ্যই /etc/init.d/mysqld স্টপ দিয়ে পরীক্ষা করেছি)।

মাস্টার অনলাইনে ফিরে গেলে, স্লেভ আপডেটের সাথে মাস্টারকে সিঙ্ক করার কোনও স্বয়ংক্রিয় পদ্ধতি নেই?

উত্তর:


8

প্রকৃতির কোনও কিছুকে টেনে তোলার একটি ভাল উপায় হ'ল মাস্টার-মাস্টার প্রতিলিপি বা বিজ্ঞপ্তি প্রতিলিপি সেট আপ করা। এটি মাল্টিমাস্টার পুনর্বিবেচনার সাথে বিভ্রান্ত হওয়ার দরকার নেই।

আপনার যদি মাস্টার-স্লেভ প্রতিলিপি সেটআপ করে থাকে তবে বিজ্ঞপ্তি প্রতিলিপি সেটআপ করা কার্যত খুব সহজ। এটির কনফিগার করার জন্য আপনাকে যা করতে হবে তা এখানে।

এই উদাহরণের জন্য, আমরা ধরে নেব মাস্টার-স্লেভ রেপ্লিকেশন সক্রিয় রয়েছে তবে আপনি কিছুটা ডাউনটাইম (1-2 মিনিট) অনুভব করবেন:

পদক্ষেপ 1) মাস্টারটিতে এই লাইনটি /etc/my.cnf এ যুক্ত করুন।

লগ-দাস-আপডেট

পদক্ষেপ 2) স্লেভ-এ এই লাইনটি /etc/my.cnf এ যুক্ত করুন:

লগ-বিন = মাইএসকিএল-বিন (বা এর জন্য মাস্টার যা কিছু আছে) লগ-স্লেভ-আপডেট

সতর্কতা: এখানে ডাউনটাইমের সংক্ষিপ্ত মুহূর্তটি !!!

পদক্ষেপ 3) স্লেভ-এ, সার্ভিস মাইএসকিএল পুনরায় চালু করুন

এটি স্লেভে বাইনারি লগগুলি সক্রিয় করবে

পদক্ষেপ 4) মাস্টারে, সার্ভিস মাইএসকিএল স্টপ করুন

পদক্ষেপ 5) স্লেভের মাস্টার টু / var / lib / mysql ফোল্ডারটি অনুলিপি করতে rsync ব্যবহার করুন।

সতর্কতা: এখানে ডাউনটাইমের দীর্ঘ মুহূর্তটি !!!

পদক্ষেপ)) স্লেভ-এ, সার্ভিস মাইএসকিএল স্টপ

পদক্ষেপ 7) স্লেভ-এ, শেষ বাইনারি লগটি সন্ধান করুন

পদক্ষেপ 8) স্লেভ-এ, শেষ বাইনারি লগের ফাইলসাইজটি সন্ধান করুন

পদক্ষেপ 9) স্লেভের মাস্টার টু / var / lib / mysql ফোল্ডারটি অনুলিপি করতে rsync ব্যবহার করুন। এটি একটি দ্রুত অনুলিপি হওয়া উচিত।

পদক্ষেপ 10) মাস্টারে
স্ল্যাভের শেষ বাইনারি লগের সাথে মাস্টার.ইনফোর লাইন 2 সম্পাদনা করুন ।
স্লেভের শেষ বাইনারি লগের ফাইলাইজ সহ মাস্টার.info এর লাইন 3।
স্ল্যাভের আইপি সহ মাস্টার.info এর লাইন 4।
লাইন 5 হ'ল প্রতিলিপি ব্যবহারকারীর ব্যবহারকারীক (স্পর্শ করবেন না)
লাইন 6 হ'ল প্রতিলিপি ব্যবহারকারীর পাসওয়ার্ড

পদক্ষেপ 11) মাস্টার এর সমস্ত বাইনারি লগ এবং বাইনারি লগ ইনডেক্স ফাইল মুছুন।

পদক্ষেপ 12) স্লেভে, পরিষেবা mysql শুরু করুন, 15 সেকেন্ড অপেক্ষা করুন

পদক্ষেপ 13) মাস্টারটিতে, সার্ভিস মাইএসকিএল শুরু করুন

পদক্ষেপ 14) মাস্টারে, স্টপ স্ল্যাভ চালান; মাস্টার অবস্থা দেখান;

পদক্ষেপ 15) স্লেভের উপর, মাস্টার পরিবর্তন করুন MASTER_HOST = 'স্লেভের আইপি', MASTER_USER = 'পদক্ষেপ 10 থেকে প্রতিলিপি ব্যবহারকারীর ব্যবহারকারী', MASTER_PASSWORD = 'পদক্ষেপ 10 থেকে প্রতিলিপি ব্যবহারকারীর পাসওয়ার্ড', MASTER_LOG_FILE = 'পদক্ষেপ 14 থেকে বাইনারি লগ', পদক্ষেপ 14 থেকে MASTER_LOG_POS = লগপোস।

পদক্ষেপ 16) স্লেভ-এ, স্ল্যাভ শুরু করুন;

পদক্ষেপ 17) মাস্টারে, স্লেভ শুরু করুন;

আমি উত্তর দিয়েছি এমন অন্য স্ট্যাক এক্সচেঞ্জ প্রশ্নের জন্য এর অনুরূপ পদক্ষেপগুলি সম্পাদন করেছি

একবার চেষ্টা করে দেখো !!!


খুব সুন্দর! "মাস্টার-মাস্টার-মাস্টার" সমাধানের মতো আরও এক স্লেভ ডাটাবেস মাস্টারে সিঙ্ক করা কি সম্ভব?
হারবার্থ অমরাল

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

@ ভ্যাসিলি সাইরাকিস আমি দুঃখিত আপনি আমার পরামর্শটি অচল মনে করেছিলেন। তবুও, মাইএসকিউএল ডিবিএ হিসাবে আমার 10 বছরে, প্রতিলিখনের জন্য বাইনারি লগগুলি পুনরায় স্বাক্ষর করার সময় আমি একবারে কোনও ভিপিএস বা মাইএসকিউএল ইনস্টলটি কখনও ধ্বংস করি নি। আমি ঘটনাক্রমে বহু বছর ধরে ড্রুপাল এবং ওয়ার্ডপ্রেস ক্লায়েন্টদের জন্য এটি করছি। আমার পরামর্শের জন্য দুঃখিত।
রোল্যান্ডোমাইএসকিউএলডিবিএ

হুম। আমি চলমান উদাহরণটি অনুলিপি করতে rsync ব্যবহার করার পরামর্শ দেব না। আমি পারকোনা এক্সট্রাব্যাকআপ ব্যবহার করতাম দাসের কাছ থেকে মাস্টারটিকে পুনরায় নতুন করে তুলতে । এছাড়াও log-slave-updatesমাস্টারদের অতিরিক্ত ক্রীতদাস না থাকলে আপনার দরকার নেই ।
বিল কারভিন

2

অ্যাসিক্রোনাস প্রতিলিপি দিয়ে নয় যা মাইএসকিউএল অফার করে। আপনি 'বাক্সের বাইরে' মাইএসকিউএল প্রতিলিপি (.5.৫ পূর্ববর্তী) এবং নিজের মধ্যে একটি উচ্চ প্রাপ্যতা সমাধান না হওয়ায় এর প্রবাদমূলক পেরেকটি আঘাত করেছেন। আধা-সিঙ্ক্রোনাস প্রতিলিপি (http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html) এর সাথে 5.5 দিয়ে জিনিসগুলি কিছুটা উন্নত হয় তবে মাস্টারটি অপেক্ষা করার কারণে ধীর লেনদেনের সময় ব্যয় করে দাস থেকে ack।

মাস্টার ডাউন হয়ে যাওয়ার সময় ডেটা হ্রাস পাওয়ার সম্ভাবনা গ্রহণ করা যদি কোনও বিকল্প না হয়, তবে আমি বলতে পারি যে সহজ মাস্টার / স্লেভের ক্রমযুক্তের চেয়ে আরও বেশি পরিশীলিত সেটআপ রয়েছে।

মাস্টার টু মাস্টার প্রতিলিপিটি অনেক মাইএসকিউএল খ্যাতিমান ব্যক্তিদের উপকারের চেয়ে আরও বেশি সমস্যা হিসাবে বিবেচিত হয়েছে (এমনকি মাইএসকিউএল এ বি নিজেও এটিকে কোনও উচ্চ প্রাপ্যতা সমাধান হিসাবে সুপারিশ করে না)। সুতরাং, আমি মনে করি সক্রিয় মাস্টার এবং প্যাসিভ ক্রীতদাসকে ব্লক স্তরের অনুলিপিগুলিকে সিঙ্কে রাখার জন্য ডিআরবিডি সেটআপ ব্যবহার করা আপনার এখানে যা প্রয়োজন তা আসলে।


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

আপনাকে ধন্যবাদ :) এবং আমি আমার উত্তরে অনুমান করি যে আমি এই ধারণাটি তৈরি করছি যে আপনি যদি আপনার প্রতিরূপগুলির মধ্যে ডেটা ধারাবাহিকতা সম্পর্কে এত বেশি যত্নশীল হন তবে আপনি ইতিমধ্যে সমস্ত বা বেশিরভাগই
ইনোডিবি

1

আইএমএইচও, সবার আগে, একটি নন-মাল্টি-মাস্টার (মাস্টার / স্লেভ) কনফিগারেশনে আপনার দাসকে কখনই লেখার দরকার নেই। দাস my.cnf কনফিগার করা উচিত এবং সার্ভার দিয়ে শুরু করা উচিত:

# Flag to not take writes from network
read-only

এরপরে, কোনও গুরুতর সমস্যা সমাধানের জন্য দুর্ঘটনাক্রমে একটি লিখনযোগ্য দাসের সাথে সংলাপের বাইরে চলে যায়, আপনাকে উভয় হোস্টের ডেটা পৃথক করতে হয়। যদি কোনও মূল সংঘর্ষ না হয় তবে আপনার প্রাক্তন দাস হোস্টকে নতুন মাস্টার থেকে প্রতিলিপি করা দাস হোস্ট হিসাবে আপনার পুরানো মাস্টারকে মাস্টার এবং পুনরায় চিত্রিত করার জন্য আপনার প্রচার করা উচিত। (এখানে / সম্ভবত ডেটা সমস্যা হতে পারে)

অবশেষে, যদি আউটজেড / ডাউনটাইমের এই দৃশ্যটি আরও এগিয়ে যাওয়ার সম্ভাবনা হয় তবে উভয় হোস্টকে মাল্টি-মাস্টার (লগ-বিন, সার্ভার-আইডি, অফসেট ইত্যাদি) সেট আপ করতে সময় নিন। এটি আপনাকে কিছুটা ডিগ্রীতে আউটেজ এবং ডাউনটাইম হ্রাস করতে সহায়তা করবে।

আপনার যদি মাস্টার / স্লেভ চালাতে হয় তবে কমপক্ষে আপনার এসিএল এবং অ্যাপ্লিকেশনগুলিতে ব্যবহারকারী সংযোগগুলি পড়তে এবং লিখতে আলাদা করার জন্য কিছু বোনাস পয়েন্ট পান।

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