목록IT/Database (31)
잡동사니
안녕하세요. yeTi입니다. 오늘은 Springframwork에서 제공하는 Transactional 의 옵션은 Isolation 의 특성을 MySQL 8.0의 공식 문서 를 통하여 정리하고자 합니다. 개요 모든 Database System은 ACID의 원칙을 준수하는 방향으로 만들어지는데요. ACID는 트랜젝션의 개념과 밀접하게 관련이 있습니다. 하지만 ACID 를 준수하면 높은 수준의 성능을 기대하기 어렵기 때문에, 데이터의 격리 수준을 나눠 성능과 데이터 일관성을 적절하게 조절하여 사용할 수 있도록 지원하고 있습니다. ACID Atomicity : 한 프로세스에서 보장되어야하는 데이터의 변경점이 일괄적으로 변경되거나 변경되지 않는 특징입니다. Consistency : 트랜젝션이 진행되는 동안에는 다른..
안녕하세요. yeTi입니다. 오늘은 Pgpool을 활용하여 PostgreSQL을 사용하는 중에 지속적으로 pgpool이 죽는 현상을 해결한 부분을 공유하고자 합니다. 작업 환경 Pgpool : 4.1.1 PostgreSQL : PostgreSQL 11.7 on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit 구성 서버 구성은 pgpool과 postgresql이 1:1로 설정되어 있습니다. 현상 pgpool pod이 지속적으로 재시작하는 현상이 있었지만 pod로그나 이벤트로그상으로는 특이점을 찾을 수 없는 상황이었습니다. 원인 분석 pgpool의 session을 확인하는 도중 클라이언트 커넥션이 다 차면서 pgpool이 재시작하는 것..
안녕하세요. yeTi입니다. 오늘은 Pgpool에서 현재 접속한 커넥션수를 확인해보려고 합니다. 작업환경 Pgpool : 4.1.1 shell에서 pgpool 상태확인하기 psql 접근시 비밀번호를 입력하는 단계를 생략하기 위해 환경변수에 pgpool의 비밀번호를 설정합니다. /$ export PGPASSWORD=[계정 비밀번호] psql을 활용하여 pgpool에 쿼리를 실행에 shell로 반환하여 정보를 받습니다. show pool_processes를 사용하면 pgpool에 설정되어있는 클라이언트 수 및 현재 접속하고 있는 클라이언트를 확인할 수 있습니다. /$ psql -h localhost -p 5432 -U postgres -d postgres -c "show pool_processes;" poo..
안녕하세요. yeTi입니다. 오늘은 PostgreSQL을 접속하기에 유용한 클라이언트 툴인 pgAdmin을 활용하여 데이터베이스를 백업 및 복구를 해보려고합니다. 작업환경 pgAdmin : 4.21 PostgreSQL : PostgreSQL 11.7 on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit 백업 백업을 진행할 DB에는 테이블 하나와 한개의 데이터를 추가했습니다. 백업메뉴를 선택합니다. 저장할 파일명과 인코딩 설정을 합니다. 백업에 대한 설정을 합니다. 백업이 완료되면 다음과같이 안내가 나옵니다. 복구 복구할 데이터베이스를 생성합니다. 복구메뉴를 선택합니다. 백업한 파일을 선택합니다. 복구를 진행하면 다음과같이 안내가 나..
안녕하세요. yeTi입니다. 오늘은 Kubernetes 환경에서 PostgreSQL의 HA를 구성해보겠습니다. 작업환경 OS : Linux 4.18.0 Kubernetes : 1.18 Helm : 2.16.7 High Availability PostgreSQL Documentation에 따르면 PostgreSQL은 자체적으로 Master-Slave형태의 replication을 제공합니다. 추가적으로 Standby의 형태를 Cold Standby, Hot Standby를 제공하고 있어 상황에 맞는 구성을 선택할 수 있습니다. 하지만 Master-Slave형태의 구성에는 클라이언트가 접속할 수 있는 End-Point를 단일화 하는 이슈가 있는데, 이를 Pgpool이라는 미들웨어를 사용하여 해결할 수 있습니다..
안녕하세요. yeTi입니다.오늘은 Redis(레디스)의 레퍼런스문서중 Rersistence에 관한 부분을 한글로 번역하여 이해해보겠습니다.(URL : https://redis.io/topics/persistence) 아시다시피 Redis는 NoSQL의 하나이고 메모리 저장방식을 사용합니다.따라서 장애가 발생했을때 기본적으로는 모든 데이터가 날아가는 특성이 있는데요.이를 데이터 스냅샷 기능과 명령어 저장 방식을 통해 원본 데이터를 살려주고 있습니다. 하지만 이는 RDBMS와는 다르게 일정 주기로 데이터를 보존해 주기때문에특정 주기동안에 메모리에만 저장한 데이터는 복원이 안되는 특성이 있다는 것을이해하시면서 사용하시면 좋을꺼 같습니다. 자세한 부분은 아래에서 살펴보겠습니다. 이 페이지는 Redis 지속성에 ..
안녕하세요. yeTi입니다.오늘은 MariaDB에서 사용자 관리에 필요한 쿼리를 모아보겠습니다. 설치 환경- OS : CentOS release 6.9 (Final)- MariaDB : 10.2.11 1. 사용자 생성하기 CREATE USER '[사용자 계정]'@'[호스트]' IDENTIFIED BY '[비밀번호]'; 호스트에 '%' 사용시 모든이라는 의미 2. 사용자 삭제하기 DROP USER '[사용자 계정]'@'[호스트]'; 호스트에 '%' 사용시 모든이라는 의미 3. 사용자 계정정보 조회하기 SELECT HOST, USER, PASSWORD FROM mysql.user WHERE USER='[사용자 계정]' 4. 권한 조회하기 SHOW GRANTS FOR '[사용자 계정]'@'[호스트]'; 호스트..
안녕하세요. yeTi입니다.오늘은 MariaDB의 InnoDB에서 Auto_Increment 사용시 초기화 될 수 있다는 문제에 대한 의문을 해소해보고자 합니다. 설치 환경- OS : CentOS release 6.9 (Final)- MariaDB : 10.2.11 근래에 웹상에서 MariaDB에서 Auto_Increment를 사용할 시 발생할 수 있는 문제점에 대해 발견했습니다. 내용인 즉슨엔진으로 InnoDB를 사용할 경우 내부적으로 메모리상에 최대값을 저장하고 있기 때문에재시작시 의도한 최대값이 아니라 초기값으로 사용될 수 있다는 것입니다. 이와 관련하여 최신 MariaDB Reference를 확인했고 다음과 같은 내용을 확인했습니다. InnoDB/XtraDBUntil MariaDB 10.2.3, ..
안녕하세요. yeTi입니다.오늘은 Maxscale을 활용하여 MariaDB의 Master-Slave 환경에서 Auto-Failover를 구현하도록 하겠습니다. 설치 환경- OS : CentOS release 6.9 (Final)- MariaDB : 10.2.11 1. RPM을 다운받는다. (https://mariadb.com/downloads/mariadb-tx/maxscale)- wget https://downloads.mariadb.com/MaxScale/2.2.15/centos/7/x86_64/maxscale-2.2.15-1.centos.7.x86_64.rpm- yum install [패키지명] - MariaDB 에서 아래 쿼리 실행GRANT ALL PRIVILEGES ON *.* TO maxsca..
안녕하세요. yeTi입니다.오늘은 MHA의 노드간 Replication을 확인하는 과정에서 발생하는 다음 문제를 해결해보겠습니다. [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln401] Error happend on checking configurations. Use of uninitialized value in string eq at /usr/local/share/perl5/MHA/Server.pm line 236.[error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln500] Error happened on monitoring servers. 설치 환경- OS : CentOS release 6.9 (Fina..