[22.12.30] 49일차 [클라우드] 마리아DB 백업하기, 이중화 작업

W·2022년 12월 30일
0

국비

목록 보기
72/119

마리아 DB 백업

]# systemctl status mariadb

]# mysql -u root -p
Enter password:111

MariaDB [(none)]> show databases;

MariaDB [(none)]> use shopping_db;
Database changed

MariaDB [shopping_db]> show tables;

MariaDB [shopping_db]> select * from customer;

테이블 내용 확인

MariaDB [shopping_db]> exit
Bye
마리아DB에서 리눅스 셸로 이동

[root@localhost ~]# mysqldump --all-databases
mysqldump: Got error: 1045: "Access denied for user 'root'@'localhost' (using password: NO)" when trying to connect
-> root 패스워드 설정 시 패스워드를 입력해줘야 함

[root@localhost ~]# myqldump -uroot -p --all-databases
Enter password: 111
모니터(화면)에 마리아DB와 관련된 내용이 출력

mysqldump 명령어는 기본출력장치인 모니터에 마리아DB 관련 내용을 출력하는 명령어이다.

stdln
stdOut
stdErr

리다이렉트(redirect) 기능

  • 출력의 방향을 바꿔주는 기능
  • 기본적으로 입력에 대한 출력은 기본 출력 장치인 모니터로 출력이 됨.
  • 모니터에 보여질 내용을 파일에 저장하고 싶을 때 리다이렉트 기능을 사용.
  • 종류 : <, >, <<, >>
  • echo (출력 명령어)

]# echo 1 > hello.txt
=> 명령을 입력하면 모니터에 1이 출력되지 않음

'>'는 왼쪽 내용이 오른쪽 파일에 저장됨

]# ls


]# cat hello.txt
hello.txt의 내용을 보여줌

]# echo Hello World! > hello.txt
- Hello World!가 출력됨!
- 리다이렉트('>')를 사용하면 기존에 있는 내용이 사라지고, 새로운 내용으로 대체!!

]# echo 1 >> hello.txt
- 기본에 있던 내용을 두고, 맨 아래 줄에 추가됨

DB 전체 백업

]# mysqldump -u root -p --all-databases > MariaDB_All_Backup.sql
Enter password:111

DB 부분 백업

]# mysqldump -uroot -p shopping_db > shopping_db_Backup.sql
Enter password:111

테이블 백업

]# mysqldump -uroot -p shopping_db customer > customer_TB_Backup.sql
Enter password:111

마리아 DB 복구

  • 리다이렉트 기호중 '<' 기호 사용하면 오른쪽 파일의 내용을 왼쪽으로 이동 가능!!

mysql -uroot -p [복구할 데이터베이스명] < 백업파일(파일명.sql)

새 레코드 입력 후
MariaDB [shopping_db]> exit - 나가기

  • 복구
    ]# mysql -uroot -p shopping_db < customer_TB_Backup.sql
    Enter password:111

  • 복구 확인을 위해 마리아 DB 다시 접속
    이전 내용으로 DB 복구 됨

마리아 DB 서버 이중화

서버의 이중화란 하나의 데이터베이스 서버와 똑같은 내용을 가진 데이터베이스 서버를 운용하는 것을 말함.

  • Master, Slave 개념 사용
    [Slave] Web 가상머신
    [Master] DB 가상머신

[Slave VM] Web 가상머신에서 시작

]# yum -y install mariadb mariadb-server
서버의 이중화를 위해 Slave 머신도 마리아 DB서버 설치

]# cp /usr/share/mysql/my-small.cnf /etc/my.cnf
cp: overwrite '/etc/my.cnf'? y

]# vi /etc/my.cnf
:set nu
- 22번 라인 추가
default-character-set = utf8 입력
- 30번 라인 추가 (29번 라인에서 enter)
skip-name-resolve 입력
- 31번 추가 (30번 라인에서 enter)
character-set-server = utf8 입력
- 48번 수정(1->2로)
server-id = 2
- 51번 54번 주석 해제
log-bin=mysql-bin
binlog_format=mixed
- 55번 추가
max_binlog_size=1000M
- 56번 추가
expire_logs_days=14

:wq

]# systemctl restart mariadb

]# systemctl stop firewalld 실습 위해 잠시 방화벽 끄기

MariaDB 초기 보안설정 시행하기

https://velog.io/@tlqdnwls/22.12.22-43일차-클라우드
참조 비밀번호 111 설정하기

  • 마리아 DB 접속

[Master DB]

]# vi /etc/my.cnf
:set nu
- 51번 54번 라인 주석 해제
- 55번라인
max_binlog_size=1000M
- 56번 라인
expire_logs_days=14

:wq
]# systemctl restart mariadb
]# systemctl stop firewalld

[Master, Slave]

]# setenforce 0

[Master]

  • 마리아 DB 접속

MariaDB [(none)]> grant replication slave on *.* to slaveroot@slaveIP주소 identified by '1234';
MariaDB [(none)]> flush privileges;

DB 이중화를 위해서는 마스터의 포지션 넘버 확인 중요!!

MariaDB [(none)]> show master status;

position 번호 확인!! 472
File : mysql-bin.000003

=> 쿼리를 작성하면 포지션 번호가 변경됨

[Slave]

  • 마리아 DB 접속
    MariaDB [(none)]> change master to master_host='192.168.1.111',
    -> master_user='slaveroot',
    -> master_password='1234',
    -> master_port=3306,
    -> master_log_file='mysql-bin.000003',
    -> master_log_pos=472;

MariaDB [(none)]> flush previleges;
MariaDB [(none)]> show slave status\G;

Slave_IO_Running: No -> yes로 변경해야 됨
Slave_SQL_Running: No -> yes로 변경해야 됨

이중화 동작 실패

[Slave]

Stop slave

[Master]

MariaDB [(none)]> show master status\G;

position이 563으로 변경됨

[Slave]

방향키를 위로 올려서 'change.... 되어있는 명령어 찾음
변경된 포지션 번호로 다시 설정

MariaDB [(none)]> change master to master_host='192.168.1.111', master_user='slaveroot', master_password='1234', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=563;

MariaDB [(none)]> start slave;

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> show slave status\G;

[Master]

MariaDB [(none)]> create database MasterDB2;
- Master에 MasterDB2 생성

[Slave]


slave 쪽에도 MasterDB2 생성됨. (이중화 성공!)

0개의 댓글