[서버관리] 서버 이중화 데이터베이스

이정훈·2023년 2월 13일
0

서버관리

목록 보기
2/11

  • 메인 서버가 날라가면 어찌 할 수 없으니깐 따로 저장해 놓아야 한다

실습

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번째 인것을 확인 할 수 있다.
profile
싱숭생숭늉

0개의 댓글