yunhyeonglee의 등록된 링크

 yunhyeonglee로 등록된 티스토리 포스트 수는 78건입니다.

[ MongoDB ] MongoDB Test Data [내부링크]

몽고 DB의 성능을 테스트하기 위해 테스트 데이터를 입력하는 방법에 대해 기록하도록 하겠습니다.~~ wget sampledata - 외부 에서 sample data를 받아 옵니다. wget https://atlas-education.s3.amazonaws.com/sampledata.archive mongodb tools 다운로드 - sample data를 몽고 DB에 넣기 위해서는 mongorestore tool이 필요 ###mongodb tools 다운로드 [root@mongo ~]# vim /etc/yum.repos.d/mongodb-org-5.0.repo [mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yu..

[ MySQL ] Openging Table 상태 [내부링크]

Opening Tables? Trying to open a table. Usually very quick unless the limit set by table_open_cache has been reached, or an ALTER TABLE or LOCK TABLE is in progress. 테이블을 열려고 합니다. table_open_cache에 의해 설정된 한계에 도달하거나 ALTER TABLE 또는 LOCK TABLE이 진행 중이 아니라면 일반적으로 매우 빠릅니다. 결론 Opening Table State의 경우 Table_open_cache < open_tables 상태이며 새로운 Table이 open될떄 발생하게된다. 해결방안 show global status where variabl..

[ MySQL ] Container DB Replication ( Using. Docker-compose ) [내부링크]

Docker Compose를 이용해서 이전에 포스팅했던 Docker Image를 빌드한후 DB Replicatoin 올리는 방법을 작성해보곗습니다. 간략하게 요약하면 아래 순으로 실행이됩니다. Docker hub에 올려논 Docker Image를 통해서 → Docker file을 만들고 → Docker Compose를 이용하여 Replication 설계 https://github.com/dkwlfowh/docker_mysql8_repl Docker-Compose 설치 [root@pmm-server ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)..

[ MySQL ] Docker MySQL 이미지 생성 [내부링크]

