RDBS (Relational Database)

SunChan Kwon·2024년 6월 10일
0

Linux

목록 보기
18/20

package

$ dnf install -y mariadb-server

$ systemctl enable --now mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.      
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

$ ls /var/lib/mysql/
aria_log.00000001  ibdata1      multi-master.info  mysql_upgrade_info
aria_log_control   ib_logfile0  mysql              performance_schema
ib_buffer_pool     ibtmp1       mysql.sock

firewall

$ firewall-cmd --add-service=mysql

DB 설정

#  간단한 보안설정을 대화형으로 진행
$ mysql_secure_installation 

# 엔터 입력 시 루트 패스워드 재설정
Enter current password for root (enter for none): <ENTER>

Switch to unix_socket authentication [Y/n] Y

# root password 재지정
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!

# 익명 유저 제거
Remove anonymous users? [Y/n] Y

# root 계정에 원격 접속 차단할것인지
Disallow root login remotely? [Y/n] Y

# test db를 지울 것인지
Remove test database and access to it? [Y/n] Y

# 변경 사항으로 권한 테이블 업데이트
Reload privilege tables now? [Y/n] y

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

MariaDB 설정 파일

/etc/my.cnf.d/mariadb-server.cnf

[mysqld]

  • mariaDB 서버 관련 설정

[mysqld_safe]

  • 에러 발생 시 서버 재시작이나 에러 기록하는 파일 설정

접근 설정

설정 파일의 [mysqld] 아래에 설정

외부 접근 차단

skip-networking = 1

특정 호스트에서만 접근 허용

bind-address = [ip]

데이터 베이스 관리

DML(Data Manipulation Language)

Select

  • SELECT [column] FROM [DB.TABLE][WHERE condition];
    • SELECT username FROM test-db.test-table WHERE condition;

Insert

  • INSERT INTO [DB.TABLE][column] VALUES [value];
    • INSERT INTI test-db.test-table (id,username) VALUES (value);

Update

  • UPDATE [DB.TABLE] SET 수정 값 [WHERE condition];

Delete

  • DELETE FROM [DB.TABLE] WHERE condition;

DDL (Data Definition Language)

Create

  • CREATE [user | database | table]

Alter

  • ALTER TABLE test-tab [ADD | DROP]
    Drop
  • DROP TABLE test-table;

DCL (Data Control Language)

Grant

  • GRANT SELECT ON [DB.TABLE] TO USER;

Revoke

  • REVOKE SELECT ON [DB.TABLE] TO USER;

Commit
Roleback

DB Backup / Restore

물리적 백업

데이터 베이스가 저장된 파일과 서정파일 자체를 백업

  • 파일 자체를 백업하여 속도가 빠름
  • os, db 버전, 하드웨어 사양 등에 민감하여 불일치 시 백업이 정상적으로 진행되지 않는다.

논리적 백업

mysqldump 명령으로 db에 저장된 데이터를 논리적 파일로 변환하여 백업하는 방식

  • 복원 시 파일 형태의 파일을 사용해 복원
  • db의 설정까지 복원할 수 없고, 저장된 데이터에 따라 백업 및 복원시간이 오래걸림
# 논리적 백업 파일을 /root 디렉토리에 저장
$ mysqldump -u root -p sckwon > /root/sckwon.dump
Enter password: 

$ ls
sckwon.dump

$ file sckwon.dump 
sckwon.dump: ASCII text

$ cat sckwon.dump | head
-- MariaDB dump 10.19  Distrib 10.5.22-MariaDB, for Linux (x86_64)
--
-- Host: localhost    Database: sckwon
-- ------------------------------------------------------
-- Server version       10.5.22-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

복원

mysql -u user-name -p database-name < file-path

이중화 작업

primary

$ dnf install mariadb-server
$ systemctl enable --now mariadb
$ mysql_secure_installation 

$ vi /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
autocommit=0
server-id=100
log-bin=mysql-bin

$ systemctl restart mariadb.service 

$ mysql -u root -p

> create user rep_user@'%' IDENTIFIED BY '1234';

> select user,host FROM mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| rep_user    | %         |

> grant replication slave ON *.* TO rep_user@'%';

> SHOW master status;

$ firewall-cmd --add-service=mysql

$ mysqldump --all-databases -u root -p > rep.dump

$ ls
rep.dump

$ scp rep.dump vagrant@192.168.10.20:/tmp
rep.dump         100% 2038KB 100.4MB/s   00:00 
  • master status

secondary

$ dnf install mariadb-server
$ systemctl enable --now mariadb
$ mysql_secure_installation 

$ vi /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
autocommit=0
server-id=101
log-bin=mysql-bin
read-only=0

$ systemctl restart mariadb.service 

$ mysql -u root -p < /tmp/rep.dump

$ mysql -u root -p

> CHANGE MASTER TO master_host='192.168.10.10',master_user='rep_user',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=641;

> START SLAVE;

0개의 댓글