실습
1. mysql 설치 후 master와 slave를 만들어 연동 시켜보기. (master 쓰고 slave 읽고)
master 와 slave의 방화벽을 모두 꺼준다.
mysql_secure_installation 기본설정을 해준다.master 설정
- vi /etc/my.cnf.d/mysql-server.cnf 파일 설정
마지막 줄에
server-id = 1
log-bin = mysql-bin
설정 후 systemctl restart mysqld
- 사용할 계정과 권한을 부여해준다.
- select * from mysql.user where user='slave'\G; 명령어를 사용하여 활성화 되어있는지 확인해 준다.
- 표를 하나 만들어 준다.
- back.db 파일을 만들어 준다.
- scp 명령어를 이용하여 마스터에 있는 파일을 슬레이브에게 옮겨준다.
- 마스터의 설정은 끝
slave 설정
- vi /etc/my.cnf.d/mysql-server.cnf 파일 설정
마지막 줄에
server-id = 2
설정 후 systemctl restart mysqld
- 데이터 복구해주고
- 마스터와 연결해준다.
- 서로 동기화 된것을 확인 할 수 있다.
2. 양방향 설정 (읽고쓰고 - 읽고쓰고)
- 위 작업을
master - slave
slave - master 로 작업해서 양방향으로 이루어 질 수 있도록 진행해 주었다.- 마스터에 했던 내용을 각 각 해줘야 한다.
- 데이터는 백업해서 하면 편하게 작업 할 수 있다.
3. 데이터베이스 서버 분산하기
- 양방향으로 연결되어 있는(위 설정) 데이터베이스 2개와 분산해주는 컴퓨터를 준비한다.
- haproxy 프로그램을 이용하여 서버를 분산해준다.
- yum install haproxy
vi /etc/haproxy/haproxy.cfg- option mysql-check user [mysql의 사용자 이름] 으로 해줘야하는데 haproxy는 계정에 비밀번호가 있으면 사용할 수 없기에 서버 데이터베이스에서 비밀번호가 없는 계정을 만들어줘야 한다.
- 위와 같이 분산하고자 하는 현제 데이터베이스로 사용되고 있는 서버 두개를 입력해준다. 이때 이름은 무관하다
- 서버 데이터베이스 계정에 비밀번호가 없는 계정을 만들어 줘야 한다.
mysql -u root -p
uninstall component 'file://component_validate_password'; 8.0버전
quit
systemctl restart mysqld- 패스워드 없는 사용자 생성
mysql -u root -p
CREATE USER 'remote'@'%'; 권한도 없고 패스워드도 없는 사용자가 생성됨
GRANT ALL PRIVILEGES ON . TO 'remote'@'%'; 권한을 부여해 주었다. 여기서 주의할 점은 haproxy는 비밀번호를 입력해서 접속할 수 있는 곳이아니다. '%' ip설정을 들어올 수 있는 친구들만 작업해서 입력해 줘야한다.( 실습은 전부로 허용)
- 192.168.181.130:9000/haproxy_stats 접속을 하면 데이터베이스들이 연결되어있느지를 확인할 수 있다.
- MySQL Workbench 8 에서 분산해주는 서버, 포트번호, 계정이름을 작성해주면 아래와 같이 접속이 가능하다.
- show variables LIKE '%server_id%';
명령어를 사용하여 현재 접속해 있는 서버가 2번째 인것을 확인 할 수 있다.