테스트 DB를 구성하는데 있어 보다 편하게 하고싶어서 Docker 이미지를 생성하고 해당 이미지로 Container DB 생성을 해보았습니다. 이후에 해당 이미지를 이요하여 Container Replication을 구성해 볼 예정입니다. [root@pmm-server ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 508674e5261a centos:7 "/bin/bash" 8 minutes ago Up 8 minutes centos7 4c349fab5687 centos "/bin/bash" 58 minutes ago Up 57 minutes centos 44eeafff66ca percona/pmm-server:2 "/opt/ent..

[ PostgreSQL ] Autovacuum이란??? 무엇일까? [내부링크]

이번 Postgresql 관련 교육 자료를 만들게되면서 Autovacuum에 대해 공부해보았습니다. https://generated-ixia-4d4.notion.site/AutoVacuum-b1f5a5f647154efb8833f0d8098978f7

[ Jmeter ] 성능부하 테스트 [내부링크]

Apache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구이다. JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다. 이번에 DB 구조 개선을 하게되면서 AS-IS / TO-BE 구조의 성능을 테스트할 기회가 생겨 해보게 되었다. https://generated-ixia-4d4.notion.site/Jmeter-00de2adf17344ad3b7e031f2cabe6c0b

[ MYSQL ] NCP - Cloud DB for MySQL 구축 [내부링크]

- Naver Cloud 에서 관리해주는 Database인 Cloud DB for MYSQL을 구축해보았다. https://generated-ixia-4d4.notion.site/CDB-MySQL-d0202dc3b7f7419e8d977aa5e6480e74

[ Zabbix ] Zabbix - Slack 연동 [내부링크]

최근 Team-Slack 계정을 만들게되어 기존 Email 방식으로 하던 알람을 Slack 방식으로 바꾸었다. 아래는 Zabbix, Slack 연동 Alert 테스트한 자료다. https://generated-ixia-4d4.notion.site/Zabbix-Slack-20c56dca6a5f46b6895d36b2386c8fb4

[ AWS ] RDS - 파라미터 설정 수정 [내부링크]

- AWS RDS 환경에서 파라미터 수정을 해보았다 ~ https://generated-ixia-4d4.notion.site/RDS-MYSQL-Variables-3cfbcf2c900e49d6bb6a1e9d121f10e5

[ AWS ] RDS 생성 & 연결 방법 [내부링크]

- AWS 프리 티어를 이용하여 RDS 생성 및 DB 연결을 해보았다~ https://generated-ixia-4d4.notion.site/RDS-37feaac16c2c4906b7859cf508e244f8

[ MySQL ] ProxySQL Query 빈도수 통계 작업 [내부링크]

- ProxySQL를 사용하는 곳에서 하루 동안 실행되는 Query의 빈도수 체크를 하고 싶어 했다. - ProxySQL의 경우 ProxySQL로 들어오는 Query에 대한 통계를 저장하는 Table이 존재한다. - Python을 이용하여 하루동안 실행되는 Query를 저장 DB에 Insert 하는 것을 짜보자 Query_check.py 1. ### SELECT STATE - ProxySQL에서 하루동안 실행되는 Query를 Select 해 온다. 2. ### Insert Zabbix - ### IF EXISTS QUERY IN ZABBIX SERVER : 저장 DB에 ProxySQL에서 가져온 쿼리가 존재한다면 - ### IF NOT EXISTS QUERY IN ZABBIX SERVER == NEW..

[ MySQL ] Memory ( Use. performance_schema / sys ) [내부링크]

- MySQL Database에서 Thread별 / 전체 Memory 관련 정보때 사용할 수 있습니다. https://generated-ixia-4d4.notion.site/MYSQL-Memory-Use-Performance_schema-Sys-6b28f605340c4ee2b555be762322441d

[ MongoDB ] MongoDB 접속 ( Use. Python ) [내부링크]

DB 정보 Replica Name: shard01 192.168.100.37:27017 192.168.100.37:27018 192.168.100.37:27019 Python 접속 https://www.mongodb.com/community/forums/t/python-connection-to-replicaset/151808 https://charsyam.wordpress.com/2011/12/07/pymongo에서의-mongodb-replica-set에서의-failover-과정/ While로 돌리면서 Primary DB를 Kill하였을떄 기존 Secondary가 Primary로 넘어가면서 Connection이 되는것을 확인함 db = client['test'] = test Database 접속 coll..

[MongoDB] - MongoDB Binary Install [내부링크]

https://generated-ixia-4d4.notion.site/1-Binary-Install-Community-Version-5-0-dbccc6ba9a544ac4bf02f10e2f795f1e

[ MySQL & MariaDB ] OS Buffer Cache 공간 확인 ( Use. Percona ) [내부링크]

목차 1.Buffer/Cache 사용하는 파일 확인 2. Unmap_cache를 이용하여 Cache 반납 3.Buffer/Cache 확인 MySQL 에서 Buffer Cache를 얼만큼 사용하고 있는지 확인 percona blog에 올라와있는 툴로 확인 Cent 7.3의 경우 aclocal Version이 1.13이므로 MakeFile을 수정하고 make 실행 **[root@slave linux-ftools]# git clone [root@slave linux-ftools]# yum -y install perl [root@slave linux-ftools]# cd linux-ftools/ [root@slave linux-ftools]# ./configure** **[root@slave linux-ftoo..

[ MySQL ] MTS ( Multi Thread Slave ) [내부링크]

https://generated-ixia-4d4.notion.site/MTS-Multi-Thread-Slave-8a780e402e364cd2bf6579ddc1ce7fdf

MySQL / MariaDB 이관 정합성 확인 [내부링크]

갸 꿀~~~ 이관 정합성 확인 쿼리 select table_schema ,concat(if(group_concat(SIZE separator '')!='',group_concat(SIZE separator ''),'0'),'(MB)') as "SIZE(MB)" ,if(group_concat(TAB separator '')!='',group_concat(TAB separator ''),'0') as "TABLE" ,if(group_concat(idx separator '')!='',group_concat(idx separator ''),'0') as "INDEX" ,if(group_concat(vie separator '')!='',group_concat(vie separator ''),'0') as "V..

Thread Pool [내부링크]

Thread Pool 이란 ( MySQL 서버용 스레드 풀링 플러그인(문서 ID 1358784.1) ) 스레드 풀은 동시 처리 요청이 많더라도 MySQL 서버의 CPU가 제한된 개수의 스레드 처리에만 집중할 수 있게 해서 서버 자원 소모를 줄이는데 목적이 있습니다. 예를 들어, **스레드 풀의 스레드 개수를 10개로 정해놨다면 갑자기 요청이 100개 들어왔을 때 처음 10개의 요청에 대해서는 스레드를 배정하고 나머지는 큐에다 넣어서 대기시킨다.** 기본 스레드 처리 모델을 사용하면 더 많은 클라이언트가 서버에 연결하고 명령문을 실행할수록 시스템의 전체 성능이 저하됩니다. 스레드 풀링 플러그인은 많은 동시 연결을 갖는 오버헤드를 줄이는 데 도움이 되는 대체 스레드 처리 방법을 제공합니다. 활성 트랜잭션이 ..

Mysqldump [내부링크]

https://generated-ixia-4d4.notion.site/mysqldump-b157a529ae894277a53e67af90e3b28c mysqldump MYSQLDUMP generated-ixia-4d4.notion.site

MySQL Python 사용하여 원하는 데이터 가져오기 [내부링크]

Pymysql 설치 yum -y install epel-release yum -y install python2 python2-pip pip2 install --upgrade pip==20.3 pip2 install pymysql Log를 담을 Table 생성 - AS-IS에서 Data를 가져와 TO-BE ( LOG DB ) 에 데이터를 적재 할 예정이다. create database gm_state; mysql> create table state(date datetime,state varchar(100),cnt int,avg int); Python 코드 - 나의 경우에는 AS-IS의 thread들의 상태를 로그에 넣기 위해서 아래와 같이 하였다. [root@gm-git01 ~]# cat gm...

ProxySQL 설치 및 DB connection [내부링크]

https://generated-ixia-4d4.notion.site/ProxySQL-Replication-DB-cff96f4ae8104c76a1ac1561825145b2 ProxySQL 구성 + Replication DB 참고 URL generated-ixia-4d4.notion.site - ProxySQL 구성및 Replication 구조일경우 Read / Write Split 구성 방안

ProxySQL 성능 테스트 [내부링크]

이번에 DB Proxy를 사용하게 되는 일이 생겨서 성능 테스트를 해보았습니다. 테스트 서버 SYSBENCH : 192.168.100.35 ProxySQL : 192.168.100.50 ( 4C / 4M ) DB : 192.168.100.37 ( 4C / 4M ) ProxySQL 통한 DML 1. Write DML 1. Prepare [root@monitoring oltp_legacy]# sysbench --mysql-db=lee --mysql-host=192.168.100.50 --mysql-port=6033 --mysql-user=lee --mysql-password=lee --threads=50 --report-interval=10 --max-time=150 --max-requests=0 /..

MHA 구성 - MySQL ( Using Ansible ) [내부링크]

엔서블을 이용하여 MYSQL Binary로 MHA를 구성하는 방법입니다. https://github.com/dkwlfowh/mysql_8.0_MHA-Using-Ansible-

성능테스트 SYSBENCH CUSTOM SCRIPT [내부링크]

SYSBENCH 란 ? sysbench는 LUA 스크립트를 이용하고 multi-thread 방식을 지원한느 벤치마크 툴로써 MySQL / MariaDB와 같은 Database에서 주로 사용되는 오픈소스 벤치마킹 프로그램이다. sysbench를 통해 QPS / TPS를 측정할 수 있다. INSTALL SYSBENCH는 YUM을 통하여 설치가 가능하다. yun -y install epel-release yum -y install sysbench SYSBENCH CUSTOM SCRIPT 1) SYSBECNH API sysbench의 핵심 API 3개가 필요하다 Thread_init, thread_done, event execute_inserts() ⇒ insert시 사용하는 문구로 select만 필요하기때문에..

[Maria] Galera Cluster to Single DB(DR) [내부링크]

이번엔 Galera Cluster 사용하고 있는 환경에서 DR용 Single DB( Replication )를 구성하기로하였다. 초기에는 Maxscale을 이용하여 Binlog Server용으로 사용할려고 하였지만 Maxscale을 실제로 사용하기 위해서는 라이센스 구매가 필요하다는 답변을 마리아 DB 코리아에서 연락을 받았다.. 어쩔 수 없이 Binlog Server 없이 다이렉트로 Replication을 맺어주기로 하였다. Galera Cluster 설치 - log_slave_updates=on : Galera 클러스터의 노드가 쓰기 세트를 비동기 슬레이브로 복제 log-slave-updates 하려면 Galera 마스터에서 활성화해야 합니다. 이것이 활성화되지 않으면 클러스터의 다른 노드에서 복..

[ Maria ] DDL시 Replication Delay 발생 [내부링크]

MariaDB / MySQL은 현재 Version에서 Online DDL을 지원한다. Replication 상태에서 Master DB에 사이즈가 큰 테이블에 DDL이 발생하였을 때 Slave의 상태는 괜찮을까라는 의문이 들었다. TEST를 해본 결과 Online DDL시 Slave의 Seconds_Behind_Master 값( Slave가 Master에 비해 얼만큼 늦는가 ) 이 높아지는 것을 확인할 수 있었다. percona에서 만든 pt-online-schema-change를 사용하게 되면 Seconds_Behind_Master를 조절하면서 Online DDL을 수행할 수 있다. 1. 일반 Online DDL - 일반적인 DDL로 ALGORITHM=INPLACE / LOCK=NONE 사용 - Ma..

[ MySQL ] Online DDL - Varchar [내부링크]

