[Linux] MariaDB Database Server 2

tndkzjd·2024년 3월 18일

💡MariaDB DB 초기 보안 설정

mysql_secure_installation


현재 설정된 root 의 비밀번호 입력

root 비밀번호 변경 여부


사용자 삭제 여부


root의 원격 접속을 거부 설정 하는 유무


처음 설치하면 mysql, test 데이베이스가 존재하는데 test 데이터베이스 쓰지 않으면 삭제


적용

설정 중 잘못 입력 됐으면 Ctrl + C 빠져나온 후 다시 초기설정 하면 됩니다!

💡 데이터베이스 백업/복구

mysqldump -uroot -p --all-databases

Enter password : 1

mysqldump : 지정된 데이터베이스에 테이블의 내용을 화면에 출력

모니터에 출력되는 내용을 파일 형태로 저장하는 과정이 필요한데 리다이렉션을 통해서 구현

리다이렉션
출력의 방향을 바꿔주는 기술
리눅스의 표준 출력장치 stdOut는 모니터
기호는 <<, <, >, >>


echo : 문자열이나 변수의 값을 출력


touch : 비어 있는 파일 만드는 명령어
touch 파일명

test.txt 파일 내용에 아무것도 없어서 내용이 나오지 않는다


1을 출력하지 않고, test.txt 방향 바꿔서 보낸다는 뜻


1이 출력되는 걸 볼 수 있다


1이 사라지고 2가 출력

'>' 와 '>>' 의 차이점

모니터로 출력하지 않고 파일로 출력하는 리다이렉트 기호

'>' 는 기존 파일 내용을 없애고 파일에 입력
'>>' 는 기존 파일 내용을 유지하고 새로 추가

화면에 모든 데이터베이스 내용이 출력되지 않지만 리다이렉션에 의해서 파일에 내용이 저장 된다

특정 데이터베이스만 백업을 하려고 할 때

특정 데이터베이스에 특정 테이블 하나만 백업하려고 할 때

💡데이터베이스 복구

복구 시에는 '<' 리다이렉션 기호 사용

customer 테이블 조회

customer 테이블 특정 id 삭제


특정 id 사라져서 비어있다고 나타난다

customer 테이블 bakcup.sql 파일을 사용해서 customer 테이블의 복구를 실습

다시 select 문 사용해서 조회하면 복구된 걸 볼 수있다

💡MariaDB 데이터베이스 서버의 이중화

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

Master 로 설정된 데이터베이스에서 데이터베이스 테이블을 생성하면
Slave 데이터베이스에 자동으로 생성이 된다

두 대의 리눅스 머신이 필요해서 기존에 사용하던 WebServer 를 Slave로 동작하고 DB를 Master로 동작!

WebServer

yum install -y mariadb mariadb-server

1에서 클라이언트 패키지인 mariadb는 설치했었기 때문에 mariadb-server만 설치

이중화 설정 전 Slave 로 사용할 머신 WebServer에도 DB 설정을 해줘야 한다

cp /usr/share/mysql/my-small.cnf /etc/my.cnf

cp: overwrite '/etc/my.cnf'? y

vi /etc/my.cnf

22번 라인 : default-character-set = utf8

30번 라인 : skip-name-resolve
31번 라인 : character-set-server = utf8

48번 라인 : Slave DB로 구분하기 위해 2로 변경


51번 라인 : log-bin=mysql-bin 주석 # 지우기

54번 라인 : binlog_format=mixed 주석(#) 해제(지우기!)
55번 라인: max_binlog_size = 1000M
56번 라인: expire_logs_days = 14

Esc -> :wq

systemctl restart mariadb

mysql -uroot mysql

update user set password=password('1') where user='root';

flush privileges;

exit

mysql -uroot -p

create database SlaveDB;

show databases;

DB

mysql -uroot -p

grant replication slave on . to slaveroot@WebServer IP 주소 identified by '1234';

. : 모든 데이터베이스를 의미

flush privileges;

exit

vi /etc/my.cnf


51번 라인 : log-bin=mysql-bin 주석 해제
54번 라인 : binlog_format=mixed 주석 해제

55번 라인 : max_binlog_size = 1000M
56번 라인 : expire_logs_days = 14

Esc -> :wq

systemctl restart mariadb

Master 에서 log_file 과 Position 확인하고 Slave 에 동기화 시켜줘야 한다

mysql -uroot -p

show master status;


테이블 구조로 Master 상태를 보여주는데
이 때, File과 Position 정보를 기억 해야 한다.

log_File은 MariaDB를 시작할 때마다 파일명이 변경되고,
Position은 SQL 쿼리를 처리하면 변경이 됨.


줄 형태로 표현 된다

WebServer

mysql -uroot -p

chang master to master_host='DB IP주소',
master_user='slaveroot',
master_password='1234',
master_port=3306,
master_log_file='Master 서버의 log_file 값',
master_log_pos=Master 서버의 Position 값;

flush privileges;

show slave status\G;


YES가 되어있어야 되는데 No..
구성되지 않을 때 조치사항

Slave 인 WebServer 서버에서

stop slave;

방향키 ↑ 다시 change 로 시작하는 구문 실행 한 다음

flush privileges;

start slave;

show slave status\G;


YES 로 바뀐걸 볼 수 있다!

profile

0개의 댓글