- 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, ...
마스터에 ID가 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 명령을 전달하는 대신 전체 구성을 설정하면 동일한 문제가 발생하는지 궁금합니다.
아니요, 마스터를 해당 좌표로 변경하면 정상적으로 작동합니다.
슬레이브에 데이터베이스를 삭제하고 binlog가 지워 졌는지 확인한 다음 다시 시작하십시오. 또한 인덱스에 오류가 없는지 마스터에서 해당 테이블을 확인하십시오.
모든 datadir을 삭제 (이동)합니까? 나는 그것을했고 같은 결과를 얻었습니다.
트윗 담아 가기
슬레이브에 'show slave status \ G'가 올바르게 구성되어 있는지 확인하십시오. MASTER_LOG_POS는 0입니다.
가져 오기 후 'start slave'전에 'show slave statug \ G'만 표시; 우리에게 답을 줄 수 있습니다
datadir을 백업하고 모두 삭제하고 실행 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를 master_host, master_user, master_password로만 변경하면됩니다.
--master-data
데이터 스냅 샷을 만들 때이 옵션을 사용하지 않아야한다는 의미 입니까? --lock-all-tables
옵션 및을 사용할 때 여전히 문제가 발생하면 change master to master_log_file='', master_log_pos='', ...
원인은 무엇입니까?
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1
오류를 발생시키는 쿼리가 최소한으로 변경됩니까? 슬레이브 binlog 위치가 올바르게 설정 되었습니까?