개발을 할 때 MySQL 데이터베이스를 동기화해야 하는데 두 시스템 모두 FreeBSD5.4이고 최신 버전인 Apache 2.0.55와 PHP 4.4.0이 설치되어 있습니다. .
1. 두 대의 서버를 설치하고 구성합니다
. MySQL을 별도로 설치하고 /usr/local/MySQL 디렉터리에 설치합니다. (설치 단계는 생략됩니다. 두 서버의 IP는 192.168.0.1 및 192.168입니다.) .0.2 각각 마스터 데이터베이스로 192.168.0.2를 사용하고 슬레이브 서버로 192.168.0.2를 사용합니다. 즉, 마스터의 데이터가 마스터의 데이터이고 슬레이브가 적극적으로 마스터로 이동합니다. 데이터를 다시 동기화하세요.
두 서버의 구성은 동일합니다. 주요 구성 파일을 복사해 보겠습니다. 기본 구성 파일은 my-large.cnf, my-medium.cnf를 포함하는 /usr/local/MySQL/share/MySQL 디렉터리에 있습니다. my -small.cnf 및 기타 작성자는 테스트 중이므로 my-medium.cnf를 사용하세요. MySQL이 설치된 후 기본 구성 파일은 데이터베이스 저장소 디렉터리에 지정됩니다. 우리는 4.1.X를 사용하므로 구성 파일은 /usr/local/MySQL/var 디렉터리에 있어야 하므로 해당 디렉터리에 구성 파일을 복사합니다.
cp /usr/local/MySQL/share/MySQL/my-medium.cnf /usr/local/MySQL/var/my.cnf
두 서버는 동일한 구성 파일 복사 작업을 수행합니다.
2. 마스터 서버를 구성합니다.
192.168.0.1을 기본 MySQL 서버(마스터)로 구성해야 합니다. 그런 다음 동기화해야 할 데이터베이스와 동기화에 사용할 사용자를 고려해야 합니다. 여기서는 동기화를 위한 루트 사용자이며 데이터베이스 abc만 동기화해야 합니다.
구성 파일을 엽니다.
vi /usr/local/MySQL/var/my.cnf
다음 정보를 찾으세요:
# 1과 2^32 사이의 고유 ID가 필요합니다. - 1# master-host가 설정되지 않은 경우 기본값은 1이지만 생략된 경우에는 마스터로 작동하지 않습니다.server-id = 1 //1은 마스터이고 2는 salve입니다.
두 줄을 추가합니다.
sql-bin-update-same //동기화 형식 binlog-do-db = abc //동기화할 데이터베이스
192.168.0.1에서 MySQL 서버를 다시 시작합니다.
/usr/local/MySQL/bin/MySQLadmin 종료 /usr/local/MySQL/bin/MySQLd_safe --user=MySQL &
3. 슬레이브 서버를 구성합니다.
슬레이브 서버는 주로 데이터를 마스터 서버로 다시 동기화하는 역할을 합니다.
vi /usr/local/MySQL/var/my.cnf
아래에서 유사한 정보를 찾으세요.
# 1과 2^32 사이의 고유 ID가 필요합니다. - 1#은 master-host가 설정되지 않은 경우 기본값은 1이지만 # 생략된 경우에는 마스터로 작동하지 않습니다.server-id = 1
위의 server-id를 2로 변경하고 일부 정보를 추가합니다.
server-id = 2 //이 MySQL은 슬레이브 서버입니다. master-host = 192.168.0.1 //마스터 서버의 IP master-user = root //마스터 서버에 접속하는 사용자 master-password = '' / /마스터 서버 접속 비밀번호 master -port = 3306 //연결 포트 master-connect-retry = 10 //재시도 횟수 reply-do-db = abc //동기화할 데이터베이스 log-slave-updates // 동기화 형태
192.168.0.2에서 MySQL 서버를 다시 시작합니다.
/usr/local/MySQL/bin/MySQLadmin 종료 /usr/local/MySQL/bin/MySQLd_safe --user=MySQL &
4. 설치를 테스트하려면
먼저 슬레이브의 호스트 로그를 확인하십시오.
cat /usr/local/MySQL/var/xxxxx_err(xxx는 호스트 이름)
위와 같은 메시지가 나오면 정상적으로 연결이 되었는지 확인해보세요.
051031 11:42:40 MySQLd 시작됨051031 11:42:41 InnoDB: 시작됨, 로그 시퀀스 번호 0 43634/usr/local/MySQL/libexec/MySQLd: 연결 준비됨. 버전: '4.1.15-log' 소켓: '/ tmp/MySQL.sock' 포트: 3306 소스 distribution051031 11:42:41 [참고] 슬레이브 SQL 스레드가 초기화됨, 로그 'FIRST'의 위치 0에서 복제 시작, 릴레이 로그 './new4-relay-bin.000001' 위치: 4051031 11:43:21 [참고] 슬레이브 I/O 스레드: 마스터 '[email protected]:3306' 에 연결됨, 위치 4의 'FIRST' 로그에서 복제가 시작됨
마스터 정보 보기
/usr/local/MySQL/bin/MySQL -u 루트
마스터 상태 보기:
MySQL> 마스터 상태 표시;
마스터에서 MySQL 프로세스 정보를 확인합니다.
MySQL> 프로세스 목록 표시;
슬레이브 정보 보기:
/usr/local/MySQL/bin/MySQL -u 루트
슬레이브 상태 보기:
MySQL> 슬레이브 상태 표시;
슬레이브에서 MySQL 프로세스 정보를 확인합니다.
MySQL> 프로세스 목록 표시;
그런 다음 마스터의 abc 라이브러리에 테이블 구조를 생성하고 데이터를 삽입한 후 슬레이브가 데이터를 동기화했는지 확인하고 설정이 성공했는지 확인할 수 있습니다.
마지막으로 관심이 있다면 더블클릭 핫 백업이나 하나의 마스터와 여러 슬레이브의 동기화 구현을 연구할 수 있습니다.