- MySQL मास्टर संस्करण: 5.5.16-1
- MySQL गुलाम संस्करण: 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
फ़ाइल क्योंकि यह दास असंगत ला सकते हैं।
इस त्रुटि का कारण क्या हो सकता है?
अपडेट करें
यह नहीं है कि मैं आमतौर पर mySQL प्रतिकृति कैसे सेट करता हूं
आपको लगता है कि कौन से कदम मुझे दस्तावेज़ का पालन नहीं करते हैं?
मुझे आश्चर्य है कि अगर आप एक ही समस्या का सामना करेंगे, यदि आप पूरे कॉन्फ़िगरेशन को सेटअप करने के बजाय थे जो कि mysqldump कमांड को पास कर रहे थे।
नहीं, यह सामान्य रूप से काम करता है अगर मैं भी मास्टर को संबंधित निर्देशांक में बदलता हूं।
मैं दास पर डेटाबेस को छोड़ने की कोशिश करूँगा, सुनिश्चित करें कि बिनलॉग स्पष्ट हैं, और फिर से शुरू करें। अनुक्रमणिका में त्रुटियाँ नहीं होने का आश्वासन देने के लिए मास्टर पर विचाराधीन तालिका भी देखें।
क्या डिलीट (मूव) सभी डेटादिर के लिए पर्याप्त है? मैंने ऐसा ही किया और वही नतीजा मिला।
@Dmytro Leonenko को जवाब दें
दास को 'दास की स्थिति दिखाओ' यह सुनिश्चित करने के लिए कि वह ठीक से कॉन्फ़िगर किया गया है, 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)
मैं सोच रहा हूँ क्यों Master_Log_Pos 4 है?
--master-data
विकल्प पहले से ही डंप फ़ाइल के लिए द्विआधारी लॉग निर्देशांक लिख रहा है। मुझे केवल मास्टर को मास्टर_होस्ट, मास्टर_युसर, मास्टर_पासवर्ड में बदलना होगा।
--master-data
डेटा स्नैपशॉट बनाते समय मुझे विकल्प का उपयोग नहीं करना चाहिए ? यदि यह तब भी होता है जब मैं --lock-all-tables
विकल्प का उपयोग करता हूं और change master to master_log_file='', master_log_pos='', ...
, इसके कारण क्या हो सकते हैं?
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1
क्या क्वेरी कम से कम त्रुटि में बदलाव का कारण बनती है? क्या गुलाम बिनलॉग स्थिति सेटअप सही था?