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 27847 게시물 읽기
No. 27847
두대의 서버를 미러링 중인데요..
작성자
이성식(jamesdean017)
작성일
2008-11-04 09:24
조회수
4,337

현재 두대의 서버를 미러링을 하고 있는데요.. 궁금한게 있어서 여쭤봅니다..


보통 mysql 을 innodb 버전이 아니면 백업을 할때 data 디렉토리 안의 데이터베이스 파일들을 압축하여 백업을 하지 않습니까?


이런 노말백업을 하고 복구를 할경우 어떻게 해야 하는지요..


예를 들어 A 서버( master ) 와 B 서버( slave ) 가 있는데 A서버의 test 라는 데이터 베이스를 어제 백업 받은 데이터로 교체를 할때


어떻게 해야 하는지를 알고 싶습니다.


보통 미러링 상태가 되면 마스터 서버의 모든 업데이트 쿼리를 슬레이브로 전송하는데.. 쿼리가 아닌 복구시의 파일 바꿔치기는


mysql 프로세스가 인식을 못하더군요..


강제로 인식을 시켜줄수 있는 방법이 있나 해서 여쭤봅니다..

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

안녕하세요 ^^

Replication 사용 중 복원 관련 문제인듯한데요 

사전에 아셔야할것들이 있습니다. 

1. mysql Replication은 Master의 Binlog 파일의 트랜젝션 로그를 이용하여 Slave에 반영합니다. 

2. File Backup 방식은 동일한 버전의 mysql에는 파일 이동을 통해 바로 인식이 가능합니다. 
  (단, 메모리에 table이 올라가있는경우 복구 대상 Table을 Drop한 후 복원해야합니다.)

3. Binlog의 Pos 단위는 File Size를 참조하여 표기합니다. 


이렇게 되어있구요 말씀하신 백업본을 교체할때에는 우선 관련 테이블의 Replicate를 종료하시구
(종료방법은 Slave DB에서 slave stop 명령을 통해 가능합니다.)

Master에서 대상 Table(백업 Table)를 Drop 후 Master 복원을 진행합니다.

그리고 동일한 Table을 Slave에 옮기시고 Slave Start를 이용하여 복원할 수 있습니다. 

이 외에도 Slave의 강제 Binlog지정과 pos 변경 명령이 있지만, 추천드리고 싶지 않습니다. 
또한, Table을 비교하여 동일한 테이블로 만든후 Replication을 진행하는 방법도 있습니다. 
후자의 방법은 검색을 통해서 습득하시면 좋을 듯하네요 ^^


그럼 안되는게 있으시면 댓글로 ^^*

박성원(darkancia)님이 2008-11-06 11:25에 작성한 댓글입니다.

답변 감사드립니다..

일단 테스트를 좀 해보면서 습득을 해야겠네요..

그냥 무작정 파일 지우고 했더니 엉망이 되었네요.. 

아 그리고 한가지 더 여쭤볼께요..

미러링이 완성된 서버로의 mysql 커넥션은 어떻게 하고 계시는지요??

저 같은 경우 mysql 전용 DB 클래스가 있어서 처음에는

클래스로 쿼리가 들어올 경우 select 로 시작하냐 안하냐로 마스터 , 슬레이브를

구분했더니 select last_insert_id() 가 먹통이 되더군요..

그래서 동일하게 클래스를 복사하여 select 일때는 슬레이브 커넥션 클래스를

나머지 쿼리 일때는 마스터 커넥션 클래스를 사용하는데

뭔가 좋은 방법이 없을까 해서요..

나중에 서버가 또 추가가 된다면 이 노가다를 또 해야 할거 같아서요..

이성식(jamesdean017)님이 2008-11-07 11:27에 작성한 댓글입니다.
이 댓글은 2008-11-07 11:32에 마지막으로 수정되었습니다.

오늘은 간만에 주말에 회사에 있습니다. ^^

금욜날 세미나겸 MT(ㅡ_-;;)를 갔다왔는데말이죵.. 춥더군요 orz


각설하고 말씀 드릴께요... 사실 전 DBA라 Server 나 Web의 프로그램 방법론은 잘 모릅니다. 

스케줄러나 기타 다른 운영툴 제작에 참여를 해서 봐왔던 부분은...

간단하게 connection을 맺는 별도의 파일을 제작하여 그걸 불러와서 사용하죠..

보통 cursor를 여러개 생성하여 분류에 따라 분할하여 보냅니다. 

방법론적 문제인데요..

1. mysql connection (DB 설정파일이라 칭합니다. - my.cnf가 아니죠 ^^;;)

2. 설정파일을 불러와서 실행시 구분하여 지정해줍니다. 


이렇게 하면 ip가 바뀌어도 설정파일만 수정해 주면 되니 편하지요..그리고 Query를 분석하는 별도의 
구문도 필요없게 됩니다. 도움이 되셨으면 하네요

박성원(darkancia)님이 2008-11-09 16:59에 작성한 댓글입니다.
이 댓글은 2008-11-09 16:59에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
27850MYI가 삭제된경우 복구는? [1]
정경진
2008-11-04
3803
27849쿼리문좀 도와주세용 ^^;; [1]
개굴개굴
2008-11-04
4445
27848쿼리문 도와 주세요. [1]
박주영
2008-11-04
3743
27847두대의 서버를 미러링 중인데요.. [3]
이성식
2008-11-04
4337
27845ERwin 사용하기
이알윈
2008-10-30
4695
27844MsSql 에서 MySql(utf8) 로 컨버팅 문제 [1]
김성철
2008-10-29
5008
27843그림화일이 특정피시에서 안보이는경우? [3]
이청하
2008-10-29
4470
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다