database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29503 게시물 읽기
No. 29503
MySQL Replication error
작성자
jayforest
작성일
2010-01-11 15:27ⓒ
2010-01-11 15:51ⓜ
조회수
7,139

안녕하세요.

MySQL Replication 설정 하여 사용중에 있습니다.

초기 설정 된후 에러로그를 보면 모두 정상이나....일정 시간이 지난후 에러로그는 남지 않지만 특정 database(1개)만 정상적으로 Replication 이 되고

나머지 database는 정상적으로 Replication 되지 않고 있습니다.

설정은 아래와 같습니다. 고수님들의 많은 조언 부탁 드립니다.

+++++++++ Master 서버 (my.cnf) ++++++++++++++++

server-id = 1
log-bin=master-bin
binlog-ignore-db=mysql
max_binlog_size=100M
 

+++++++++ Slave 서버 (my.cnf) ++++++++++++++

server-id       = 2
master-host     = 192.168.10.151
master-user     = repl
master-password = (mysqlpasswd)
replicate-ignore-db = mysql
 

show master status; ==>  Position 

show slave status \G ==> Read_Master_Log_Pos  위 두 부분은 동일 합니다.

 

 

 

이 글에 대한 댓글이 총 7건 있습니다.

show master status에서 binlog_do_db와 binlog_ignore_db 항목을 확인해보시기 바랍니다.

binlog_do_db에 누락되어 있다면 마스터 측 my.cnf에서 추가해보세요.

박현우(lqez)님이 2010-01-11 16:43에 작성한 댓글입니다.

안녕하세요.  lqea님

show master status 내용입니다.

보시는 봐야 같이 전체 databases에서 mysql database 만 제외 시켰습니다.

그리고 Slave에서도 mysql database만 replication에서 제외 시켰습니다.

Master에서 1개의 database에 대해서만 bin-log를 남기는것으로 추정 되고 있습니다.

어떻해 해야 모두 남길수 있을까요. ?

mysql> show master status \G
*************************** 1. row ***************************
            File: master-bin.000002
        Position: 4256655
    Binlog_Do_DB:
Binlog_Ignore_DB: mysql,mysql,mysql
1 row in set (0.00 sec)
 

mysql> show slave status \G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.10.151
                Master_User: repl
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: master-bin.000002
        Read_Master_Log_Pos: 4256655
             Relay_Log_File: slave2-relay-bin.000001
              Relay_Log_Pos: 4256914
      Relay_Master_Log_File: master-bin.000002
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:
        Replicate_Ignore_DB: mysql,mysql,mysql
         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: 4256655
            Relay_Log_Space: 4256914
            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: 0
1 row in set (0.00 sec)
 

 

jayforest님이 2010-01-11 16:56에 작성한 댓글입니다. Edit

일단 나머지 데이터베이스에 대해서 repl 계정의 권한과 Slave쪽의 database/table의 생성된 상태를 살펴보셔야 할 것 같습니다.

추가적으로 binlog_do_db에 명시적으로 설정하신 후에도 같은 상태인지 확인해보시는 것이 좋겠습니다.

 

 

 

박현우(lqez)님이 2010-01-11 19:04에 작성한 댓글입니다.

안녕하세요. 박현우님

repl 계정에 대한 권한은 Replication 진행하기전에 Master서버에 아래와 같이 주었습니다.

mysql>GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY '(mysqlpasswd)';
mysql>grant reload,super on *.* to repl@'%';
mysql>flush privileges;
 

Slave쪽은 Replication 진행 하기전에 Master 서버의 MySQL down 시킨후 각 database에 대해여 tar로 묵었서 Slave으로 이전 했습니다. Replication 진행 하고 초기에 모든 database는 동일한 값을 가지고 있습니다. 이후 Master서버에 변경이 진행 되면 1개의 database만 Replicatoin 되고 나머지는 되지 않네요.

그리고 아래와 같이 binlog_do_db 사용하였을경우도 동일 했습니다.

=== Master ===

binlog_do_db = db1

binlog_do_db = db2

binlog_do_db = db3

===Slave ======

replicate-do-db = db1

replicate-do-db = db2

replicate-do-db = db3

jayforest님이 2010-01-12 10:23에 작성한 댓글입니다. Edit

 

 

 

ㅈㅣ나가다가... 왠지.. TAR 로 옮기셨으면... Os 소유권한 이 root 일탠데.. 확인 해보셨겠죠?

민족님이 2010-01-12 19:12에 작성한 댓글입니다. Edit

안녕하세요.  박현우님 민족님  답변 감사드립니다.

Master서버에서 특정 database만 bin log가 남는 문제였습니다.

아래 사이트를 참고 하여 문제를 해결 하였습니다.

간단하게 설명 드리면 Master 서버의 database 변경시 쿼리식에 database_name.tables_name형식으로 쿼리를 작성하면 default database에 대해서만 bin log가 생성됩니다.  DB Connection 후 database를 select(USE database) 한후 쿼리를 작성하면 각각 database에 대한 변경값이 bin log에 남아 정상적으로 replication이 이루어지네요.

(참고로 MySQL Version 은 4.1.19 입니다. )

http://database.sarang.net/?inc=read&aid=24921&criteria=mysql&subcrit=&id=&limit=20&keyword=bin-log&page=1

5.11.2 The General Query Log

jayforest님이 2010-01-13 16:08에 작성한 댓글입니다. Edit

질문 올려주신 덕분에 저도 새로운 것을 배웠습니다. 감사합니다.

박현우(lqez)님이 2010-01-14 07:04에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29506로또 통계를 할려고 하는데요 번호별 당첨결과 횟수 ㅠㅠ1 [1]
김중일
2010-01-14
7009
29505Mysql 재시작때 auto_increment... [1]
한성무
2010-01-13
6586
29504쿼리 시간이 오래걸려요.. [1]
FIL
2010-01-11
6525
29503MySQL Replication error [7]
jayforest
2010-01-11
7139
29502mysql client를 쉘에서 수동할때..
정대원
2010-01-11
5893
29501like문에서 특수문자 escape하는 법... [1]
like문
2010-01-10
9161
29500Data 디렉토리 Tar로 넘겨도 되나요? [2]
한영호
2010-01-08
6143
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.029초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다