MySQL 5.6부터 Online DDL을 사용할 수 있게 되었고 인덱스 칼럼 추가/삭제 등 이렇게 Online DDL이 지원하게 되면서 pt-online-schema-change tool을 사용하지 않고도 서비스 중단 없이 DDL을 수행할 수 있게 되었다. 이번에는 Online DDl에서 VARCHAR Column을 변경할때 발생할 수 있는 문제 상황을 테스트해보았다. VARCAHR Size Extension - https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html The number of length bytes required by a VARCHAR column must remain the same. For VARCHA..

[Maria] Maxscale GUI 설치 [내부링크]

MariaDB MaxScale은 MariaDB 서버의 고가용성, 확장성 및 보안을 확장하는 동시에 기본 데이터베이스 인프라에서 분리하여 애플리케이션 개발을 단순화하는 데이터베이스 프록시입니다. read / write 분산이 필요한 아키텍처에서 MaxScale을 사용하면 효율적으로 분산 구조를 구성할 수 있습니다. 서버 hostname IP Version master 192.168.100.23 10.2 slave 192.168.100.20 10.2 maxsclae 192.168.100.21 2.5 Maxsclae 설치 - Maxscale 2.5 Version 설치 [root@maxscale ~]# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_re..

[ MySQL & Maria ] Innodb_buffer_pool 사용량 조회 [내부링크]

MySQL & Maria DB Innodb_buffer_pool 사용량은 성능에 중요한 Point가 된다. 사용량이 높게되면 Disk I/O가 발생하게 되고 성능이 떨어지게된다. Innodb_buffer_pool_size는 DOCS에서는 physical memory의 80%로 하는것을 말하고있지만 Real MySQL에서는 50%로 한후 모니터링하며 바꿔나가는 것이 좋다고 한다. https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_buffer_pool_size MySQL :: MySQL 8.0 Reference Manual :: 15.14 InnoDB Startup Options and System Variables de..

Redis - Maxmemory [내부링크]

Redis를 이용해서 Tomcat의 Session Clustering을 구성한 고객에서 문제가 발생하였다. 한달에 한번씩 OOM Killer에 인해 Redis가 죽는일이 발생하였다. 해당 원인을 분석하기위해서 Redis의 memory관련 config를 공부하게 되었고 해당 문제를 해결할 수 있었다. 원인으로 판단 되었던 것은 maxmemory가 0 (default)으로 되어있어 memory가 조절되지 않았고 session 값들이 삭제되지 않고 남아 memory를 잡아 먹었던 것이 문제였다. Redis 메모리 운영 - In-memory 데이터 저장 관리 - maxmemory 값을 이용하여 Redis가 사용할수있는 Memory 조정 가능 - 사용자의 모든 데이터를 메모리에 저장해서 관리할수 없다. - 이..

MRTE ( MySQL Real Traffic Emulator ) [내부링크]

MRTE2 ( MySQL Real Traffic Emulator )는 카카오에서 효율적인 MySQL 운영을 위해 개발한 opensource tool입니다. MRTE는 실서비스용 MySQL 서버의 트래픽을 수집하는 MRTE-Collector와, 수집한 데이터를 테스트용 MySQL 서버에서 재현하는 MRTE-Player 두 개의 툴로 구성되어 있습니다. 특히 MRTE-Collector는 Go로 작성되어 Go로 네트웍 프로그래밍을 하려는 개발자들에게 유용할 것입니다. MRTE 실행 순서 MongoDB 시작 MRTECollector 시작 MRTEPlayer 시작 각 컴포넌트 재시작 시 MRTEPlayer만 재시작하는 경우, MRTEPlayer가 재시작되는 경우 마지막 실행했던 Event를 기억하지 못한다. ..

Zabbix Agent 배포 ( Use. Ansible ) [내부링크]

나중에 서버가 여러 대가 되게 되면 하나하나 들어가서 Zabbix Agent를 설치하고 Config 파일을 수정하는 것은 힘들다고 생각된다. 이럴 때 Ansible을 이용하게 되면 여러 서버에 한 번에 Zabbix Agent를 설치하고 Config 파일을 수정하는 일이 가능하게 된다. TEST 환경 Hostname Private IP lee 10.,0.3.34 mysql1 10.0.3.245 mysql2 10.0.3.175 - Zabbix Agent 5 Version - Cent 7.9 Ansible 설치 & 간단 테스트 - Ansible 에서는 관리 대상의 서버 리스트를 inventory라고 부른다. - inventory는 /etc/ansible/hosts 에 저장되며 서버 그룹과 호스트로 구성..

[MySQL] MySQL 5 vs 8 ( Auto_increment ) [내부링크]

MySQL은 5.7과 8.0 간에 바뀐 기능들이 많이 있다 그중에 Auto_Increment도 포함되어있다. MySQL 5 Auto_Increment 동작 방식 - InnoDB Table에 Auto_Increment 속성을 추가하게 되면, 해당 Count 값들은 메모리 기반으로 관리되게 된다. - 따라서 DB가 재기동되면 Insert 구문을 실행하는 시점에 InnoDB는 해당 Table의 Auto_increment Column의 MAX 값을 조회하게 되고 해당 값에 +1을 하여 Insert를 하게 된다. - 때문에 Auto_increment의 값이 유니크하게 증가되지 않고 삭제 후 DB 재기 동시 삭제된 값이 재사용되는 문제가 발생한다. MySQL 8 Auto_Increment 동작 방식 - My..

Zabbix-agent Auto Registeration ( 자동 등록 ) [내부링크]

