সমস্ত ডাটাবেসের মাইএসকিউএল মাস্টার-মাস্টার প্রতিলিপি। কিভাবে?


16

পটভূমি : আমি মাস্টার-মাস্টার সারি ভিত্তিক-রেপ্লিকেশন (RBR) নিম্নলিখিত দুটি মাইএসকিউএল 5.1 সার্ভার সেটআপ আছে এই চমৎকার পথপ্রদর্শক । আমি চাই সমস্ত ডাটাবেস অনুলিপি করা, এবং নিয়মিত নতুন ডাটাবেস যুক্ত করা হবে।

লক্ষ্য : আমি কেবলমাত্র একটি সার্ভারে ডিবি যুক্ত করে প্রতিরূপে নতুন ডাটাবেস যুক্ত করতে সক্ষম হতে চাই; উভয় দাসকে থামিয়ে না দিয়ে, কনফিগারেশন ফাইলগুলি পরিবর্তন করতে, মাইএসকিউএল সার্ভার পুনরায় চালু করুন এবং দাসদের আবার শুরু করুন।

প্রশ্ন : থেকে আমি কি পড়েছি, আমি মনে করি আমি কেবল কোন বাদ এটা করতে পারেন binlog-do-db, binlog-ignore-db, replicate-do-db, এবং replicate-ignore-dbপ্রতিটি সার্ভারের কনফিগারেশন সেটিংস, কিন্তু আমি নিশ্চিত হতে পারে না। কিভাবে মাইএসকিউএল এর ডক্স Database- এবং Table- স্তর রেপ্লিকেশন অপশন মূল্যায়ন করা হয় আমাকে সব সময়ে এই কাজ করা সম্ভব কোনো উপায় নেই হতে পারে মনে আছে।

আমার /etc/mysql/my.cnfফাইলগুলির প্রাসঙ্গিক অংশগুলি নীচে অনুলিপি করা হয়েছে। আমি কি সঠিক পথে রয়েছি? আমি কি সম্ভব চাই?

মাস্টার 1 :

[mysqld]
binlog-format = row
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1

master-host = <master2_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60

log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14
max_binlog_size = 2048M

মাস্টার 2 :

[mysqld]
binlog-format = row
server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2

master-host = <master1_ip>
master-user = slave_user
master-password = <password>
master-connect-retry = 60

log-bin = /var/log/mysql/mysql-bin.log
relay-log = /var/lib/mysql/slave-relay.log
relay-log-index = /var/lib/mysql/slave-relay-log.index
expire_logs_days = 14
max_binlog_size = 2048M

1
আপনি যে মেশিনে নির্দেশনা দিচ্ছেন তাতে ডিবি তৈরি করুন।
মার্টিন

আপনার সম্পূর্ণ কনফিগার কি? আমি নীচে
এইগুলির

উত্তর:


17

আমি উভয় মাস্টারদের জন্যই এটি করেছি

log-bin = mysqld-bin
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
log-slave-updates
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
relay-log=mysqld-relay-bin

আপনি কি কোনও মাস্টারকে ডাটাবেস যুক্ত করতে এবং সেগুলি স্বয়ংক্রিয়ভাবে অন্যটিতে প্রতিলিপি করতে সক্ষম?
অ্যান্ড্রু এনসলে

হ্যাঁ তারা করেছে .. আমি কেবল সেটআপ করেছি কোনটি উপেক্ষা করতে হবে
মাইকে

1
দুটি প্রশ্ন: আমি কেবল আমাদের উভয় একই জিনিস বলছে তা নিশ্চিত করা প্রয়োজন। # 1 আপনি কি দুটি মাস্টারের একটিতে একটি ডাটাবেস যুক্ত করতে সক্ষম হন এবং এটি অন্যটিতে স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায় এবং তারপরে নতুন ডাটাবেসে প্রবেশ করা সমস্ত ডেটা কনফিগারেশন পরিবর্তন না করে সার্ভার পুনরায় আরম্ভ না করেই প্রতিলিপি করা হয়? # 2 আপনি কি স্টেটমেন্ট- বা সারি ভিত্তিক প্রতিলিপি ব্যবহার করছেন? প্রতিলিপিযুক্ত সমস্ত ডাটাবেসে আমার সমস্ত পরিবর্তন দরকার; এমনকি যারা ইতিমধ্যে "ব্যবহার" বিবৃতি ছাড়াই চলে। এই সেটিংগুলি কি সারি-ভিত্তিক প্রতিরূপে ভালভাবে কাজ করবে?
অ্যান্ড্রু এনসলে

3
হ্যাঁ হ্যাঁ হ্যাঁ হ্যাঁ :)
মাইকে

1
ঠিক আছে, আমি গত রাতে এই সেটিংসটি ব্যবহার করে আমার সার্ভারগুলি সেট আপ করেছি। আমি log-slave-updatesসেটিংসটি এড়িয়ে গেছি কারণ আমি এর প্রয়োজন নেই দেখেছি। সবকিছু নিখুঁতভাবে কাজ করে। আমি ডেটাবেস যুক্ত করতে এবং ছাড়তে সক্ষম এবং পরিবর্তনগুলি প্রতিলিপি করা হয়। ধন্যবাদ! অনুদান পুরষ্কার।
অ্যান্ড্রু এনসলে

4

