전체 글

'DBA 업무'와 '알게되는 정보'를 기록하는 공간
현상 다음 파일의 줄 끝에 일관성이 없습니다. 줄 끝을 정규화시키시겠습니까? 이런 대화창은 왜 나오는걸까? 원인 데이터에 줄바꿈(Enter)이 있고, 데이터를 넣고 추출하는 OS 가 다른경우에 발생하게 됩니다. 타 OS 에서 데이터를 넣고 추출하는 경우에 왜 이런 오류가 나올까요? 먼저 OS 마다 Enter 값을 저장하는 내부 값은 다릅니다. 운영체제 값 헥사 Windows CR LF (rn) 0x0D 0x0A Mac CR (r) 0x0D Unix LF (n) 0x0A 하나의 예를 보겠습니다. 리눅스 환경에서 Enter 값이 들어간 데이터를 한건 적재했습니다. 그렇게 되면 SQL Server 내부에는 0x0A 라는 값 하나만 저장되게 됩니다. 이 값을 Windows 환경에서 추출해서 확인하려고 하면, 0..
· Windows
현상 컴퓨터 앞쪽 USB 포트에 USB 를 장착한 후, 컴퓨터를 부팅하면 USB 를 읽습니다. 그런데 컴퓨터 부팅이 완료된 후에 몇초가 흐르면 갑자기 인식을 못하게 되었습니다. 이러한 현상이 있을 때는 괜히 컴퓨터 본체를 열어서 선 뺐다 꽂았다 하실필요 없습니다. ( 제 경험으로 ) 또한 USB 가 고장나거나 USB 포트에서 메인보드까지의 선이 고장나지 않았을 수도 있습니다. 괜히 돈날리지 마시고 먼저 아래 방법을 따라해 보시길 바랍니다. 해결방법 1. "시작"에서 "장치 관리자" 를 입력합니다. 2. "범용 직렬 버스 컨트롤러" 로 들어갑니다. 3. USB 허브의 속성을 클릭합니다. 4. 전원 관리에서 "전원을 절약하기 위해" 체크를 해제합니다. 왜 이방법이 먹히는지? 제 컴퓨터에는 모니터2개 / 음향..
· AWS/EC2
Filebeat 란 실시간 파일 내용을 수집하여 ElastiSearch 나 Logstash 등 다양한 Output 으로 전달하는 도구 입니다. 동시에 여러개 파일의 내용을 수집할 수 있으며 서버 자원을 거의 사용하지 않습니다. 대략적인 그림으로 아래와 같이 구성할 수 있습니다. 이 포스팅에서 logstash 와 ElasticSearch 에 대한 부분은 다루지 않습니다. Filebeat 설치 및 구동 방법 Filebeat 설치방법 외부망으로 통신이 가능하다는 전제하에 진행할 수 있습니다. ubuntu 환경은 설치방법이 dpkg 방식으로 아래와 다릅니다. 1. rpm 을 통해서 elasticsearch 패키지를 다운로드 받습니다. 2. repo 에 내용을 등록합니다. 3. filebeat 를 설치합니다. 1..
· 후기
발단 - 명세서에 찍힌 인터넷직접접속통화료 KT 핸드폰/인터넷 요금에 자동이체를 걸어놓고 평범한 일상을 보내던 도중, 갑자기 부가포함 27,500 원이 더 청구가 되었습니다. 이게 뭔일이야? 하고 KT 마이데이터 어플을 켜보니 아래처럼 '인터넷직접접속통화료' 가 추가되어있더라구요. 데이터를 몇기가쓰면 더이상 못쓰는 요금제에서 추가로 쓴것도 아니며 3GB LTE 데이터이긴하지만 다쓰면 속도제한있는 무제한 데이터를 사용하고 있고 평소였다면 없는 요금제여야 하는게 맞습니다. 전개 - KT 고객센터에 전화 KT 고객센터에 전화를 하였습니다. 갑자기 인터넷직접접속통화료가 부과되었는데 이게 어찌된 일인지 물어봤습니다. ( 최대한 친절하게 물어보려고 하긴하였는데,, 까칠했다면 상담사 분에게는 죄송합니다. ㅠㅠ ) 저..
개요 레디스는 메모리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 ..
· Linux/개념
상황 Ubuntu 환경에서 apt 명령어를 사용하여 자동으로 설치진행하는 도중 아래와 같은 오류가 발생했습니다. 'kr.archive.ubuntu.com' 의 주소를 알아낼 수 없습니다. 해결방안 1차 해결방안 저 같은 경우는 좀 특이한 케이스인데 VM 에서 호스트전용 어댑터로 설정만 해서 발생하는 문제였습니다. ( 외부와의 통신이 불가능한 상태 ) VM 에서 '호스트전용 어댑터'와 'NAT' 어댑터 2개를 설정한 후 interface 설정을 변경하였습니다. Step 1. enp0s3 는 '호스트전용 어댑터' enp0s8 은 'NAT' 으로 설정되어 있는 상태입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 root@psh-VirtualBox:~# ifconfig ..
꽁담
꽁담