오늘은 zabbix-agent를 설치할 시 zabbix-server에 자동으로 host 가 등록되도록 하는 Auto registration 기능을 사용해볼 예정이다. 만약 여러개의 서버를 이용하는 환경이라면 zabbix-agent를 설치하고 수동으로 zabbix-server에 host를 추가하는 일은 효율적이지 못한 방식이다. 구성 환경 Public IP Private IP 비고 lee-monitor 146.56.188.9 10.0.3.16 Zabbix5 / CentOS Linux release 7.9 mysql1 193.122.107.214 10.0.3.245 Zabbix5 / CentOS Linux release 7.9 Zabbix-Server 설치 2021.11.22 - [Open Sourc..

[ ORACLE ] ORA-00257 archiver error [내부링크]

얼마 전에 고객사에 ORA-00257 에러가 발생하였다. 해당 고객사는 Crontab으로 7일 이후의 Archive Log는 삭제하는 스크립트를 걸어놨음에도 250G의 +RECO DIskgroup이 Full이 차는 일이 발생하였다. 우서 장애처리를 위해서 Archive log를 5일 치 남기고 삭제하여 해결하기는 하였으니 이후 왜 Archive log가 Full이 찾는지 원인을 찾기 시작하였다. 장애 발생 - RECO DISKGROUP 의 Free_MB가 236이다. - RECO DISKGROUP에서 ARCHIVE LOG가 249G를 차지하고 있다. State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usab..

Maria Replication 모니터링 ( feat. Zabbix ) [내부링크]

고객으로부터 Maria Replication이 깨졌을 때 Alerting이 오도록 구성 요청을 받아서 테스트하게 되었다. Zabbix Server 설치 2021.11.22 - [Open Source 툴] - 오픈소스 모니터링 Zabbix 5.0 설치 오픈소스 모니터링 Zabbix 5.0 설치 Zabbix는 시스템, DB, Network등 여러 지표를 이용하여 사용자에게 서버의 상태를 보여주는 오픈소스 모니터링 솔루션이다. 주요 특징으로는 중앙 집중형 모니터링, 분산 모니터링 지원 다수의 플랫 yunhyeonglee.tistory.com 테스트 서버 정보 Public IP Private IP Zabbix Server 49.50.160.212 192.168.100.113 mysql002 ( Slave..

[ PostgreSQL ] Wal-g Backup ( Cloud ObjectStorage ) [내부링크]

현재 고객사에서 사용하고있는 wal-g Backup Opensource 관련하여 작성할예정이다. WAL-G는 PostgreSQL, MySQL/MariaDB 및 MS SQL Server(MongoDB 및 Redis용 베타)용 아카이브 복원 도구입니다. WAL-G는 몇 가지 주요 차이점이 있는 WAL-E의 후속 제품입니다. WAL-G는 Postgres용 LZ4, LZMA 또는 Brotli 압축, 다중 프로세서 및 비독점적 기본 백업을 사용합니다. https://github.com/wal-g/wal-g GitHub - wal-g/wal-g: Archival and Restoration for Postgres Archival and Restoration for Postgres. Contribute to wal-..

[Maria] Galera Cluster 성능 튜닝 [내부링크]

해당 글의 튜닝은 최소 하루 이상 운영해 본 뒤에 하는것을 추천한다. 병렬 슬레이브 스레드 - 병렬 슬레이브 스레드로 더 성능을 향상할 수 있다. ( 보장을 할 수는 없지만, 나빠지지는 않는다.) - 계산방법은 물리적인 코어 * 4개의 Thread를 두는 것이다. ex ) 서버의 코어가 8코어라면 wsrep_slave_threads 는 32 가된다. - * 이값은 wsrep_cert_deps_distance 값 이상으로는 설정하지 않는다. https://galeracluster.com/library/kb/parallel-slave-threads.html Setting Parallel Slave Threads — Galera Cluster Documentation Setting Parallel Slav..

[ MARIA ] Galera Cluster 구성 [내부링크]

갈레라 클러스터 장점 - 진정한 다중 마스터 : 아무 때나 어떤 노드에서도 읽기와 쓰기가 가능하다. - 동기적 복제 : 슬레이브 지연이 없고 노드 충돌 시에 데이터 손실이 없다. - 일관적인 데이터 : 모든 노드는 같은 상태를 유지한다. - 멀티스레드 슬레이브 : 어떠한 워크로드에서도 더 나은 성능을 가능케한다. - 상시 대기 : 장애 극복 시 downtime이 없다. - 읽기와 쓰기 스필릿이 필요 없다 : 읽기와 쓰기 요청을 스플릿할 필요가 없다. - 자동 노드 복제 : 노드를 추가하거나 유지 관리를 위해 종료 할 때 증분 데이터 또는 기본 데이터를 수동 백업할 필요 없시 Galera Cluster는 자동으로 온라인 노드 데이터를 가져온다. 갈레라 클러스터 단점 - 동기적 복제이다 보니 클러스터..

[ Oracle ] Shrink Space 경험 [내부링크]

유지보수하고있는 고객사에서 겪었던 Shrink Space에 대해 포스팅할 예정이다. 같은 Table을 같고있는 운영 유저(Lee) / 개발 유저(Lee2) 의 select count(*) 에서 시간 차이가 발생하고있다는 문의를 받아 진행하게되었다. 두개의 Table의 Row수는 운영유저(Lee)가 2배정도 많았지만 시간은 26배 더 오래걸렸다. 운영유저(Lee) Count 시간 - 4G Table 34011 rows를 조회하는데 26초의 시간이 걸렸다. ##COUNT(*) 26초 걸림 SQL> SET TIMING ON; SQL> select count(*) from T_CPN_PTN_SHP; COUNT(*) ---------- 34011 Elapsed: 00:00:26.72 Table Block ..

[MySQL] MSR ( Multi Source Replication ) [내부링크]

Multi Source Replication이란? MySQL MSR은 기본 Replication구조에서 확장된 개념으로 Binary Log를 기본으로 하여 각각의 마스터를 CHANNEL로 연결하여 Replicate 하는 구조입니다. 각각의 CHANNEL을 통해 Master / Slave 간 연결을 하고, 이 CHANNEL은 Replication 연결에 사용되는 Thread(IO, SQL, Worker 및 Coordinator 등)들을 관리합니다. 사용 용도? 예를 들어서 어떤 시스템이 공통DB, 메인DB, 로그DB로 구성되어 있고 로그DB는 여러개로 샤딩(Sharding)되어 물리적으로 다른 장비에서 서비스를 하고있다고 생각해 볼 수 있습니다. 그런데 어떤 지표를 보기 위해서 모든 DB에서 한방에..

오픈소스 모니터링 Zabbix 5.0 설치 [내부링크]

Zabbix는 시스템, DB, Network등 여러 지표를 이용하여 사용자에게 서버의 상태를 보여주는 오픈소스 모니터링 솔루션이다. 주요 특징으로는 중앙 집중형 모니터링, 분산 모니터링 지원 다수의 플랫폼 지원(Linux, Windows등등 OS) 네트워크 감시 프로토콜 지원 설정하능한 대시보드 지원 알람기능 지원 사용자 스크립트 사용 가능함 REST API를 지원. https://www.zabbix.com/demoZabbix technical demo videoExplore quick technical overview of Zabbix features.zabbix.com Zabbix technical demo video Explore quick technical overview of Zabbix fea..

[MySQL] MySQL_8.0 Binary Install [내부링크]

MySQL Binary File Download MySQL Commucity 버전으로 다운받기 위해서 아래 링크로 접속 www.mysql.com/products/community/ MySQL :: MySQL Community Edition MySQL Community Edition MySQL Community Edition is the freely downloadable version of the world's most popular open source database. It is available under the GPL license and is supported by a huge and active community of open source developers. The MySQL www.my..

[MySQL / Maria] Innodb_flush_log_at_trx_commit [내부링크]

innodb_flush_log_at_trx_commit 파라미터는 Transaction이 Commit되었을때 디스크에 저장되는 방법을 지정하는 변수이다. 해당 파라미터를 이용해서 Insert 작업 성능을 높일 수 있다. * innodb_flush_log_at_trx_commit = 0 -MySQL 서버에 문제가 생기면 마지막 1초의 Transaction 유실 발생 * innodb_flush_log_at_trx_commit = 1 - Default 값으로 데이터 유실 발생하지 않는다. * innodb_flush_log_at_trx_commit =2 - OS가 crash되거나 파워가 나가면 마지막 1초(혹은 그 이상..)의 트랜잭션이 유실될 수 있습니다. innodb_flush_log_at_trx_com..

[친절한 SQL] NL 조인 [내부링크]

기본 메커니즘 - 아래 사원과 고객 테이블이있다. 이 두 테이블에서 1996년 1월 1일 이후 입사한 사원이 관리하는 고객 테이터를 추출하는 프로그램을 작성해보자 - 일반적으로 NL조인은 Outer(선행)와 Inner(후행) 양쪽 테이블 모두 인덱스를 이용한다. Outer 테이블은 사이즈가 크지 않으면 인덱스를 사용하지않고 Table Full Scan을 하기도한다. Table Full Scan을 하더라도 한번에 그치기 때문이다. 반면 Inner 쪽 테이블은 인덱스를 사용해야 한다. Inner 루프에서는 관리사원번호 INDEX를 읽어야한다. 그렇지 않을시 Outer루프에서 읽은 건수만큼의 Table Full Scan을 반복하게된다. 1. 사원_X1 인덱스에서 입사일자 >= '19960101' 인 첫번째..

[ PostgreSQL] Postgres HA 구성 repmgr ( auto-failover ) [내부링크]

고객사에서 PostgreSQL를 이중화를 원하고 있었다. PostgreSQL 이중화에서 고려해봤던 것들은 Streaming replication + pacemaker를 이용해서 Auto Failover + VIP 이동을 해보려 했으나, 구축 후 장애 포인트가 많아질 것 같아 포기하였다. 다음으로 고려했던 Repmgr를 이용해서 이중화와 VIP 이동을 할 수 있도록 구축하기로 하였다. 이번 글은 Repmgr를 이용한 이중화 & Auto Failover & VIP 이동에 관하여 포스팅할 것이다. 테스트 환경 Master : 10.70.101.69 ( lee-pg001 ) Standby : 10.70.101.70 ( lee-pg002 ) Vip : 10.70.101.68 PostgreSQL 설치 ( A..

[Maria] max_binlog_size 이슈 [내부링크]

언제 한번 이중화로 구성된 고객사에 Lock이 심하게걸리고 문제가 생긴적이있다. 해당 Lock을 해결하고나서 Slave에 상태를 보니 Lock이후부터 따라가지 못하고있는것을 확인하였다. 여러가지 확인을 해보다 Master DB쪽의 binary log의 사이즈가 비정상적으로 컸던적이있다. 나의 예상으론 Binary log에 큰 트랜잭션들이 들어갔고 이 값을 max_allowed_packet 보다 커서 보내지 못한걸로 생각하였다. 나의 경우에는 Mariabackup을 이용해서 Replication을 재설정하였다. 이번에는 문제가 발생했던 영역인 Max_binlog_size 를 작게하였음에도 Binary log 사이즈가 커지는 것을 테스트해볼 생각이다. max_binlog_size 확인 MariaDB [(..

[ Maria ] DB 접근 관리 Aduit_log [내부링크]

MariaDB와 MySQL은 사용자의 액세스를 기록해야하는 경우 이전에는 데이터베이스 솔루션을 사용해야 했다. 그러나 현재는 Audit log 플러그인을 이용해서 액세스 기록을 할 수 있게되었다. 기본적으로 MariaDB Audit 플러그인의 목적은 서버의 활동을 기록하는 것으로, 각 클라이언트 세션에 대해 누가 서버에 접속했는지 ( 사용자 / 호스트 ) 쿼리 내용, 엑세스한 테이블을 기록하는 것이다. MariaDB 감사 플러그인은 MariaDB, MySQL(버전 5.5.34 및 10.0.7 현재) 및 Percona Server에서 작동합니다. MariaDB는 기본적으로 버전 10.0.10 및 5.5.37의 감사 플러그인을 포함하기 시작했으며 MariaDB 5.5.20의 모든 버전에 설치할 수 있습니다 ..

Graylog를 이용한 Syslog 수집 ( 수집 설정 편 ) [내부링크]

Graylog를 설치했다면 원격지 서버에서 Syslog를 수집하기 위해 Graylog를 설정한다. Graylog Input 생성 - Graylog에서 Input을 생성하기 위해서는, 원격지 시스템에서 로그가 생성되고, Graylog로 송신을 해야 한다. - Graylog에서는 해당 송신되는 log를 받아 처리할 수 있는 수신 포트를 설정하여야 하며 보통 syslog 수신을 위한 포트는 UDP 514가 Deault이나 Graylog 서버에서 1024 이하의 TCP/UDP 포트 번호는 권한 오류가 발생하게 된다. - 이러한 이슈를 해결하기 위해 UDP 514 -> 1514 포트로 redirection 되도록 처리한다. 1) System -> Input -> Syslog UDP -> Launch new i..

Graylog를 이용한 Syslog 수집 ( 설치 편 ) [내부링크]

Log 모니터링을 하다보면 5개 정도의 서버의 Log를 보는 거라면 빠르게 볼수있다. 하지만 10대이상가는 서버의 Log를 매일 모니터링을 하다보면 이 시간또한 많은 시간을 들게된다. 현재 맡고있는 서비스는 40대가 넘는 서버의 일일 Log 모니터링을 하고있는데 이런 시간을 줄이기 위해 Graylog를 공부해보고 적용까지 해보려고한다. Graylog - Graylog는 로그메세지의 적재와 조회, 시각화등의 기능외 많은 기능을 제공하는 오픈 소스 로그 관제 솔루션이다. - Graylog Server / Elasticsearch / MongoDB로 구성된다. 이를 통해 애플리케이션으로 부터 전송되는 로그를 거의 실시간으로 구조화하여 적재 할 수 있다. 구조화된 로그가 필요한 이유 - 왜 구조화된 로그..

[친절한 SQL] 중복 인덱스 제거 [내부링크]

실제 개발자들이 인덱스를 생성하다보면 이후에 중복된 인덱스들이 존재할 수도 있다고 한다. 이번에는 인덱스중에서 중복되는 역할을하는 인덱스를 찾아 제거하는 방법에 대해 공부해보았다. 중복 인덱스 찾기 세 인덱스는 중복이다. X02 는 선두컬럼이 X01 인덱스 전체를 완전히 포함하고, X03 인덱스 선두 컬럼이 X01과 X02 인덱스 전체를 완전히 포함하기 때문이다. 필자는 이를 '완전 중복'이라고 부른다. X03 인덱스를 남기고, X01, X02 인덱스는 삭제해도 된다. 1) X01 : 계약ID + 청약일자 2) X02 : 계약ID + 청약일자 + 보험개시일자 3) X03 : 계약ID + 청약일자 + 보험개시일자 + 보험종료일자 중복제거 실습 • PK : 주소ID + 건물동번호 + 건물호번호 + 관..

