[Linux] Mysql 마스터, 슬레이브/슬레이브, 슬레이브 양방향 동기화

튜토리얼 목적: Linux에서 Mysql 주, 양방향 동기화
도구 사용: Putty, SecureCRT 등 원격 도구
해당 시스템: Linux 시리즈 시스템
절차:
1. 두 대의 데이터베이스 서버 호스트가 설치되어 서로 접근할 수 있다(MySQL의 버전에 따라 (이진 로그)binlog 형식이 다를 수 있기 때문에 가장 좋은 조합은 마스터의 MySQL 버전과 슬레이브 버전이 같거나 마스터의 버전이 슬레이브 버전보다 높을 수 없다는 것이다.)
예를 들면 다음과 같습니다.
Master: DaoBiDaoA (10.135.28.112)
Slave: DaoBiDaoB (10.132.21.19)
2. 마스터 서버 설정
Mysql 프로필 my.cnf(일반적으로/etc/my.cnf에 저장)에서 서버-id 편집을 찾습니다.
1
2
3 server-id        = 1 binlog-do-db     = daobidao binlog-ignore-db = mysql
그중:server-id는 데이터베이스 서비스 번호를 설정하고binlog-do-db는 2진 로그를 기록해야 하는 데이터베이스(여러 개의 데이터베이스에서 2진 로그를 기록해야 한다면 이 정보를 추가합니다),binlog-ignore-db는 2진 로그를 기록할 필요가 없는 데이터베이스입니다.
주의: log-bin 바이너리 로그 파일을 열어야 합니다
1 log-bin=mysql-bin
Mysql 서비스 시작, 동기화 데이터베이스 서비스 사용자 정보 추가
1
2
3
4
5
6
7
8
9
10
11
12
13 mysql> CREATE USER 'daobidao'@'10.132.21.19' IDENTIFIED BY 'daobidao'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL ON daobidao.* TO 'daobidao'@'10.132.21.19'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES ; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id:    53 Current database: *** NONE *** Query OK, 0 rows affected (0.00 sec)
그중: 명령: CREATE USER'username'@'host'IDENTIFIED BY'password',는 사용자를 만드는 것입니다.예를 들어 명령: CREATE USER'daobidao'@'10.132.21.19'IDENTIFIED BY'daobidao';사용자daobidao를 만들고 로그인을 허용하는 ip주소를 10.132.21.19(이 ip주소는Slave의 ip주소)로 지정하고 비밀번호는daobidao입니다.GRANT ALL ON daobidao.* TO 'daobidao'@'10.132.21.19'; 이 명령은daobidao 사용자에게 데이터베이스daobidao에 대한 모든 권한을 부여하는 것입니다.
3. Slave 서버 my를 구성합니다.cnf
1
2
3
4
5
6
7
8
9
10 server-id        = 2 binlog-do-db     = daobidao binlog-ignore-db = mysql master-host      = 10.135.28.112 master-user      = daobidao master-password  = daobidao master-port      = 3306 replicate-ignore-db = mysql   replicate-do-db = daobidao
그 중에서 마스터-host = 10.135.28.112는 마스터의 서버 주소를 설정하고, 마스터-user = daobidao는 사용자 이름으로 동기화하고, 마스터-password = daobidao는 사용자 비밀번호를 동기화하며, 마스터-port = 3306 마스터의 포트, Replicate-ignore-db = mysql은 동기화되지 않는 데이터베이스를 지정하고, Replicate-do-db = daobidao는 동기화되는 데이터베이스를 지정한다.여러 데이터베이스를 동기화해야 한다면 이 정보를 여러 개 쓰십시오.
4. 마스터의 데이터베이스 정보 보기
mysql> show master status;
1
2
3
4
5
6
7
8
9
10 No connection. Trying to reconnect... Connection id:    1 Current database: *** NONE *** +------------------+----------+--------------+------------------+ | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000007 |     6520 | daobidao     | mysql            | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
여기서 는 File 및 Position에 대한 레코드 정보입니다.
5. Slave 설정 동기화(이 단계가 완료되면 Slave 동기화 마스터 데이터베이스가 구현됨)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 mysql> slave stop; Query OK, 0 rows affected (0.00 sec) mysql> change master to master_host='10.135.28.112',  master_user='daobidao', master_password='daobidao', master_log_file='mysql-bin.000007', master_log_pos=6520;
ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id:    43 Current database: *** NONE *** Query OK, 0 rows affected (0.14 sec) mysql> slave start; Query OK, 0 rows affected (0.00 sec) mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting to reconnect after a failed master event read
Master_Host: 10.135.28.112
Master_User: daobidao
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 6520
Relay_Log_File: AY130424102832Z-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: No
Slave_SQL_Running: Yes
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: 6520
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)
SlaveIO_Running: Yes  Slave_SQL_Running: Yes가 모두 yes라면 동기화가 되어 있음을 의미합니다.
계속해서 텍스트 보기:http://iblog.daobidao.com/linux-mysql-master-and-slave-sync-master-two-way-synchronization-from.DaoBiDao
이 글은 "온성돌"블로그에서 나왔습니다. 전재는 작가에게 연락하세요!

좋은 웹페이지 즐겨찾기