본문 바로가기

개발/Database

(20)
MySQL DB 데이터 삭제 시 데이터 복구 MySQL DB 작업 과정에서 데이터가 삭제되었을 경우 다음 과정을 통해 복구할 수 있다. 1. cd /var/lib/mysql 폴더(MySQL이 설치되어 있는 폴더)로 이동. 2. MySQL 바이너리 로그 파일 binlog에서 mysqlbinlog를 사용하여 쿼리 추출. - mysqlbinlog 명령줄 도구를 이용한 추출 시 기본적으로 바이너리 파일로 추출되므로, base64 방식으로 decode 하여 추출. mysqlbinlog -v --base64-output=DECODE-ROWS binlog.001541 > rescue.sql 3. 쿼리 내에서 데이터 삭제 영역 확인. - DECODE 된 데이터에서 삭제 시점의 DELETE 가 적용된 데이터를 확인한다. 4. 해당 데이터를 활용하여 데이터를 복구한다.
MySQL sysbench 부하테스트 sysbench 를 사용하여 MySQL 부하테스트를 진행한다. 오픈소스로 H/W(CPU, Memory, I/O), MySQL/MariaDB 등 다양한 성능 테스트를 할 수 있다. github : github.com/akopytov/sysbench 1. 설치 ## Linux ## ## Debian/Ubuntu curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash sudo apt -y install sysbench ## RHEL/CentOS curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh..
고가용성 (High Availability) 고가용성 (HA, High Availability) 이란 긴 시간동안 지속적으로 운영이 가능한 시스템이나 컴포넌트를 말한다. HA의 방법으로는 클러스터링, 이중화, RAID 구성 등이 있다. 클러스터링은 여러개를 모아서 하나를 구성하는것을 의미하며 네트워크 부하에 의한 장애를 대비하기 위한 방법이다. 이중화는 고장에 대비하기 위한 방법이며 보통 Active와 Stand by 라고 한다. 네트워크 이중화, 서버 이중화 등이 있다. RAID는 고장에 대비하기 위한 방법이며 하드디스크에 사용한다. 물리적으로 두개인 하드를 논리적으로 한개의 하드디스크로 관리하는 방법이다. # 참고자료 - www.linux-ha.org/wiki/Main_Page
DB Sharding 샤딩(Sharding)은 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산 저장하는 방법을 말한다. Horizontal Partitioning 이라고 볼 수 있다. 샤딩(Sharding)을 적용하게 되면 프로그래밍, 운영적 복잡도는 증가. 분산이 잘 되지 않을 경우, 한쪽으로 Data 가 집중되어 Hotspot 이 발생. 샤딩은 Shard Key를 어떻게 정의하는지에 따라 데이터의 효율적인 분산을 결정. - Hash Sharding Shard Key : Database id 를 Hashing (Cluster 안의 Node 개수로 Hash 크기 결정) Cluster 의 Node 개수의 변경에 따라 ReSharding 이 필요할 수 있다. - Dynamic Sharding Naming 을 기준으..
MySQL 8.0 Remote 설정 1. /etc/mysql/mysql.conf.d/mysqld.cnf 파일 내 아래 부분 수정 bind-address = 0.0.0.0 혹은 bind-address 부분 주석 처리 # bind-address = 127.0.0.1 2. remote 접속용 user 생성 CREATE USER 'USERNAME'@'HOSTNAME' IDENTIFIED BY 'PASSWORD';
MySQL 8.0 Requested authentication method unknown to the client 이슈 해결 1. /etc/mysql/my.cnf 에 다음 내용 추가 [mysqld] default_authentication_plugin= mysql_native_password 2. mysql 에서 root 사용자로 다음 명령 실행 FLUSH PRIVILEGES;
Lock DBMS는 각 트랜잭션의 오퍼레이션 별로 적당한 수준의 Lock을 자동으로 설정한다. 가장 기본이 되는 Lock 모드는 공유 Lock와 배타적 Lock이다. - 공유 Lock 공유 Lock은 데이터를 읽고자 할 때 사용하며 다른 공유 Lock와는 호환되지만 배타적 Lock와는 호환되지 않는다. 여기서 호환됨은 하나의 리소스에 두개 이상의 락을 동시에 설정할 수 있음을 말한다. 다른 사용자가 동시에 한 리소스를 읽을 수는 있으나 변경은 불가능하다. 반대로 다른 사용자가 읽고 있는 리소스를 동시에 읽을 수는 있어도 사용중인 리소스를 동시에 읽을 수는 없다. - 배타 Lock 데이터를 변경하고자 할 경우 사용되며 트랜잭션의 완료 시까지 유지된다. 해당 락이 해제되기 전까지 다른 트랜잭션은 해당 리소스에 접근할..
Oracle, SQL Server Architecture Oracle에서는 디스크에 저장된 데이터 집합(Datafile, Redo Log File, Control File 등)을 데이터베이스라고 칭한다. SGA 공유 메모리 영역과 이를 엑세스하는 프로세스 집합을 합쳐서 Instance라고 한다. 하나의 Instance는 하나의 데이터베이스만 엑세스하지만 RAC(Real Application Cluster) 환경에서는 여러 인스턴스가 하나의 데이터베이스를 엑세스할 수 있다. 하나의 인스턴스가 여러 데이터베이스를 엑세스할 수는 없다. SQL Server 는 하나의 Instance 당 최고 32767 개의 데이터베이스를 정의하여 사용할 수 있다. 기본적으로 시스템 데이터베이스가 만들어지며 사용자 데이터베이스를 추가로 생성하는 구조로 이루어져 있다. 데이터베이스를 만..

반응형