[Maria] Maria DB Upgrade [내부링크]

오늘은 MariaDB Version을 Upgrade 하는 것에 대해 포스팅할 예정이다. https://mariadb.com/kb/en/upgrading-from-mariadb-101-to-mariadb-102/ Upgrading from MariaDB 10.1 to MariaDB 10.2 How to upgrade from MariaDB 10.1 to MariaDB 10.2. mariadb.com 기존 DB Version : 10.1.45-MariaDB 업그레이드 DB Version : 10.2.12-MariaDB 현재 DB 상태 - Sakila Database를 넣어 두었다. MariaDB [(none)]> show databases; +--------------------+ | Database | ..

[친절한 SQL] Between vs IN-List vs Index Skip Scan [내부링크]

앞서 Between을 IN-List로 바꾸게 되면 성능이 향상되는 경우가 있는 것을 확인해보았다. 이번에는 BETWEEN 조건을 IN-List 조건으로 변환하면 도움이 되는 상황에서 조건절을 바꾸지 않고도 같은 효과를 낼 수 있는 Index Skip Scan을 활용해 볼 것이다. Between을 IN-List로 전환 2021.10.09 - [자격증 준비~] - [ 친절한 SQL] Between을 IN-List로 전환 이번엔 월별고객별 판매 집계 테이블을 생성하고 직접 테스트를 통해 확인해 보자. TEST Data 생성 - 2018년도 1 ~ 12월까지 월별로 10만 개의 판매 데이터가 입력되도록 했다. 판매 구분 값 별로는 'A' 10만 개 / 'B' 110만 개다. SQL> create table ..

