- মাইএসকিউএল মাস্টার সংস্করণ: 5.5.16-1
- মাইএসকিউএল স্লেভ সংস্করণ: 5.5.18-1
মাস্টারের স্ন্যাপশটটি তৈরি করেছেন:
mysql> FLUSH TABLES WITH READ LOCK;
shell> mysqldump --all-databases --master-data > dbname_`date +%F`.sql
এই ডাম্প ফাইলটি --skip-slave-start
ত্রুটি ছাড়াই দাসের (যা বিকল্প দিয়ে শুরু করা হয় ) আমদানি করা হয় :
shell> pv dbname_`date +%F`.sql | mysql -u root -p
কিন্তু কার্যকর করার সময় আমি নিম্নলিখিত ত্রুটিটি পেয়েছি mysql> start slave;
:
Last_SQL_Errno: 1062
Last_SQL_Error: Error 'Duplicate entry '115846' for key
'PRIMARY'' on query. Default database: 'db'. Query: 'INSERT INTO
request_posted (id, user_id, channel, message, link, picture, name, ...
মাস্টারটিতে 115846 আইডি সহ কেবল একটি রেকর্ড রয়েছে:
mysql> select count(*) from request_posted where id=115846;
Current database: db
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.01 sec)
এর সাথে কিছু জিজ্ঞাসা বাদ দেওয়ার চেষ্টা করুন:
mysql> STOP SLAVE;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> START SLAVE;
সাহায্য করেনি আমি যুক্ত করে এই ত্রুটিগুলি এড়িয়ে যেতে চাই না:
slave-skip-errors = 1062
থেকে my.cnf
ফাইল করা হয়েছে কারণ এটি ক্রীতদাস অসঙ্গত আনতে পারে।
এই ত্রুটির কারণ কী হতে পারে?
হালনাগাদ
এটি সাধারণত আমি মাইএসকিউএল প্রতিলিপি সেটআপ করি না
আপনি দস্তাবেজটি অনুসরণ করেন না এমন কোন পদক্ষেপগুলি আপনি মনে করেন?
আমি ভাবছি আপনি যদি একই কনফিগারেশনের মুখোমুখি হন তবে আপনি যদি পুরো কনফিগারেশনটি সেটআপ করতে চেয়েছিলেন তবে যে মাইএসকিএলডাম কমান্ডটি পাস করেছিল।
না, এটি সাধারণভাবে কাজ করে যদি আমিও মাস্টারটিকে সংশ্লিষ্ট স্থানাঙ্কে পরিবর্তন করি।
আমি স্লেভের উপর ডাটাবেস ফেলে দেওয়ার চেষ্টা করব, বাইনলগগুলি পরিষ্কার রয়েছে তা নিশ্চিত করে আবার শুরু করব। সূচকের ত্রুটি নেই তা নিশ্চিত করার জন্য মাস্টারের প্রশ্নে থাকা সারণীটিও পরীক্ষা করুন।
সমস্ত ডাটাডির মুছে ফেলা (সরানো) কি যথেষ্ট? আমি তা করেছিলাম এবং একই ফলাফল পেয়েছি।
প্রত্যুত্তর
এটি সঠিকভাবে কনফিগার করা হয়েছে কিনা তা নিশ্চিত করার জন্য স্লেভের উপর 'স্লেভের অবস্থা \ G' দেখান, MASTER_LOG_POS 0 হয়
আমদানির পরে কেবল 'স্লেভ স্ট্যাটগ \ জি' দেখান তবে 'স্টার্ট স্টাভ' এর আগে; আমাদের উত্তর দিতে পারেন
আমি ডেটাডির ব্যাক আপ করেছি, সমস্ত মুছে ফেলেছি এবং চালনা করব mysql_install_db
, ডাম্প ফাইল আমদানি করব, সম্পাদন করব change master to
এবং ফলাফলগুলি এখানে:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: x.x.x.x
Master_User: xx
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:
Read_Master_Log_Pos: 4
Relay_Log_File: mysqld-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File:
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 0
Relay_Log_Space: 106
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
আমি ভাবছি মাস্টার_লগ_পোস 4 কেন?
--master-data
বিকল্প ইতিমধ্যে ডাম্প ফাইলে বাইনারি লগ স্থানাঙ্ক লিখুন। আমার কেবলমাত্র মাস্টার_হোস্ট, মাস্টার_উজার, মাস্টার_ পাসওয়ার্ডে মাস্টার পরিবর্তন করতে হবে।
--master-data
কোনও ডেটা স্ন্যাপশট তৈরি করার সময় আমার বিকল্পটি ব্যবহার করা উচিত নয় ? যদি আমি --lock-all-tables
অপশনটি ব্যবহার করি এবং এটি এখনও ঘটে থাকে change master to master_log_file='', master_log_pos='', ...
তবে এর কারণগুলি কী হতে পারে?
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1
কি কোয়েরি ত্রুটির পরিবর্তন ঘটায়? দাস বিনলগ অবস্থান সঠিকভাবে সেট আপ ছিল?