본문 바로가기
반응형

MySQL99

Mysql Explain 알고 사용하기 EXPLAIN에는 3개의 행이 있는데, 각각 테이블로의 접근을 표시한 것이다. 조인은 위에서부터 순서대로 일어난다고 생각하면 된다. 1. table 어떤 테이블에 대한 접근을 표시하고 있는지는 table 필드에 표시되어있다. 따라서 이 쿼리를 실행하면 Country -> City -> CountryLanagueage 순으로 조인하는 것을 알 수 있다. 2. id id는 SELECT에 붙은 번호를 말한다. MySQL은 조인을 하나의 단위로 실행하기 때문에 id는 그 쿼리에 실행 단위를 식별하는 것이다. 따라서 조인만 수행하는 쿼리에서는 id는 항상 1이 된다. 3. select_type select_type은 항상 SIMPLE 이된다. 복잡한 조인을 해도 SIMPLE이 된다. 서브쿼리나 UNION이 있으면.. 2021. 5. 17.
MySQL Error_code : 1756 slave_parallel_workers Yesterday I found a strange problem with a database online, and here I recorded the problem discovery and processing. R&D colleagues reported that the data in a database has not been updated since 19:44 (the online service from the library is not applicable, only offline query and statistical data use). But log in to the slave library to find that the master-slave synchronization is normal, the .. 2021. 5. 10.
Mysql : Login-path 설정으로 로그인하기 1. 개요 mysql을 command line에서 로그인을 하려면 "mysql -u 로그인명 -p DB명" 이런식으로 입력하고, 바로 패스워드를 묻고 입력하면 로그인이 된다. 그러나 shell script 등에서 이용하려면 pw 입력때문에 사용하기가 불편해진다. 또는 위의 커맨드에 pw를 노출해야한다. 이럴때에 자동으로 로그인을 할 수 있도록 하는 명령이 바로 login-path 이다. 2. 생성 $ mysql_config_editor set --login-path=설정이름 --host=주소 --user=아이디 --port=포트 --password Enter password: ***** 3. 확인 $ mysql_config_editor print --login-path=설정이름 [myroot] user .. 2021. 4. 29.
log_slow_slave_statements 3. Admin 관련 명령어 혹은 slave 의 sql_thread 에 의해 실행된 명령어중 long_query_time 이상으로 실행된 명령어를 찾는다. log_slow_admin_statements (default : OFF) - http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_log_slow_admin_statements log_slow_slave_statements (default : OFF) - http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#sysvar_log_slow_slave_statements 기본적으로 slow queries .. 2020. 10. 19.
MySQL login-path 사용하기 MySQL 5.6 쯤부터 보안문제로 커맨드에 비밀번호를 넣을수 없게되었다. Warning: using a password on the command line interface can be insecure. 기존처럼 커맨드에 비밀번호 넣어서 사용하면 이런 메시지를 보게된다. 이럴때 login-path 옵션을 사용하면 된다. #생성 mysql_config_editor set --login-path=설정이름 --host=주소 --user=아이디 --port=포트 --password user$ mysql_config_editor set --login-path=myroot --host=localhost --user=root --port=3306 --password Enter password: ***** #확인 m.. 2020. 9. 29.
MySQL/MariaDB InnoDB(Storage) buffer pool 모니터링 MySQL/MariaDB에서는 다양한 스토리지 엔진을 지원하며 각 스토리지마다 특성 또한 다르다. 각 스토리지 엔진에 대한 특성은 아래 링크를 참고 한다. · Comparison of MySQL database engines : https://en.wikipedia.org/wiki/Comparison_of_MySQL_database_engines 이번 포스트에서는 일반적으로 OLTP 서비스에 많이 사용하는 InnoDB 스토리지 엔진에서 buffer pool(버퍼풀)과 관련한 모니터링 방법에 대해서 알아본다. 아래 스크립트를 실행 하면 InnoDB의 buffer pool에 대한 값을 확인할 수 있다. Show status where variable_name like ‘innodb_buffer%’; Vari.. 2020. 9. 21.
innodb_flush_log_at_trx_commit = 2를 사용하는 것이 안전할까? 최대 1 초 분량의 트랜잭션을 잃을 수 있습니다. 기본값은 1이며 InnoDB ACID 준수를 유지하는 데 도움이됩니다 . innodb_flush_log_at_trx_commit 의 MySQL 문서에 따르면 innodb_flush_log_at_trx_commit의 값이 0이면 로그 버퍼가 초당 한 번 로그 파일에 기록되고 디스크로 플러시 조작이 로그 파일에서 수행되지만 트랜잭션 커미트에서는 아무것도 수행되지 않습니다. 값이 1 (기본값)이면 각 트랜잭션 커밋에서 로그 버퍼가 로그 파일에 기록되고 디스크로 플러시 작업이 로그 파일에서 수행됩니다. 값이 2 인 경우, 커밋 할 때마다 로그 버퍼가 파일에 기록되지만 디스크로 플러시 작업은 수행되지 않습니다. 그러나 값이 2 인 경우에도 로그 파일의 플러시가 초.. 2020. 8. 25.
DB 이중화 솔루션 장단점 비교 MMM ( Multi-Master replication Manager for MySQL ) Multi-Master의 단점을 보완하기 위해서 Manager 장비를 두어 가용성 보장(모니터링) read/write DB와 read DB로 운영 중 Read/write DB에서 장애 발생 시 Manager DB가 이를 감지하여 vip를 read DB로 이동시키는 구조(Failover) 3rd party 제품으로 운영환경에 맞게 shell script 프로그래밍이 필요 MMM 작동순서 Active Master에 장애 발생시 MMM Manager는 장애를 감지하고 Active Master의 접속을 차단(Virtual IP Down)하고 Passive Master로 서비스의 접속(Virtual IP up)을 넘김 FA.. 2020. 5. 18.
MySQL slow query 를 효율적으로 이용해보자! MySQL slow query 를 효율적으로 이용해보자!개요MySQL 은 slow query 를 사용하여, 많은 정보를 얻어낼 수 있다. 하지만, 해당 기능들이 default 로 OFF 로 되어 있어 그냥 지나가는 경우가 많다. slow query 관련한 기능들을 알아보자. Slow query 파일은 쿼리를 튜닝하는데 아주 중요한 요소로 작용하지만, 5.. 2020. 5. 12.
MySQL InnoDB lock & deadlock 이해하기 대규모의 많은 요청이 동시에 들어오는 데이터베이스(Database, DB) 어플리케이션의 경우 데이터의 정합성을 유지하면서 최대한 동시성을 높이는 것이 매우 중요한 포인트이다. MySQL InnoDB 엔진의 경우 상황에 따른 여러가지 락(Lock)을 통해서 동시성을 제어하며 이를 통해서 사용자가 설정한 .. 2020. 3. 10.
프로시져별 트랜잭션 테스트 프로시져별 트랜잭션 테스트 DROP TABLE radio_room_list; CREATE TABLE radio_room_list ( reg_no INT(11) NOT NULL DEFAULT 0 COMMENT '고유번호', upd_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '변경일자', PRIMARY KEY (reg_no) ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='임시테이블'; DELIMITER $$ USE `DB_NAME`$.. 2020. 1. 16.
Optimize MySQL table_open_cache table_definition_cache System VariableNametable_definition_cacheVariable ScopeGlobalDynamic VariableYesPermitted ValuesTypeintegerDefault-1 (autosized)Min Value400Max Value524288The number of table definitions (from .frm files) that can be stored in the definition cache. If you use a large number of tables, you can create a large table definition cache to speed up opening of t.. 2019. 12. 17.
MySQL InnoDB의 메모리 캐시 서버로 변신 꽤나 오래전의 일이었습니다. MariaDB에서 Handler Socket이 들어간 이후 얼마 후인 것으로 기억합니다. MySQL lab버전에 memcached plugin 기능이 추가되었고, memcache protocal로 InnoDB 데이터에 직접 접근할 수 있는 길이 열린 것이었죠. (아마도 거의 8년 정도 전의 일이었던 것같은..) 아무튼 당시, 이것.. 2019. 12. 5.
[MySQL] 프로시저(스토어드 프로그램)의 장단점 1. 스토어드 프로그램이란? MySQL에서는 절차적인 처리를 위해 스토어드 프로그램을 이용할 수 있습니다. 스토어드 프로그램은 스토어드 루틴이라고도 하는데, 스토어드 프로시저와 스토어드 함수 그리고 트리거와 이벤트 등을 모두 아우르는 명칭입니다. 스토어드 프로그램 가운데 스토.. 2019. 11. 26.
Mysql percona 5.7 Innodb utf8mb4 init_connect command failed 처리 # my.cnf 에 설정 이 있다면 제거하세요 #init_connect = SET collation_connection = utf8mb4_unicode_ci #init_connect = SET NAMES utf8imb4 # 기본 설정 [client] default-character-set=utf8mb4 [mysqld] skip-slave-start character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci innodb_large_prefix=1 데몬 재실행후에 접속하면 정상 연결됩니다. 참.. 2019. 11. 11.
MySQL의 replication 방법 그렇다면 MySQL 복제 란 무엇입니까?복제는 소스 환경의 트랜잭션을 기반으로 한 위치에만 저장되는 대신 정보가 다른 환경에 복사되고 의도적으로 채워지는 것을 보장합니다. 이를 위해서는 인프라에서 보조 서버를 사용하여 읽기 또는 다른 관리 솔루션을 사용하는 것이 좋습니다. 아래 .. 2019. 10. 10.
MySQL 데이타베이스와 계정 생성하기 MySQL 데이타베이스와 계정 생성하기.utf8 mysql 5.7 이상은 Create User 구문 사용MySQL 5.7 이상CREATE DATABASE homestead CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER 'homestead'@'localhost' IDENTIFIED BY 'secret' PASSWORD EXPIRE NEVER;GRANT ALL PRIVILEGES ON homestead.* TO 'homestead'@'localhost'; flush privileges;MySQL 5.7 미만CREATE DATABASE homestead.. 2019. 3. 13.
Mysql 5.7 log_warnings log_warnings PropertyValueCommand-Line Format--log-warnings[=#]Deprecated5.7.2System Variablelog_warningsScopeGlobalDynamicYesTypeIntegerDefault Value (64-bit platforms, >= 5.7.2)2Default Value (64-bit platforms, <= 5.7.1)1Default Value (32-bit platforms, >= 5.7.2)2Default Value (32-bit platforms, <= 5.7.1)1Minimum Value0Maximum Value (64-bit platforms)184467440737.. 2019. 2. 7.
MySQL Galera Replication MySQL Galera Replication 조대협 (http://bcho.tistory.com) RDBMS 오픈소스 중에서 단연 가장 많이 사용되는 것은 MySQL인데, 근래에 웹 스케일이 커지면서, 단일 인스턴스로만 서비스가 불가능한 용량까지 가게 되서, 이 MySQL에 대한 클러스터링 스케일링에 대한 이슈가 많아졌다. 이에 Tungsten, MySQL Replicati.. 2018. 12. 12.
MySQL 원격 증분 백업 – Percona XtraBackup MySQL 원격 증분 백업 – Percona XtraBackup # Percona XtraBackup 소개 이미 예전에 XtraBackup을 간단하게 소개한 글을 썼었는데 그 글의 내용만으로는 XtraBackup을 실무에 쓰기에 턱없이 부족하다. 그래서 이번에는 XtraBackup을 제대로 쓸 수 있는 문서를 만들었다. 일반적으로 MySQL 백업으로 mysqldump를 사용하는데 매번 전체를 백업하는 방식이므로 데이터가 커질수록 백업에 걸리는 시간이 길어지고 부담이 커진다. 뿐만 아니라 백업된 데이터를 복구하는데도 무척 긴 시간을 필요로 한다. 하지만 XtraBackup을 사용하면 마지막 백업으로부터 변경된 사항만 이어서 백업하는 증분 백업이 가능하다. XtraBackup은 MySQL의 데이터 디렉토리 .. 2018. 12. 12.
반응형