Database

PostgreSQL 다운로드 아래 EDB 사이트에서 PostgreSQL 을 다운로드 할 수 있습니다. www.enterprisedb.com/ Postgres Advanced Server 를 다운로드 하려면 EDB 회원이 되어야 하지만, 일반 Postgres 를 설치하는 경우에는 EDB 회원이 아니어도 됩니다. 일반 PostgreSQL 을 다운로드 하는 사이트로 바로 접속할 수도 있습니다. www.postgresql.org/download/ PostgreSQL: Downloads Downloads PostgreSQL Downloads PostgreSQL is available for download as ready-to-use packages or installers for various platforms..
PostgreSQL 이란 오픈소스 데이터베이스 중 가장 진보되고 안정적인 데이터베이스입니다. PostgreSQL 특징 ANSI C 로 개발되었으며 Windows, Linux, MAC 등 다양한 플랫폼을 지원합니다. 트랜잭션 속성인 ACID 에 대한 구현 및 로우레벨 락킹등이 구현되어 있습니다. 대용량 데이터 처리를 위한 '테이블 파티션' 과 테이블스페이스 기능 구현이 가능합니다. WAL log 아카이빙과 핫백업을 통해 영구성을 제공합니다. pg_upgrade 를 이용하여 업그레이드를 진행할 수 있으며, 웹 기반 또는 GUI 관리도구를 제공하여 모니터링, 관리, 튜닝까지 가능합니다. ANSI/ISO 표준규격의 SQL 을 지원합니다. ACID 와 MVCC 를 지원하는 아키텍쳐로 설계되었으며 대용량의 복잡한 ..
가끔씩 라이브에서 데이터를 추출해서 전달해 달라는 요청이 들어옵니다. 일반적인 경우 추출한 데이터는 따로 검증작업 없이 요청자에게 전달하여 CS 에서 확인하는 용도로 사용됩니다. 즉, 추출한 데이터를 라이브에서 다시 사용하지 않는다는 의미입니다. 하지만 추출한 데이터를 다시 라이브용도로 활용하려고 하는 경우에는 어떻게 해야할까요? DMA 툴이나 패키지를 사용하여 데이터를 마이그레이션 할 수도 있지만 환경이 안되어서 SRC 서버에서 INSERT 쿼리형식으로 추출하여 DST 서버에서 적재하는 방법도 검토해야 합니다. 이런경우 추출한 데이터가 정확한지 검증작업을 진행해야 합니다. ( 테이블에 PK 가 있는 경우에만 가능한 점 참고 부탁드립니다. ) 데이터 검증 방법 1. 데이터가 변경되지 않도록 설정합니다. ..
상황 레디스 압축파일을 해제한 후 make 명령어를 수행하면 아래처럼 jemalloc No such file or directory 오류가 발생합니다. 1 2 3 4 5 6 7 8 9 10 11 [root@redis-5.0.7]# make cd src && make all make[1]: Entering directory `/opt/redis-5.0.7/src' CC Makefile.dep make[1]: Leaving directory `/opt/redis-5.0.7/src' make[1]: Entering directory `/opt/redis-5.0.7/src' CC adlist.o In file included from adlist.c:34:0: zmalloc.h:50:10: fatal error..
레디스 AOF 시 오류 발생 레디스 aof 시 아래와 같은 오류가 발생했습니다. 이 에러는 AOF 쓰기작업을 하는데 디스크에 쓰는 속도가 느려 레디스가 느려질 수 있다는 의미입니다. Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis. AOF 와 관련된 레디스 옵션 (일부) appendonly aof 쓰기를 활성화 하는 여부입니다. appendfsync always : 명령어가 수행될 때마다 aof 파일로 디스크 쓰기를 진행합니다. everysec : 1초에 한번씩 aof 파일로 디스크 쓰기를 진행..
개요 레디스는 메모리DB 입니다. 메모리DB 이기 때문에 레디스에서 사용하는 메모리 할당량을 확실히 알아야 합니다. 메모리가 부족하게 되면 OOM 에 의해 프로세스가 죽을 수 있기 때문입니다. 그래서 메모리 사용량에 대해 조사하던 도중 SAVE 동작 시 자식프로세스가 생성되어 rdb 파일을 백업하는 데 이 때 메모리를 2배로 사용한다. 라는 글이 있어서 이에 대한 테스트를 진행해 보려고 합니다. 메모리를 2배로 사용한다는 의미는 아래와 같습니다. 레디스 프로세스 (부모) 가 메모리상의 데이터를 가지고 있고, SAVE 시 자식 프로세스가 생성되어 메모리상의 데이터를 전체 복사 후 rdb 파일로 내려쓴다. 참고로 이 포스팅에서의 SAVE 동작은 사용자가 직접하는게 아니라 레디스 엔진에서 save 옵션값으로 ..
개요 서비스에서 380만 정도 Key에 21GB 정도의 메모리가 할당되어 운영되고 있습니다. 메모리 DB 라는 관점에서, 21GB 라는 메모리는 큰 편이라고 볼 순 없지만 AWS EC2 환경에서 r5.2xlarge 타입으로 운영되고 있고 Scale Up 을 하는순간 추가 비용이 발생하는 문제와 디스크처럼 여유롭게 공간을 확보하기 힘들기 때문에 개선이 필요할 것으로 보았습니다. 개선방법 포스팅에서 다루지 않을 개선 방법 가장 편한 방법은 필요없는 데이터를 삭제하는 것과 위에서 말한것처럼 Scale Up 을 하는 것 입니다. ( 사실 라이브 상황에서 이건 쉬운 방법이 아닙니다.. ㅠㅠ ) Scale Up 을 하는동안의 DownTime 을 감당해야 하고 (이중화로 구성되어 있기 때문에 서비스 다운은 아니지만요..
개요 Redis 와 Sentinel 로 구성된 레디스가 있습니다. Jedis 를 사용하는 어플리케이션에서 Sentinel 에서 마스터 IP 를 조회하여 Redis 에 접속하고 있습니다. sentinel failover 를 수행한 후 어플리케이션에서 새로운 마스터를 인지하지 못하는 상황이 발생했습니다. 모든 Sentinel 에서는 새로운 마스터 IP 로 변경되어 있는 상태였습니다. 원인에 대한 범위 좁히기 왜 어플리케이션에서 새로운 마스터를 찾지 못했을까 Jedis 라이브러리를 사용하는 어플리케이션에서 Pub/Sub 기능을 이용하여 Sentinel 의 메시지를 받고 이 Sentinel 메시지 중 +switch-master 의 메시지를 받으면 Failover 가 수행되도록 쓰레드로 구현이 되어 있습니다. 그..
개요 Redis 에서는 Sentinel 기능이라는 마스터/슬레이브를 모니터링 하는 기능을 제공합니다. Sentinel 은 일명 모니터를 하는 기능으로 마스터/슬레이브를 정해주며 마스터 노드가 Failover 되었을 때 슬레이브 노드를 마스터로 구동 후, 마스터로 접속할 수 있도록 해주는 기능입니다. Jedis 라이브러리에서는 이렇게 Failover 되었을 때 센티넬로부터 새로운 마스터 정보를 얻어와서 변경된 마스터로 접속할 수 있도록 제공하고 있습니다. 테스트 환경 테스트를 하기 위한 환경은 아래와 같고 모든 테스트는 리눅스 환경에서 이루어졌습니다. Jedis 를 사용한 자바 코드도 리눅스 환경에서 동작합니다. OS Ubuntu 18.04 Redis Master 127.0.0.1 6161 Redis Sl..
개요 Java 에서 Jedis 혹은 Lettuce 를 사용하여 Redis 에 접속할 수 있습니다. 이 중 Jedis 를 다뤄볼 예정이고 Jedis 는 Redis 기능을 사용할 수 있는 여러 기능들을 모아놓은 라이브러리라고 보시면 됩니다. 테스트 환경 Jedis 기능을 테스트하기 위해서 Ubuntu 환경에서 진행했습니다. Windows 환경에서 Jedis 기능을 사용하려는 분들에게는 이 포스팅이 적절하지 않을 수 있습니다. OS Ubuntu 18.04 Java openjdk 1.8.0_275 Redis 2.8.21 Jedis 2.9.0 사전에 진행된 부분 1. Ubuntu 에 Java (jdk)가 설치되어 있어야 합니다. 2. Ubuntu 에 Redis 가 설치되어 있어야 합니다. Java 와 Jedis ..
꽁담
'Database' 카테고리의 글 목록 (7 Page)