ডাটাবেসগুলি তৈরির ক্ষেত্রে, সারি-ভিত্তিক প্রতিলিপি সহ ক্রিয়েট ডেটাবেস ব্যবহারের বিষয়ে এখনও বাগ রিপোর্ট রয়েছে।

এই প্রতিবেদনটি বন্ধ রয়েছে, তবে মাইএসকিউএল 5.1.47
আবার ত্রুটিটি উপস্থিত হয়েছিল এই প্রতিবেদনটি মাইএসকিউএল ক্লাস্টারের (এনডিবি স্টোরেজ ইঞ্জিন)
উপর ভিত্তি করে তৈরি করা হয়েছে এই প্রতিবেদনের প্রতিলিপি-বন্য-উপেক্ষা-টেবিলের উপর ভিত্তি করে এই প্রতিবেদনটি প্রতিলিপি করা হচ্ছে।

সারি ভিত্তিক প্রতিলিপি বাইনারি লগগুলি একটি অসাধারণ হারে বৃদ্ধি পেতে পারে যা দাসের রিলে লগগুলিতে কেবল বাইনারি লগ ডেটা প্রেরণ করে কেবল নেটওয়ার্ক ট্র্যাফিককে স্পাইক করতে পারে।

@ মাইক বলেছেন যে তিনি কাজ করতে এবং ঠিকঠাক প্রতিলিপি তৈরি করতে ডাটাবেস তৈরি করেছেন। আমি মোটেই সন্দেহ করি না। আমি যেটি হচ্ছি তা হ'ল মাইএসকিউএল-এর অরাকল) ডাটাবেস তাত্ক্ষণিকভাবে একবার ইনস্ট্যান্ট হয়ে যাওয়ার পরে সারি ভিত্তিক প্রতিলিপিটি থেকে সমস্ত কলিংস অর্জন না করে।

আপনি যদি এখনও বাইনারি লগগুলিতে সারি ভিত্তিক এন্ট্রি চান তবে আপনি সারি_ফর্ম্যাট মিশ্রয়েডে স্যুইচ করতে চাইতে পারেন। অভ্যন্তরীণভাবে, বাইনারি লগ ফর্ম্যাটটি স্টেটমেন্ট এবং যে কোনও উপায়ে স্থির করাতে প্রবাহিত করে: (দেখুন http://bugs.mysql.com/bug.php?id=40146 )। আরও বাগের প্রতিবেদনগুলি মিশ্রিত ব্যবহার করে বন্ধ করা হয়েছে এবং সারি ভিত্তিক ( http://bugs.mysql.com/bug.php?id=39701 ) থেকে দূরে থাকলেও সমস্যাগুলি মাঝে মাঝে স্থির থাকে।

শেষ নোট

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


যে সব তথ্যের জন্য ধন্যবাদ। বিবৃতি-ভিত্তিক-প্রতিরূপে আমার একমাত্র সমস্যা হ'ল ডাটাবেস নির্দিষ্টকরণের পরিবর্তন (যেমন "INSERT INTO db1.table1 (col1) VALUES ('হাই');") ডাটাবেসটি বর্তমান ডাটাবেস না হওয়া পর্যন্ত কাজ করবে না। আমি মনে করি বিবৃতি-ভিত্তিক-প্রতিরূপে স্যুইচ করার এবং কিছু কোড সাফ করার সময় হতে পারে ...
অ্যান্ড্রু এনসলে

দেখা যাচ্ছে যে প্রয়োজনীয় কোডটি ঠিক করা এত কঠিন ছিল না। আমি এখন বিবৃতি ভিত্তিক-প্রতিলিপি ব্যবহার করছি। পরামর্শের জন্য ধন্যবাদ.
অ্যান্ড্রু এনসলে

0

হুম ... অটো-বর্ধিত কী এবং ক্ষেত্রগুলি হ্যান্ডেল করার / আলাদা করার উপায়ও আপনাকে খুঁজে বের করতে হবে। এটি আকর্ষণীয় দেখায় .. http://mysql-mmm.org/


এটি আমার কনফিগারেশন ফাইলগুলিতে auto-increment-incrementএবং auto-increment-offsetসেটিংসে পরিচালনা করা হয় । এই পৃষ্ঠাটি দেখুন: dev.mysql.com/doc/refman/5.1/en/…
অ্যান্ড্রু এনসলে

আমার মনে হয় আপনি ভুল বুঝেছেন। @ অ্যান্ড্রু নতুন ডাটাবেস যুক্ত করার কথা বলছে, নতুন ডাটাবেস সার্ভার যুক্ত করছে না। যদি @ অ্যান্ড্রু নতুন ডাটাবেস সার্ভার চালু করছিল, তবে 3 বা ততোধিক ডিবি সার্ভারের মধ্যে ডেটা পুনরায় বিতরণ করার সময় কী সংঘর্ষের ঘটনা ঘটতে পারে যা আপনার উত্তরটি সম্বোধন করবে। আপনার চেষ্টা করার জন্য +1, তবে দয়া করে সমস্ত প্রশ্ন মনোযোগ সহকারে পড়ুন। আমাকেও একইভাবে পোড়ানো হয়েছে।
রোল্যান্ডোমাইএসকিউএলডিবিএ 20'11

@ সমস্ত: উফ .. দুঃখিত। আমি শপথ করে বলতে পারি আমি এটি
পুরোটা

-1

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


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