본문 바로가기

전체 글

(13)
Postgresql - transaction id wraparound ㅜㅜ 어느날 개발DB에서  DB가 read only가 되는 상태가 되어 있는것을 발견아래 이미지 처럼 to prevent wraparound 가 나타나며 autovacuum을 하고 있는 상태 였다. to prevent wraparound  는 transaction id가 2억개 넘으면 시작이 된다. 보통은 autovacuum으로 처리가 되는데아 근데 이게 데이터 들어 오는 속도 보다 autovacuum이 느리게 진행되어 데드라인인 20억건까지 밀리게 되어결과적으로 DB가 read only상태로 변경이 되었다. read  only상태는 그냥 운영 환경처럼 처리할수가 없다.(vacuum freeze가 아예 안먹고 single mode로 접속하라고 메시지가 나옵니다. ) 작업한 순서를 정리해 보면 1.  pg_ct..
GCP composer(airflow) 에서 jdbc to jdbc 데이터 적재하기 회사에서 Veritca to mysql(cloud sql) 로 배치를 만들어야 되는 일을 하게 되었다. airflow 에서 지원하는 operator 에는 VerticaToMySqlOperator 가 있긴 하다. 처음에는 저걸로 ETL을 구현하려고 했으나 .... 테스트중 문제가 발생 데이터 건수가 작을때는 문제 없었다. 그러나 120만건 정도 넘어가니 아래와 같은 오류 메시지가 나오면서 task가 죽어 버리는 현상이 발생한다. 구글에 문의해서 얻은 답은 해당 task가 메모리를 과도하게 써서 kill 시킨거라고 한다. VerticaToMySqlOperator 이 소스를 보니 fetchall 이였다. 양이 늘어 나면 늘어날수록 메모리에 적재하다 임계치에 오면 kill이 되는거였군.. 음.. 평균 600-7..
CGP composer(Airflow) 알림 teams로 받기 gcp airflow dag의 실패시 teams 로 알림을 받으려고 하였으나 . 제공되는 provider list에 메시져는 slack, telegram, discord 밖에 없었다 https://airflow.apache.org/docs/#providers-packages-docs-apache-airflow-providers-index-html Documentation Platform created by the community to programmatically author, schedule and monitor workflows. airflow.apache.org 해서 여기 저기 찾아 보니 teams 로 알림 보내는 plugins을 만든분이 있어 github에서 소스를 다운 받았다 https://g..
Veritca 에 json type 데이터 적재 테스트 요즈음 로그성 데이터들이 많아져서 json type의 데이터를 적재해야 할경우가 생겨 적재 테스를 진행해 본다. 참고페이지 https://www.vertica.com/docs/8.1.x/HTML/index.htm#Authoring/FlexTables/FJSONPARSERreference.htm 1. 테스트로 사용할 json data를 생성한다. file명은 json_data.json {"name": "Everest", "type":"mountain", "height":29029, "hike_safety": 34.1} {"name": "Mt St Helens", "type":"volcano", "height":29029, "hike_safety": 15.4} {"name": "Denali", "type":..
[Postgresql]Full Backup & Resotore postgresql backup 및 restore 방법 입니다. (full backup) centos 기준입니다. 1. 현재 서버에 postgresql 이 설치 되어 있는지 확인합니다. 설치되어 있으면 3번부터 보세요 psql -V 이 커맨드를 쳐서 없다고 나오면 postgresql 을 설치합니다 2. yum list를 확인하여 설치하려는 버전이 있는지 우선 찾아 봅니다. (우리는 10버전대를 쓰니 10버전으로) yum list postgresql* 10버전이 없으면 설치 합니다. rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm yum list postgresql* 를 다시 확인해 보고 10버..
[Vertica] 사용자 접속시 Load Balancing 과 BackupServerNode JDBC 설정방법 무료 tool인 dbeaver를 이용해서 접속하려고 합니다.  Vertica 사용자들이 주로 접속하는 노드가 다운되었을때 차선으로 다른 노드에 붙을수 있게 설정해 보겠습니다.노드 다운되니 서비스가 안된다고 민원이 쇄도하여 다운된 노드 복구때 까지 서비스 사용할수 있게 방법을 찾아 보았습니다.   step 1메뉴:   데이터베이스> 새 데이터베이스 연결   을 선택합니다.(화면 ui는 dbeaver 버전에 따라 조금씩 다를수 있습니다.)  step 2  접속 관련 정보를 입력하고 Edit Driver Settings를  누릅니다. step 3 Url Templete 에서  "?ConnectionLoadBalance=1&BackupServerNode=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx"..
[Vertica] user pool 별 cpu 사용량 제어 하기 버티카 운영을 하던중 유저들이 몰리는 시간대에 heavy query 를 여러명의 유저가 동시에 실행시키면 cpu 사용량이 급증하는 현상이 있어 관리 차원에서 user pool 별로 사용량 제한을 걸어보았다. ALTER RESOURCE POOL CPUAFFINITYSET '80%' CPUAFFINITYMODE shared; 현재 버티카 버전은 8.1 이고 위 조치이후 cpu 사용율이 90% 넘어서 오던 메시지는 사라졌다. 대신 유저들의 sql 수행시간은 그만큼 더 걸리겠지만 .. 난 서버 안정성이 우선이라 어쩔수 없다. 추후 개별 마트를 만들어 주는방법등으로 수행성능을 향상 시켜 보아야 겠다
구름 ide에서 python 컨테이너 만들기 무료로 서버 환경을 구성할수 있게 제공해 주는 구름 https://www.goorm.io/ 를 사용해 봅시다. 회원가입/ 로그인후 상단 메뉴에서 ide를 클릭하면 아래와 같은 화면으로 이동합니다. 우측상단의 새 컨테이너 를 클릭합니다. 컨테이너의 이름을 입력하고 공개범위 : public 소프트웨어 스택 : python OS : Ubuntu 18.04 LTS 추가 모듈 / 패키지 : MySQL설치, mysql-ctl 명령 추가 선택하여 실행하기 버튼을 클릭합니다. 이런 창이 뜨면서 컨테이너가 성공적으로 생성이 됩니다. 컨테이너 실행하기를 클릭하여 컨테이너의 ide로 들어갑니다. ide를 실행한 모습입니다. 이제 기본 서버 환경은 구성이 되었습니다. python의 django 프레임 웍을 이용하여 웹 게시판..