[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
이 글은 "온성돌"블로그에서 나왔습니다. 전재는 작가에게 연락하세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.