ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Linux - DB 2중화
    스마트팩토리 개발자 교육(23.05.08 ~ 23.10.27)7/Linux 2023. 5. 31. 16:01

    *2중화

    - master와 slave로 나눈다
    - 마스터의 정보를 slave에 넣은후 동기화 한다

    - master : CRUD시 log 통해 Slave 서버 복제가 된다

    - 백업용으로 사용한다

    - master 는 쓰기용 Slave는 읽기용으로 만든다

    - 이로인해 데이터 부하가 줄어든다

     

    *방법

    1. DB 이중화
      (1) 네트워크 설정

      (2) 방화벽 설정
    setenforce 0
    systemctl stop firewalld

      (3) MySQL 설치
    yum install -y mysql-server
    systemctl restart mysqld

    mysql_secure_installation
    No
    패스워드 설정
    패스워드 한 번 더
    y
    y
    y
    y

      (5) Master 설정  (MySQL1)
        1) 파일 설정
    vi /etc/my.cnf  파일 맨 밑에 다음 추가
    [mysqld]
    server-id = 1 // 순서를 통해 db를 구분한다
    log-bin = mysql-bin // 로그를 저장하여 데이터가 복사되도록 한다

    systemctl restart mysqld

        2) Master 상태 확인
    mysql -u root -p 로그인 후
    show master status;

        3) Replication할 때 사용할 계정 생성
    CREATE USER 'slave'@'%' IDENTIFIED BY 'qwer1234';
    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';

    select * from mysql.user where user='slave'\G    // \G 정돈되게 출력된다
    Repl_slave_priv 속성이 Y로 되어있는지 확인

        4) 현재 데이터 백업
    FLUSH TABLES WITH READ LOCK; // 데이터가 더이상 저장되지 않게 하기 위해 lock
    quit

    mysqldump -u root -p --all-databases > dump.db dump.db 파일을 Slave로 옮긴다.

    복사의 3가지 방법
    scp  dump.db  100.100.100.130:/root/dump.db
    // lvm
    // 단순 복사

    mysql -u root -p
    UNLOCK TABLES;

      (6) Slave 설정  (MySQL2)
        1) 파일 설정
    vi /etc/my.cnf
    [mysqld]
    server-id = 2
    // 동기화를 통해 복사가 되니 따로 로그를 저장하지 않는다

    systemctl restart mysqld

        2) 데이터 복구
    mysql -u root -p < dump.db

    mysql -u root -p 로 로그인

        3) Master 지정 - 동기화 설정

    change master to
    master_host='100.100.100.30',
    master_user='slave',
    master_password='qwer1234',
    master_log_file='mysql-bin.000001',
    master_log_pos=1542;

        4) 동기화 시작
    start slave;

        5) Slave 상태 확인
    show slave status\G

    2. 동기화 확인
    마스터에서 INSERT문을 실행

    3. 동기화 안될 때
      (2) 슬레이브
    stop slave;

      (1) 마스터
    mysqldump로 백업

      (2) 슬레이브
    마스터에서 백업한 파일 가져오고 복구

      (1) 마스터
    마스터 상태 확인

      (2) 슬레이브
    change master to
    master_host='100.100.100.30',
    master_user='slave',
    master_password='qwer1234',
    master_log_file='mysql-bin.[마스터의 로그 번호]',
    master_log_pos=[마스터의 포지션 번호];

    start slave;

    '스마트팩토리 개발자 교육(23.05.08 ~ 23.10.27)7 > Linux' 카테고리의 다른 글

    Linux - 3계층 아키텍처  (0) 2023.05.31
    Linux - 톰캣 이중화  (0) 2023.05.31
    Linux - httpd, haproxy, 부하분산  (0) 2023.05.31
    Linux - Log  (0) 2023.05.26
    Linux - DNS  (0) 2023.05.26

    댓글

Designed by Tistory.