간단하게 Docker compose를 활용한 구축 방법에 대해 알아보도록 하겠습니다. 💿
해당 Repository 에서 항목들을 모두 로컬로 가져온 다음에,
docker-compose up -d
를 해주시면 정상적으로 booting이 됩니다!!
모든 부팅 작업이 끝나면, master-slave
간의 연결작업이 필요한데요.
docker network ls
NETWORK ID NAME DRIVER SCOPE
a6260b4d5998 bridge bridge local
f5c621aee97f host host local
f997b87515bb mysql_net-mysql bridge local
ae7e075418cd none null local
mysql bridge 에 해당하는 network 에 대해서 inspect 하는 과정을 거쳐서,
master의 internal ip를 알아와야 합니다.!!
docker inspect f997b87515bb | jq
[
{
"Name": "mysql_net-mysql",
"Containers": {
"913e258e271eca08249611c813b7efd84756ac1d4b3c5254c42e9dbfcab8e9d3": {
"Name": "mysql_db-master_1",
"EndpointID": "7951e87e0ab78728a8db387c180375e19b0aa8136593fbe7793ce932350de162",
"MacAddress": "02:42:ac:16:00:03",
"IPv4Address": "172.22.0.3/16", // 이 정보 기억하기
"IPv6Address": ""
},
"c64a8e5ec49e748f899c1b2158ea19a4ae527e0cc8422a4d854501e65d253c74": {
"Name": "mysql_db-slave_1",
"EndpointID": "c1608ce02b2e834721b2902257e7e7a65fc5bfce75f4fb447df702f905ccf300",
"MacAddress": "02:42:ac:16:00:02",
"IPv4Address": "172.22.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {
"com.docker.compose.network": "net-mysql",
"com.docker.compose.project": "mysql",
"com.docker.compose.version": "1.29.0"
}
}
]
master의 ip주소를 알아옵니다
자 그러면 모든 준비는 끝났습니다.
slave mysql 에 들어가봅니다!
docker exec -it mysql_db-slave_1 bash
mysql -u root -p
이제 master를 향해서 연결해야 되는데요
CHANGE MASTER TO MASTER_HOST='172.22.0.3', MASTER_USER='root', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000013', MASTER_LOG_POS=0, GET_MASTER_PUBLIC_KEY=1;
start slave;
show slave status\G;
위와 같이 연결 해주고 상태값을 보게 되면.!!
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.22.0.3
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000013
Read_Master_Log_Pos: 350
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 565
Relay_Master_Log_File: mysql-bin.000013
Slave_IO_Running: Yes // Yes 가 나오면 성공
Slave_SQL_Running: Yes // Yes 가 나오면 성공
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Slave_IO 와 Slave_SQL 이 정상적으로 모두 활성화되면 성공입니다!!
정상적으로 모든 설정이 끝났으니 slave에서 반영이 되나 한번 봐야겠죠.?
docker exec -it mysql_db-master_1 bash
mysql -u root -p
create database test_db;
마스터에서 데이터베이스를 생성하고, slave에 들어가서 확인하면?
docker exec -it mysql_db-slave_1 bash
mysql -u root -p
show databases;
정상적으로 뜬 것이 확인되면 모든 설정은 끝났습니다! 😄