■ Performance Schema 소개MySQL 성능 스키마는 낮은 수준에서 MySQL 서버 실행을 모니터링하는 기능입니다. 성능 스키마에는 다음과 같은 특성이 있습니다.- 성능 스키마는 런타임에 서버의 내부 실행을 검사하는 방법을 제공합니다. PERFORMANCE_SCHEMA 스토리지 엔진 및 performance_schema 데이터베이스를 사용하여 구현됩니다. 성능 스키마는 주로 성능 데이터에 중점을 둡니다. 이는 메타 데이터 검사에 사용되는 INFORMATION_SCHEMA와 다릅니다.- 성능 스키마는 서버 이벤트를 모니터링합니다. "이벤트"는 시간이 걸리고 타이밍 정보를 수집 할 수 있도록 계측된 서버가 수행하는 모든 작업입니다. 일반적으로 이벤트는 함수 호출, 운영 체제 대기, 구문 분석 ..
shell> sysbench cpu helpsysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)■ SysBench 히스토리 및 아키텍처sysbench는 2004 년 Peter Zaitsev에 의해 만들어졌고 곧 Alexey Kopytov가 개발을 인수했습니다. 버전 0.4.12에서 개발이 중단되었습니다. Alexey는 2016년에 다시 작업하기 시작했습니다. 곧 LUA 기반 스크립트를 사용하도록 OLTP 벤치 마크를 다시 작성하여 버전 0.5가 릴리스되었습니다. 그런 다음 2017 년에 SysBench 1.0이 릴리스되었습니다. 이것은 0.4.12 이전 버전과는 비교할 수 없을 정도로 훌륭하게 만들어졌습니다. 하드코딩된 스크립트 대신 LUA를 사용하여 벤치마크를 사용..
■ 배경 보통 폐쇄망이나 기타 인터넷 접속이 안되는 곳에서 특정 패키지를 설치할때 의존성때문에 설치가 안되는 경우가 있습니다. 또한 apt도 지원이 안되기 때문에 당연히 외부에서 패키지를 가져와야 합니다. 이럴때 사용하는 방법입니다. ■ 명령어 해당 명령어는 다음과 같습니다. $ sudo apt-get reinstall --download-only -y [패키지명] reinstall 외에 install이란 명령어도 있습니다. 그런데 굳이 reinstall을 쓰는 이유는 다음과 같습니다. a라는 패키지를 특정 서버에서 다운로드 하게되면 현재 서버에 설치되어 있는 의존성 패키지는 제외하고 기존에 없는 의존성 패키지만을 다운로드 하게 됩니다. 즉 d라는 패키지를 다운로드 할때 a라는 의존성 패키지가 위의 명령..
Mac에서 가장 유용한 터미널 프로그램을 꼽으라면 두말할 필요없이 Iterm 프로그램을 주저없이 선택할 것입니다. 아마 맥 사용자치고 이 터미널 프로그램을 기본으로 사용하지 않는 사용자는 없을 것입니다.(본인이나 회사에서 유료로 사준 터미널 프로그램이 없는한)또한 oh my zsh라는 터미널을 꾸며주는 프로그램까지 얹어서 사용한다면 자신이 원하는 테마로 꾸며서 더 편리하게 사용할 수 있습니다.여기서는 iTerm설치 방법과 화면분할 방법에 대해서 알아보겠습니다. ■ 설치 방법다운로드 사이트 : https://iterm2.com/ iTerm2 - macOS Terminal ReplacementiTerm2 by George Nachman. Website by Matthew Freeman, George Nac..
MySQL에서 복제 환경을 운영할때 격게 되는 이슈중 이해가 안되는 이슈가 하나가 있는데 바로 네트워크 관련 이슈입니다.이 네트워크 이슈에 대해 알아보겠습니다. 이 네트워크 이슈는 네트워크 관련 파라미터에 대해서 특별히 설정하지 않을 시 시간이 지나고 난 후에야 알게되는 경우가 많습니다.관련하여 이 문제에 대해 한번 알아보겠습니다.■ 상황MySQL서버 자체가 전원이 꺼지가나 문제가 생기면 서버에서 에러 로그가 발생하게 됩니다. 서버에 접속을 할 수 없다는 에러가 나타나게 됩니다. 그러나 마스터에서 네트워크 이슈가 발생하게 되면 MySQL은 인지를 하지 못하고 설정해 놓은 시간동안 대기를 하면서 마스터의 이벤트를 계속 기다리게 됩니다. 이때 이 마스터의 이벤트 대기 시간이 너무 길기 때문에 복제이슈가 발생..
■ PostgreSQL 업그레이드 방법PostgreSQL에서 메이저 버전을 업그레이드 하는 방법은 크게 2가지가 있습니다. • dump 프로그램 이용기존 PostgresQL에서 모든 데이터에 대해서 dump를 받은 다음 기존 엔진을 백업하고, 새로운 엔진을 설치 후 새로운 엔진에 기존에 백업받은 dump파일을 다시 밀어넣는 방법입니다.엔진 설치 시간, 데이터 크기만킁 시간이 소요됩니다. 데이터를 빼내와서 다시 밀어넣는만큼 autovacuum 효과가 있습니다.또한 데이터가 처음부터 입력되기 때문에 단편화 또한 해소되게 됩니다. • inplace 업그레이드pg_upgrade를 이용하는 방법입니다. 기존 엔진에 신규 엔진을 밀어 올리는 방식입니다.간단한 방법이기도 하면서 굉장히 어려운 방법이기도 합니다. 에러..
■ 포트포워딩이란?데이터베이스 서버는 보통 내부망이나 특수한 망에 설치가 됩니다. 그래서 외부에서 보통 접속되지 않고 특정한 앱서버나 접근제어 솔루션에 의해 접속이 됩니다.이외 다른 방법으로 ssh 터널링이나 Port Forwarding방식으로 접속을 하게 됩니다. 이중에서 포트 포워딩에 대해 알아보겠습니다.(꼭 디비가 아니더라도 웹서버나 어플리케이션 서버에서도 이 방법을 통해 접속이 가능합니다.) ■ Port Fowwarding 환경아래와 같은 환경으로 되어 있다고 가정해보겠습니다. ▶︎ 접속 방법사용자는 10.15.11.15의 IP를 가지고 있다고 가정해 보겠습니다. 그리고 6.6.6.6의 퍼블릭 IP를 가지는 서버에 접속을 할때 4306이라는 포트로 접속을 시도합니다. 그럼 중간 서버에서 내부 규..
■ mysqlsh를 이용한 데이터 덤프 및 엑스포트 방법 앞에서 util.dumpTable, util.exportTable 이 2가지를 이용하여 엑스포트 및 로드를 해보았습니다. https://myinfrabox.tistory.com/278 [MySQL] mysqlsh의 util.exportTable, util.importTable를 이용하여 덤프 및 임포트하기 ■ mysqlsh를 이용한 데이터 덤프 및 엑스포트 방법 테이블 엑스포트 및 덤프 방법은 util.exportTable 및 util.importTable을 이용하여 하는 방법이 있습니다. 참고로 util.dumpTable(), util.dumpTable(), util.exportTabl myinfrabox.tistory.com 이번에는 레벨별로 ..
■ mysqlsh를 이용한 데이터 덤프 및 엑스포트 방법 테이블 엑스포트 및 덤프 방법은 util.exportTable 및 util.importTable을 이용하여 하는 방법이 있습니다. 참고로 util.dumpTable(), util.dumpTable(), util.exportTable() 및 util.loadDump을 이용하는 방법이 더 최근의 방법인데 이 방법은 다음에 바로 알아보도록 하겠습니다. 먼저 위의 2가지를 이용하여 테이블 단위로 덤프 및 임포트를 하는 방법에 대해 알아보겠습니다. ■ util.exportTable, util.importTable을 이용하여 데이터 엑스포트 및 임포트를 할시 장점 select... into outfile로 엑스포트 하는것보다 속도가 훨씬 더 빠릅니다. 마찬가..
■ Dynamic Parameter, Static Parameter(동적 파라미터, 정적 파라미터) Static parameter는 시스템에 바로 적용시 문제가 되는 파라미터들이 대부분입니다. 그래서 보통 DBMS 재시작을 요구하며 이때 적용됩니다. MySQL 파라미터는 크게 Dymic Parameter, Static Parameter가 있습니다. 이 다이나믹 파라미터는 현재 운영중인 MySQL DBMS에서 바로 변경이 가능하고 신규 컨넥션부터 바로 변경된 파라미터로 운영이 됩니다. 또한 다이나믹 파라미터는 현재 접속되어 있는 세션에만 적용할수도 있고 전체 파라미터에 설정을 할수도 있습니다. 그러나 한가지 문제가 DBMS를 재시작하게 되면 글로벌로 적용된 파라미터라도 my.cnf 환경파일에 작성되지 않은..
■ MySQL 로그 관리 필요성 MySQL 로그는 기본적으로 하나의 파일이 생성되면 계속 처음에 생성된 파일에 쌓이는 구조입니다. 만약 사용량이 많은 MySQL에서 로그 파일에 대해 그냥 두게 된다면 파일 하나에 몇기가로 쌓일 수도 있습니다. 이는 추후 문제 문석을 해야 할때 파일의 크기가 워낙 크기 때문에 문제가 될 수도 있습니다. 그래서 주기적으로 파일을 절단하여 크기를 관리해 주어야 합니다. ■ 로그 파일 관리 - Logrotate 리눅스 시스템엔 본적으로 로그관리를 해주는 기능이 기본적으로 탑재되어 있습니다. Logrotate라고 불리는 이 기능은 로그관리가 필요한 파일에 대하여 매일, 매주, 월간등등 주기를 정하여 그때마다 파일을 분할(logrrotate)하여 파일을 0바이트 크기부터 시작할 수..
■ 서버 자동 설정 변수(파라미터)MySQL 8.0에는 서버 메모리 환경을 자동으로 설정해주는 파라미터가 있습니다. 이 파라미터에 대해 한번 알아보겠습니다. ▶︎ 변수 확인먼저 서버 변수에 대해 알아보겠습니다.변수명 : innodb_dedicated_server명령라인 형식--innodb-dedicated-server[={OFF|ON}]시스템 변수innodb_dedicated_server범위전역동적여부아니오SET_VAR 힌트 적용아니오형식Boolean(참, 거짓)기본값OFF ▶︎ 자동 설정 변수innodb_dedicated_server가 활성화되면 InnoDB는 자동으로 다음 변수를 구성합니다.• innodb_buffer_pool_size• innodb_redo_log_capacity 또는 MySQL ..
■ 파일오픈갯수의변경및자원사용량변경의필요성리눅스를 설치하면 기본적으로 오픈할 수 있는 File의 갯수가 작습니다. 이게 중요한 이유는 오픈할 수 파일 갯수가 작다면 성능에 제약을 받기 때문입니다.예를 들어 파일 요청파일 갯수가 3000이 들어왔는데 열수 있는 파일이 1000개라면 1000개 이후의 모든 요청은 거절되거나 대기상태로 빠지기 때문입니다.서버의 성능이 어느정도 된다면 기본값보다 값을 늘려 성능을 향상시킬 수 있습니다. ■ Linux의 확인 및 환경 설정서버에서는 file-max 란 시스템 파라미터로 불리며 이것은 한번에 운영할 수 있는 파일수를 의미합니다.보통 4MB 메모리당 256개의 파일을 운용할 수 있다고 합니다. ▶︎ 오픈 가능한 파일 갯수 확인 및 적용 방법• 확인 방법현재 file-..
MySQL 서버 변수중 back_log라는 시스템 변수가 있습니다.이 변수는 MySQL 커넥션 성능과 굉장히 밀접한 관련이 있는데 OS 커널파라미터중 네트워크와 밀접한 관련이 있습니다.이 시스템 변수에 대해 알아보겠습니다. ■ 서버 변수 back_log에 대한 설명MySQL이 가질 수 있는 미해결 연결 요청 수 입니다. MySQL 스레드가 매우 짧은 시간에 매우 많은 연결 요청을 받을 때 작동합니다.그런 다음 메인 스레드가 연결을 확인하고 새 스레드를 시작하는 데 약간의 시간(아주 짧지만)이 걸립니다.back_log 값은 MySQL이 일시적으로 새 요청에 대한 응답을 중지하기 전에 이 짧은 시간 동안 쌓일 수 있는 요청 수를 나타냅니다.단기간에 많은 수의 연결이 예상되는 경우에만 이 값을 늘려야 합니다...
MySQL 5.7 부터 read_only종류가 4가지 종류로 늘어나게 되었습니다.단순히 복제 서버에서 Write를 막기위한 read_only뿐만이 아니라 특수한 read_only 파라미터도 있는데 이것에 대해 알아보겠습니다. ■ innodb_read_onlyinnodb Strage Engine을 사용하는 테이블들에 대해 모두 읽기로만 작동되게 합니다. 기존 5.7 이하 버전에서는 InnoDB Storage엔진을 사용하는 테이블들에 대해서만 삭제나 생성이 불가능했는데 8.0 이상부터는 모든 스토리지 엔진을 대상으로 읽기 상태로 바뀌게 됩니다.참고로 위의 innodb_read_only가 활성화 되면 다음과 같은 명령어들이 실패하게 됩니다.ANALYZE TABLE, ALTER TABLE tbl_name ENG..