데이터베이스/mysql
[mysql8.0.29]Centos7.4 mysql 8 replication 설정
peryh
2022. 7. 14. 10:58
728x90
준비물
OS 2대(각각 mysql 설치 필요)
설치 방법 : https://peryh.tistory.com/63
구성도
각 OS를 편의상 master(192.168.8.74), slave(192.168.8.75)로 통칭
설치 방법
켜진 DB 종료(master/slave 둘다 작업)
dbshutdown 혹은 alias 설정 없을 시 /mysql_engine/mysql/bin/mysqladmin shutdown -u root -p ps -ef | grep mysql |
동일한 /etc/my.cnf 설정 변경(실제 파일에 적용 시, #로 되어있는 주석은 모두 삭제 후 적용)
vi /etc/my.cnf
[master]
[client]
port=3306
socket=/mysql_data/mysql.sock
[mysqld]
user=mysql
authentication_policy=mysql_native_password
datadir=/mysql_data/data
port=3306
socket=/mysql_data/mysql.sock
pid-file=/mysql_data/mysqld.pid
server-id=1
log_error=/mysql_dump/error/mysql.err
log_bin=/mysql_dump/binlog/mysql-bin
relay-log=/mysql_dump/relaylog/relay-log
relay-log-index=/mysql_dump/relaylog/relay-log.index
relay_log_purge=0
sync_binlog=1
binlog_cache_size=1M
max_binlog_size=1G
binlog_expire_logs_seconds=86400
# Character set Config
character-set-client-handshake=FALSE
character-set-server=utf8mb4
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
|
[slave]
[client]
port=3306
socket=/mysql_data/mysql.sock
[mysqld]
user=mysql
authentication_policy=mysql_native_password
datadir=/mysql_data/data
port=3306
socket=/mysql_data/mysql.sock
pid-file=/mysql_data/mysqld.pid
server-id=2 ## 서버id는 고유값이므로 master와 달라야 함
log_error=/mysql_dump/error/mysql.err
log_bin=/mysql_dump/binlog/mysql-bin
relay-log=/mysql_dump/relaylog/relay-log
relay-log-index=/mysql_dump/relaylog/relay-log.index
relay_log_purge=0
read_only ## slave에서 읽기만 가능하게 하는 설정
# Character set Config
character-set-client-handshake=FALSE
character-set-server=utf8mb4
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
|
변경 후 재기동(master/slave 둘다 작업)
dbstartup 혹은 /mysql_engine/mysql/bin/mysqld_safe --user=mysql & ps -ef | grep mysql |
에러 없는지 확인(master/slave 둘다 작업)
tail -10 /mysql_dump/error/mysql.err |
mysql DB 접속 및 repl 계정 생성(master/slave 둘다 작업)
mysql -u root -p
password1! create user 'repl'@'%' identified with mysql_native_password by 'Password1!'; grant all privileges on *.* to 'repl'@'%';
flush privileges;
select user, host from mysql.user;
|
master reset 및 정보 확인(master에서 수행)
show master status\G; reset master; show master status\G; |
slave 정보 reset(slave에서 수행)
reset master;
stop slave;
reset slave;
|
master 정보 기입(slave에서 수행, relaylog 디렉터리 생성 안한 경우 에러 발생, 참고한 설치글에는 미리 생성함)
CHANGE MASTER TO
MASTER_HOST='192.168.8.74',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='Password1!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=157;
|
slave에 디렉터리 생성 및 권한 변경(slave에서 수행)
\! mkdir -p /mysql_dump/relaylog \! chmod -R 770 /mysql_dump \! ls -l /mysql_dump |
다시 수행(slave에서 수행)
CHANGE MASTER TO
MASTER_HOST='192.168.8.74',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='Password1!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=157;
|
replication 수행 및 확인(slave에서 수행, 초록색 Yes 두개가 보여야 정상)
start replica; show slave status\G; |
확인(master에서 수행)
show slave hosts\G; |
테스트(master에서 수행)
show databases; create database test; show databases; |
테스트 확인(slave에서 수행)
show databases; |
생성한 Database 삭제(master에서 수행)
drop database test; show databases; |
테스트 확인(slave에서 수행)
show databases; |