[ 친절한 SQL] Between을 IN-List로 전환 [내부링크]

Between 조건절은 IN 조건절로 바꿔주면 큰 효과를 얻는 경우들이있다. 예시 1) 기존 SQL select 해당층, 펑당가, 입력일, 해당동, 매물구분, 연사용일수, 중개업소코드 from 매물아파트매매 where 아파트시세코드 A01011350900056' and 평형 = '59' and 평형타입 = 'A' and 인터넷매물 between '1' and '3' order by 입 력 일 desc 2) IN-List 변환 SQL select 해당층, 평당가, 입력일, 해당동, 매물구분, 연사용일수, 중개업소코드 from 매물아파트매매 where 인터넷매물 in ( '1 ' , '2' , '3 ') and 아파트시세코드 A01011350900056 ' and 평형 = '59' and 평형타입 = '..

[MariaDB] MariaDB Memroy 튜닝가이드 [내부링크]

이번에 MariaDB Galera를 사용하고 있는 고객사에서 Memory 관련 문의가 들어오게 되면서 Memory부분을 공부해보게 되었다. MariaDB Memory 종류 - MariaDB Memory는 두가지로 분류가된다. 모든 세션이 공유하고 사용하는 Global Memory 영역과 각각의 세션들별로 사용되는 Session Memory영역이 있다. Global Memory 영역 DB가 최초 기동되었을 때에는 메모리를 최소한만 사용하다가 설정된 값 까지 증가하며 증가한 이후에는 "메모리를 반환하지 않고" 설정 된 값 이내에서 계속 사용됩니다. (오라클의 경우 DB기동시 설정된 값 만큼 메모리를 할당 받고 올라가는 반면 Mariadb 는 기동시 설정된 메모리 값만큼 할당 받는것이 아닌 설정된 값 ..

[Maria] Thread 모니터링 [내부링크]

Maria & Mysql 모두 Thread 방식의 아키텍처로 설계되어있다. Client가 접속하게되면 Thread를 할당해주고 접속이 종료되면 할당했던 Thread를 회수하게 됩니다. 클라이언트가 접속할 때마다 스레드를 할당하고 제거하는 작업은 MySQL 서버 시스템 입장에서 보면 많은 리소스 낭비 및 성능 저하를 발생시키기 때문에 모니터링은 매우 중요한다. 오늘은 접속 스레드에 대한 모니터링과 튜닝 방법에대해 포스팅하도록 하겠습니다. Status MariaDB [(none)]> show global status like '%threads_%'; - Threads_cached 스레드 캐시에 있는 스레드 수 - Threads_connected 현재 오픈된 스레드 수 - Threads_created 연결..

[Redis] Redis Cache Server 만들기! [내부링크]

아는 선배에게 많은 기업들이 현재 Redis를 이용해서 Cache Server를 사용하고 있다는 말을 듣게 되었다. 해서 이번에는 Redis를 이용한 Cache Server 구축에 관하여 포스팅을 해볼 생각이다. 1.Cache 란? - 파레토 법칙이란 80퍼센트의 결과는 20퍼센트의 원인으로 인해 발생한다는 말입니다.- cache가 동작 할 수 있는 철학에는 파레토 법칙이 있습니다.- Cache란 자주사용되는 데이터를 미리 올려놓는 저장소를 말한다. 쉽게 말해 사용자들은 원하는 데이터를 저장하고 나중에 요청이 오면 DB / API를 참조하지 않고 Cache를 접근하여 요청을 처리하게 된다. - Cache 구조 1 ( Look aside Cache ) 일반적으로 많이 사용되는 패턴 - Cache 구조 2..

[Redis] Redis 설치 [내부링크]

많은 회사들이Database cache server용으로 Redis를 이용한다는 말을 듣고 Redis에 대해 공부해보기로 하였다. 오늘은 간단한 Redis 설치 과정에대해 포스팅해야지.. 1. Redis란? - 레디스는 Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 Opensource 비 관계형 데이터베이스이다. - 레디스는 모든 데이터를 메모리에 로드해 처리하는 메모리 기반 DBMCS이다. - 데이터 구조로는 String / List / Set / Sorted Set / Hashes를 지원하고 있다. - 많은회사에서 사용되고있으며 안전성 이나 성능면에서 검증된 Database이다. 2. Redis 설치 1) 패키지 설치 - Redis를 설치하기전에 Compile할시 필요한 패키지 설치..

[MariaDB] MSSQL DBLINK ( Using Connection Engine ) [내부링크]

오늘은 MariaDB에서 MSSQL로의 DBLINK에 관하여 글을 쓸 예정이다. 최근 고객사에서 MariaDB에서 MSSQL로 DBLINK를 맺어달라 문의를 받아서 해보게 되었다. MariaDB의 Connect Engine을 이용해서 DBLINK을 맺을 예정이다. 0. Connect Engine? - Connect Storage Engine은 MariaDB 10.2 부터 반영되었다. - MariaDB에서 외부 로컬 또는 원격 데이터를 액세스할 수 있게 해주는 Storage Engine이다. - ODBC,JDBC를 통해 다른 DBMS 또는 제품(Excel)에서 추출한 데이터를 액세스 할 수 있다. - Connect Stroage Engine은 테이블 파티셔닝, MariaDB 가상 칼럼을 지원하며 ROWID..

[MARIA] Maxscale Replication [내부링크]

