মাইএসকিউএল প্রতিলিপি: 'প্রাথমিক কী জন্য নকল এন্ট্রি'


9

আপনি কি দয়া করে আমাকে বুঝতে সক্ষম করতে কেন আমি পুরো পুনরায় সিঙ্কের পরে একটি স্লেভ সার্ভারে 'প্রাথমিক কী'র জন্য ডুপ্লিকেট এন্ট্রি' পাচ্ছি।

মূলত 'মাইসকিলডাম্প' প্রায় পুরো রাত চলছিল এবং তারপরে পুনরুদ্ধার প্রক্রিয়াটি কয়েক ঘন্টা লেগেছিল তাই আমি যখন দাসটি শুরু করেছি তখন এটি মাস্টারের পিছনে ছিল ~ 63874 সেকেন্ড।

স্লেভ সার্ভারটি কেবল পঠনযোগ্য (কেবলমাত্র পঠনযোগ্য) এবং পুনরায় সিঙ্ক প্রক্রিয়া চলাকালীন কোনও লিখন নেই তাই কেন নকল কী রয়েছে তা আমি বুঝতে পারি না।

বাইনারি লগ ফর্ম্যাটটি মাস্টারে মিক্সডে সেট করা আছে।

ডিবি ব্যাকআপ করতে ব্যবহৃত কমান্ড:

mysqldump --opt --single-transaction -Q --master-data=2 db | bzip2 -cz > db.sql.bz2

স্লেভ নিম্নলিখিত বিকল্পগুলির সাথে মাস্টার (ডিবি -> ডিবি_ব্যাকআপ) থেকে কেবল একটি ডাটাবেসের অনুলিপি করছে:

replicate-wild-do-table = db_backup.%
replicate-rewrite-db = db->db_backup

উত্তর:


11

সহায়তা # 1: অনুলিপি

আমি এটা মনে করি না

replicate-wild-do-table = db_backup.%
replicate-rewrite-db = db->db_backup

আকত্রে থাকা.

অন্যান্য ব্যক্তিরাও এটি সম্পর্কে বিস্মিত হয়েছে

অর্ডার প্রতিলিপি সংক্রান্ত বিধিগুলি থেকে প্রক্রিয়াজাত হয়। প্রতিলিপি বিধিতে মাইএসকিউএল ডকুমেন্টেশন অনুসারে :

যদি কোনও --replicate-rewrit-db অপশন নির্দিষ্ট করা থাকে তবে সেগুলি --replicate- * ফিল্টারিং বিধি পরীক্ষা করার আগে প্রয়োগ করা হয়।

এমনকি প্রতিলিপি-পুনর্লিখন-ডিবিতে মাইএসকিউএল ডকুমেন্টেশন বলে:

--Replicate- * বিধি পরীক্ষা করার আগে ডাটাবেস নাম অনুবাদ করা হয়।

replicate-wild-do-tableলেখা পরে জারি করা হয়েছে। যদি এই অর্ডারটি কোনওভাবে কোনও টেবিলটিতে ইতিমধ্যে ডেটা রয়েছে এমন কোনও INSERT চাপিয়ে দেয় তবে অবাক হওয়ার কিছু নেই।

আপনি সম্ভবত জিজ্ঞাসা করছেন সেখানে কীভাবে ডেটা পেল?

ASPECT # 2: mysqldump

করাকে mysqldump --single-transactionডেটা-ইন-টাইম ডাম্পের পয়েন্ট-ইন করার সর্বোত্তম উপায় বলে মনে হয়। দুর্ভাগ্যবশত, mysqldump --single-transactionএকটি অ্যাকিলিসের গোড়ালি রয়েছে: ALTER TABLE। যদি কোনও টেবিল কোনও ALTER TABLEকমান্ডের সাপেক্ষে , যেমন একটি DROP TABLEএবং CREATE TABLEএটি যে মাইএসকিলডাম্প লেনদেনের চেষ্টা করছিল তার লেনদেনের অখণ্ডতাটিকে ভেঙে ফেলতে পারে a এছাড়াও বিঘ্নিত হতে।

আপনি মাইএসকিউএল পারফরম্যান্স ব্লগের সেরা রক্ষিত মাইএসকিউএলডাম্প সিক্রেট থেকে আরও তথ্য পেতে পারেন । আমি আসলে একটি পূর্ববর্তী প্রশ্নে 12 টি কমান্ডের বিবরণ দিয়ে সম্বোধন করেছি যা কোনও মাইএসকিল্ডাম্পের লেনদেনের অখণ্ডতা ভঙ্গ করতে পারে: মাইএসকিউএল ব্যাকআপ ইনোডিবি

বিচারকার্য স্থগিত রাখার আদেশ

উপসংহার

এক বা উভয় দিকই মাইএসকিএলডাম চলাকালীন একটি সারি স্লিপ করতে দিতে অবদান রাখতে পারে যা পুনর্লিখনের নিয়ম বা মাইএসকিএলডামের বিচ্ছিন্নতার কারণে অস্তিত্বের কারণেই বিদ্যমান ছিল না।

পরামর্শ

স্লেভ প্রক্রিয়াজাত করে যে সমস্ত INSERT গুলি স্লেভ প্রক্রিয়াভুক্ত করবে এবং স্ল্যাভের মধ্যে ইতিমধ্যে সারি বিদ্যমান কিনা তা দেখতে আমি মাইএসকিএলডাম শুরু হওয়ার পর থেকে সমস্ত রিলে লগগুলির একটি মাইএসকিএলব্লিনগ ডাম্প করব। যদি তারা তা করে, আপনি সম্ভবত দুটি জিনিস করতে পারেন:

1: সমস্ত সদৃশ কী ত্রুটিগুলি এড়িয়ে যান

স্লেভটিতে এটি my.cnf এ কেবল যুক্ত করুন

[mysqld]
slave-skip-errors=1062
skip-slave-start

এবং mysql পুনরায় আরম্ভ করুন। তারপর, চালানSTART SLAVE;

সমস্ত সদৃশ-কী ত্রুটিগুলি বাইপাস হয়ে যাবে। Seconds_Behind_Master0 এ গেলে , এই রেখাগুলি সরান এবং মাইএসকিএল পুনরায় চালু করুন।

2: পারকোনা সরঞ্জামগুলি ডাউনলোড করুন

আপনার প্রয়োজনীয় সরঞ্জামগুলি হ'ল

স্লেভের পার্থক্যগুলি খুঁজতে এটি ব্যবহার করুন এবং তারপরে তাদের সংশোধন করুন


0

কোডে সন্নিবেশ ক্যোয়ারী যাচাই করুন যা সরাসরি ক্রীতদাসে সন্নিবেশ করে। আমরা কেবল দাসের কাছ থেকে পড়তে পারি। লেখার প্রশ্নগুলি মাস্টারকে নির্দেশ দেওয়া উচিত।


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