기존 MariaDB를 Replication을 걸어두고 윗단에 Maxscale을 두어서 Auto Failover / VIP 접근 / READ & WRITE 분산을 테스트 해보았다. 아직까지 Replication에서 쓰고있는 고객들은 보지 못하였지만 나중을 위해 테스트해본 것을 기록하였다. 0.TEST 환경 Master 172.40.40.189 Slave 172.40.40.188 Maxscale 172.40.40.187 1.MAXSCALE 설치 ** 1.필요 library 설치 ** [root@maxscale ~]# yum -y install libcurl libaio openssl gnutls libatomic ** 2.Maxscale 유저 그룹 생성 ** [root@maxscale ~]# groupadd..

[ Oracle ] Select절 Function 튜닝 [내부링크]

오늘은 고객사에서 문의가 들어왔던 Query 튜닝 관련하여 글을 쓸예정이다. 고객사는 기존에 쓰던 Query에 Function이 들어가게되면서 속도저하가 일어나게되었고 튜닝을 해달라고 하였다. TEST환경을 만들어 재구현을 해볼 예정이다. TEST DATA 생성 - 우선 TEST TABLE / Function을 만들었다. ** 1.TEST DATA 생성 ** SQL>CREATE TABLE MAXTEST(COLA VARCHAR2(20), COLB NUMBER, COLC NUMBER, COLD VARCHAR2(30), COLE VARCHAR2(30), COLF VARCHAR2(30), COLG NUMBER, COLH VARCHAR2(30), COLI VARCHAR2(30), COLJ VARCHAR2(30))..

[ Oracle ] 필수 Background Process [내부링크]

오늘은 Oracle Database에서 필수적으로 필요한 Background Process에 대해서 글을 써볼 생각이다. Oracle 필수 Background Process는 Oracle Server가 시작되면서 함께 시작되고 Oracle Server가 종료되면 같이 종료된다. * 필수 Background Process중 하나가 죽게되면 Oracle Server는 죽게된다. DBWR ( Database Writer ) - DBWR은 Database Buffer-Cache에서 변경 완료후 저장되어야하는 블록 ( Dirty Block )을 데이터 파일로 저장하는 역할을 한다. - DBWR은 기본적으로 DBW0 하나가 작동을 하지만 I/O가 많이 추가로 더 필요한 경우 DBW1 ~ DBW9를 동시에 사용하여 ..

[ORACLE] Full Table Scan 이해하기 [내부링크]

테이블의 데이터를 읽는 방식으로는 크게 Full Table Scan, Index Range Scan으로 나뉜다. 일반적으로 Full Table Scan은 느리다고 생각되어 쓰지 않으려고 하는 경향이 있다. 하지만 DW 용도로 Database를 사용하는 경우 Full Table Scan이 필수적으로 사용되는 경우가 있다고 한다. 그래서 이번에는 Full Table Scan에 대해 공부해보려고한다. FULL TABLE SCAN (FTS) 1) FTS이 발생하는 경우 상황 설명 적용 가능한 인덱스가 없는 경우 적용할 인덱스가 있지만 칼럼 가공, 연산으로 인해 인덱스 사용이 불가능할때 넓은 범위의 데이터 액세스 인덱스 처리 범위가 넓어 전체 테이블 스캔이 더 적은 비용이 들경우 Tull Table Scan을 적..

[MySQL] Connection 파라미터 설정 [내부링크]

오늘은 MySQL Database Parameter 중 Connection 관련 파라미터에 대해 글을 써보겠습니다. MySQL 은 서버에 동시에 접근하는 최대 클라이언트 수를 제어할 수 있다. 서비스를 하다 보면 느려지는 경우가 있는데 그중에 하나로 서버 스펙에 비해 과도하게 클라이언트가 붙게 되어 발생하는 경우도 있다. 이를 방지하기 위해서는 서버의 스펙에 맞게 동시에 접근하는 클라이언트 수를 제한할 필요가 있다. 1.Variables 1. max_connections 파라미터는 최대 동시 클라이언트 연결 수를 제한하는 파리미터 이다. - dynamic parameter - Default Value : 151 - Min : 1 - Max Value : 100000 2. wait_timeout 파라미터는..

[PostgreSQL] PostgreSQL 정합성 확인!! [내부링크]

Database를 이관을 하게 되면 이관 이후에 ASIS와 TOBE Database의 크기나 Object Count를 확인하는 절차를 거치게 된다. 아래 스크립트를 돌림으로써 옮겨지지 않은 Object들을 확인하고 옮겨지지 않은 것들이 있다면 재이관을 진행할 수 있다. PostgreSQL 정합성 스크립트 #!/bin/bash user=postgres tablecount=0 indexcount=0 viewcount=0 triggercount=0 procedurecount=0 functioncount=0 echo "*******************************************************" echo "* *" echo "* DATABASE SIZE *" echo "* *" echo ..

[ORACLE] KILL SESSION [내부링크]

오늘은 Oracle Session Kill에대해 글을 써보도록하겠습니다. Database를 운영하다보면 특정 Session 을 Kill해야 하는일이 생기게된다. 자주 발생하는 예로는 Lock이 발생하였을때 Lock 을 유발시킨 Session을 Kill하게 됩니다. Session 확인 USERNAME이 LEE인 USER의 SID,SERIAL#을 확인하였다. SQL> select username,sid,serial#,status from v$session where username='LEE'; USERNAME SID SERIAL# STATUS ------------------------------ ---------- ---------- -------- LEE 191 5 INACTIVE Session KILL..

[MySQL] MySQL User 생성 & 권한 부여 [내부링크]

MYSQL SERVER를 사용하다 보면 고객사에서 DB USER를 생성해달라는 요청이 가끔 올 때가 있다. 오늘은 MYSQL SERVER에서 USER를 생성하고 권한부여 / 회수에 대해 써볼 생각이다. User 생성 # CREATE USER 'USER명'@'HOST' IDENTIFIED BY 'PASSWORD'; # CREATE USER 'LEE'@'192.168.0.%' IDENTIFIED BY 'LEE'; * host는 클래스나 특정 IP로 설정 할수 있으면 해당 host의 IP만 LEE User로 접속이가능하다. # select user,host from mysql.user; +---------------+-------------+ | user | host | +---------------+----..

[Oracle] Oracle Cloud ATP 생성 & 접속 방법 [내부링크]

오늘은 Oracle Cloud에서 제공하고 있는 PasS 상품인 ATP에 대해서 써 볼 생각이다. 고객사에서 ATP로 Database를 이관후 Query 성능 Test를 원하고 있어 진행해 보았다. ATP란 ? ATP는 OCI에서 제공하는 완전 관리형 상품( PasS )이다. 이 서비스는 데이터베이스의 프로비저닝, 구성, 튜닝, 확장, 패치, 암호화 및 복구를 자동화합니다. 또한 이 서비스에는 Real Application Clusters(RAC), 다중 테넌트, 파티셔닝, 인 메모리, 고급 보안, 고급 압축과 같은 Oracle의 고급 데이터베이스 옵션이 모두 포함됩니다. 자율 운영 자동 프로비저닝 내결함성과 가용성이 뛰어난 데이터베이스를 몇 분 안에 배포합니다. 자동 확장 다운타임 없이 성능 및 처리량..

Slow Query 분석 Website [내부링크]

오늘은 MySQL / Maria DB의 Slow Query를 분석해주는 Website 추천드립니다. https://www.slowquerylog.com/analyzer Meta Tags — Preview, Edit and Generate With Meta Tags you can edit and experiment with your content then preview how your webpage will look on Google, Facebook, Twitter and more! metatags.io - 해당 WebSite에 들어가면 Slowquery가 몇번실행되고 걸린 시간 평균등을 확인 할 수 있다.. - 해당 버튼을 클릭하고 SlowLog Query 파일을 올려 놓는다. - SlowQuery L..

[PostgreSQL] PostgreSQL + Repmgr 이중화 + pgpool (1) [내부링크]

고객사에서 PostgreSQL 이중화 요청이 들어와 구성하게 되었다.... PostgreSQL에서 기본적으로 제공하는 이중화도 있지만 Repmgr을 이용하여 이중화 및 오토 페일오버 설정을 할 예정이다. 또한 Database에 pgpool을 이용해 유저들이 접속하게하여 Write Transaction은 master에 select transaction은 Slave로 보내게 할 예정이다. 이번 PostgreSQL + Repmgr 이중화 + pgpool (1) 에선 Repmgr을 이용한 이중화와 Autofailover까지 진행해볼 생각이다. pgpool을 이용한 Readwrite split은 다음에 설정하기로.. 목차 0) 사전 환경 1) PostgreSQL 설치 2) Repmgr을 이용한 PostgreSQL..

MySQL 백업 & 복구 ( mysqldump ) [내부링크]

오늘은 Mysql 를 백업 복구할때 사용하는 mysqldump에 관련해서 써 볼 생각이다. - mysqldump 클라이언트 유틸리티는 논리적 백업을 수행하여 기존 DB 개체 정의 및 테이블 데이터를 복제하기 위해 실행하기 위해 실행할 수 있는 SQL문을 생성합니다. 백업 또는 다른 SQL 서버로 전송하기 위해 하나 이상의 MySQL DB를 덤프 합니다. mysqldump 명령은 CSV, XML 등으로 생성할 수도 있습니다. [장점] 1. dump 파일을 보고 직접 SQL 구문을 확인 & 수정할 수 있다. 2. mysqldump는 많은 옵션을 가지고 있어 잘 활용한다면 좋은 유틸리티이다. [단점] 1.다른 백업 유틸리티에 비해 속도가 느리다. 2.Dump 중 에러가 발생한다면 처음부터 다시 시도해야 된다...

[MySQL] RENAME DATABASE [내부링크]

0.사전환경 OS : Cent 7.7 Database : MySQL 5.7 [root:LEE:/root > cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) [root:LEE:/root > mysql --version mysql Ver 14.14 Distrib 5.7.33, for linux-glibc2.12 (x86_64) using EditLine wrapper 1. TEST Database Download & Import - github에서 테스트 데이터를 다운로드하여 Import합니다. 간단하게 Employees Database만 Import Github에서 Test 데이터를 받아오기 위해서 git 설치 하였습니다. git 없이 https..

[ORACLE] Oracle Cloud Rman Recovery Table ( 테이블 복구 ) [내부링크]

RMAN 백업에서 테이블 및 테이블 파티션 복구 목적 - RMAN을 사용하면 나머지 데이터베이스 개체에 영향을 주지 않고 하나 이상의 테이블 또는 테이블 파티션을 지정된 시점으로 복구할 수 있습니다. 이전에 생성한 RMAN 백업을 사용하여 테이블과 테이블 파티션을 지정된 시점으로 복구할 수 있습니다 테이블 및 테이블 파티션을 복구하는 데 필요한 백업 - 테이블 또는 테이블 파티션을 복구하려면 UNDO, SYSTEM, SYSAUX, 및 테이블 또는 테이블 파티션이 포함된 테이블스페이스 의 전체 백업이 있어야 합니다. RMAN 백업에서 테이블 및 테이블 파티션 복구의 제한 사항 1. SYS스키마에 속한 테이블 및 테이블 파티션 은 복구할 수 없습니다. 2. 테이블과에서 테이블 파티션 SYSTEM과 SYSAU..

MySQLTunner.pl - MySQL 성능 진단 툴 [내부링크]

MySQLTunner 는 MySQL 설치를 빠르게 검토하고 성능과 안전성을 높이기 위해 조정할 수 있는 Perl로 작성된 스크립트이다. 현재 구성 변수 및 상태 데이터가 검색되어 몇가지 기본 성능 제안 함께 간단한 형식으로 표시된다. MySQLTuner 는 이 마지막 버전에서 MySQL/MariaDB/Percona Server에 대해 ~300개의 표시기를 지원합니다. 0.사전 환경 OS : CentOS 7.7 Database : MySQL 5.7 [root:LEE:/root > cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) mysql> status -------------- mysql Ver 14.14 Distrib 5.7.33, for li..

Query Cache [내부링크]

- Query Cache에 결과가 없을때 [Query Parsing] → [Optimization] → [Execution] 등 일련의 과정을 거칩니다. - Query Cache에 존재 Query Cache가 활성화되었으면, Query Cache안에 이전에 실행했던 Query가 존재한다면 위 과정 없이 바로 Query Cache에서 결과를 보내줍니다. - Query Cache 제약사항 * SELECT SQL_NO_CACHE ... * SELECT ... INTO OUTFILE ... * SELECT ... INTO DUMPFILE ... * SELECT ... FOR UPDATE * SELECT * FROM ... WHERE autoincrement_column IS NULL * SELECT ... LO..

Maria DB Binary Install [내부링크]

Maria Binary Install Maria DB나 MySQL DB는 설치하는데 있어 크게 차이가 없다. 0.MariaDB Binary 파일 - maria DB는 아래 사이트에서 OS별로 다운로드 가능 https://downloads.mariadb.org/ 1.User 생성 [root@mariadb ~ ] groupadd mysql [root@mariadb ~ ] useradd -g mysql mysql 2.MariaDB Directory 생성 & tar 풀기 & 심볼릭 링크 설정 [root@mariadb ~] mkdir -p /maria/sw/ [root@mariadb:/maria/sw] tar -zxvf /media/mariadb-10.2.12-linux-x86_64.tar.gz [root@mar..

MySQL 과도한 CPU 사용 Thread 확인 ( Pidstat ) [내부링크]

0.사전준비 sysstat 설치 yum -y install sysstat 1.대량의 Insert 준비 - 많은량의 CPU를 사용하게 하기 위해 Insert Procedure를 실행시킨다. ##Table 생성 MariaDB [test]> use test; MariaDB [test]> drop table if exists tes0t_bak; MariaDB [test]> create table test_bak (a int primary key,name varchar(10),test varchar(100),Address varchar(500)); ## Procedure 생성 MariaDB [test]> drop procedure if exists PInsert; DELIMITER $$ CREATE PROCEDU..