본문 바로가기
반응형

Database331

MySQL 이란? MySQL은 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템이다. (RDBMS) MySQL은 오픈소스이며, 다중 사용자와 다중 스레드를 지원한다 C, Cpp, JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공한다. MySQL은 윈도우, 리눅스 등 다양한 운영체제에서 사용가능하며 Apache, PHP 와 함께 웹 개발에 자주 사용된다. APM의 M MySQL or (MariaDB) 등 Apache, PHP와 호환성이 좋기에 사용한다 MySQL은 오픈 소스 라이선스를 따르지만, 상업적 이용시 상업라이센스를 필히 구매하여야 한다. DataBase(데이터베이스) 데이터베이스란? 데이터의 저장소 또는 통합하여 관리되는 데이터의 집합체를 의미한다. 중복 데이터 제거, 자료 구조화, 효.. 2022. 11. 8.
MariaDB buffer_pool_size 변경 공식 메뉴얼 mariadb 공식문서 mysql 공식문서 참고사항 버퍼풀 사이즈는 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 이여야 한다. 하지만 mariadb는 innodb_buffer_pool_instances 값이 1로 고정이므로, 버퍼풀 사이즈는 innodb_buffer_pool_chunk_size의 배수가 되어야 한다. 딱 맞게 변경하지 않으면 버퍼풀사이즈가 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 배수에 맞게 조절된다. 또한 성능이슈를 위해서 chunk의 갯수 (innodb_buffer_pool_size / innodb_buffer_pool_chunk_size)는.. 2022. 11. 1.
Federated(X) tables stop & restart 안되는 문제점. 안녕하세요 . Federated(X) tables stop & restart 안되는 문제점이 있는데요. 이 문제는 해당 Federated Table open 된 상태에서 Server Stop & Restart 안되는 지연되는 문제가 발생하였습니다. 해당 문제의 경우 다음부분을 추가해서 해결이 가능합니다. 1. 데몬 다운전 flush tables 실행 2. Server Stop & Restart # 관련 내용이 있어서 추가적으로 등록합니다. https://jira.mariadb.org/browse/MDEV-20948 [MDEV-20948] Federated(X) tables stop working after every server restart - Jira This issue happens when the.. 2022. 10. 26.
federated got an error reading communication packets 안녕하세요. Mysql federated Engin 사용을 하면서 발생하는 에러중 하나로 해결 내용 공유 하겠습니다. 해당 에러 메시지는 커넥션 연결이 해제 되면서 발생되는 에러 메시지로 해결 방법은 접속하는 서버의 wait_timeout 설정을 변경해주면 해결이 됩니다. interactive_timeout = 6000; wait_timeout = 3600; 설정 변경 이후 정보 갱신에 문제가 있다면 Qeury cash 부분도 확인이 필요하지만 기본적으로 timeout 설정만으로 해결이 가능합니다. 풀을 이용하지만 해당 federated 테이블의 접속에 의한 네트워크 해제가 발생하므로 해당 부분설정으로 해결해보세요. 감사합니다. 2022. 9. 29.
MariaDB FEDERATED 엔진 사용 시 보안 issue 지난 글에서 FEDERATED 엔진을 간단히 살펴보았는데 해당 글에서 소개한 MariaDB [(none)]> create table fed_test_local.fed_test_local ( num int) -> engine=federated connection='mysql://test:test123@11.11.111.111:1111/fed_test_remote/fed_test_remote'; 구문으로 생성 시 원격지 서버 접속정보가 노출 되는 보안 취약점이 있습니다. 이번 글에서는 보안 취약점과 해결방법에 대해 알아보겠습니다. 1) 원격지 테이블 생성 mysql> create table fed_test_remote.fed_test_remote ( num int); Query OK, 0 rows affec.. 2022. 9. 6.
[Database] 리플리케이션(Replication) vs 클러스터링(Clustering) 리플리케이션과 클러스터링 비교를 잘해놓은 글이 있어서 스크랩해왔습니다. 1. 리플리케이션(Replication)이란? [ 리플리케이션(Replication)이란? ] 리플리케이션이란 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식이다. 리플리케이션에서 Master Node는 쓰기 작업 만을 처리하며 Slave Node는 읽기 작업 만을 처리한다. 리플리케이션은 비동기 방식으로 노드들 간의 데이터를 동기화하는데, 자세한 처리 방법은 아래와 같다. [ 리플리케이션(Replication) 처리 방식 ] 위의 그림은 MySQL의 Replication 방식에 대한 그림이며 자세한 처리 순서는 아래와 같다. Master 노드에 쓰기 트랜잭션이 수행된다. Master 노드는 데이.. 2022. 8. 31.
[MariaDB] Mariabackup을 이용한 증분 백업 안녕하세요. Mariadb 백업 복원시에 복원이 잘안되는경우를찾아보니 백업시기에 따라 변동이 발생하여 증분백업복원을 해야하는경우가 발생합니다. 참고하세요 원본 : https://velog.io/@tkfrn4799/mariadb-mariabackup 개요 사내에서 하루 최소 300백만 건 이상 쌓이는 데이터들을 효율적으로 백업하고자 사용한 방법을 썼습니다. Mariabackup 모듈을 이용한 Master_Database의 데이터 백업 방식을 기술합니다. Mariabackup의 세부 조작 명령어는 MariaDB 문서에서 이미 상세하게 기술하고 있으므로 굳이 작성하지 않았습니다. 대신, 키워드마다 상세 내용을 참조할 수 있는 링크를 걸어 두었으므로 참고하시기 바랍니다 :) 운영 환경 호스트 OS: $ cat .. 2022. 4. 15.
[DB] MySql - InnoDB Engine 사용 시 반드시 알아야 할 3가지 출처 : http://dev.kthcorp.com/2011/06/10/mysql-innodb-engine-3-tips-you-must-know/ Overview MySQL에서 Built-in 제공되는 InnoDB는 DB로 작업을 하시는 분이라면 누구나 한번쯤은 들어본 엔진이라고 생각이 듭니다. 최근 Oracle사가 SUN을 인수한 후 MySQL쪽으로 가장 많이 성능 개선을 하고 있는 부분 또한 InnoDB입니다. 무엇보다 HandlerSocket이나 MySQL 5.6 Memcached Plugin 모두 InnoDB 스토리지 엔진 API과 직접적인 통신을 하여 엄청난 퍼포먼스를 보여주게 됩니다. 이렇게 점차적으로 활용도가 높은 엔진, InnoDBB는 무엇이고 도대체 어떠한 특성을 가지고 있을까요? 여기서 .. 2022. 4. 8.
Table 작성 시 PK를 무조건 추가하라. RDBMS의 Table에서 가장 먼저 고려하는, 개별 행을 검색하는 데 사용할 수있는 고유 한 키(Primary Key)에 대해 정리할 생각입니다. 기본키(Primary Key)는 시스템이 한 테이블에 있는 Row가 다른 Row와 구별되는 무언가를 가져야 하므로 이 역할을 수행할 수 있습니다. 기본키는 한 Row마다 유일해야 하며 NULL이 될 수 없어야 합니다. 기본키가 있어야 하는 이유 기본키가 없으면 일관성 없는 데이터가 반복적으로 쌓일 수 있기 때문에 쿼리 속도가 느리고, 원하지 않는 정보 조회 결과를 가져올 수 있습니다. 관계형 데이터베이스에서는 반드시 각 행이 고유하게 식별되어야 합니다. 이 규칙을 위반하면 더 이상 관계형이 아니며 데이터에서 모호함이 생길 수 있습니다. 아마 다른 사용자가 테.. 2022. 4. 8.
unknown variable 'default-character-set=utf8' 현상 mysqlbinlog 또는 mysqldump 시에 아래와 같은 에러가 발생할 수 있습니다. $ mysqlbinlog mysql-bin.000001 mysqlbinlog: unknown variable 'default-character-set=utf8' 원인 MySQL 5.5.3 부터 default-character-set 이라는 옵션이 없어졌기 때문입니다. mysqlbinlog 프로그램은 기본적으로 my.cnf 를 읽게 되어 있는데 여기에 default-character-set 설정이 있었기 때문에 해당 변수를 이해하지 못하기 때문에 발생합니다. // 5.5.3 Release 내용 The --default-character-set and --default-collation server options.. 2022. 3. 31.
Innodb tableapsce error & 테이블 삭제 안될경우 동일 테이블 구조를 알고 있는 상태에서 테이블 백업본을 이용하여 복구하는건 1. 로그 반영 2. 테이블스페이스 DISCARD 3. 테이블스페이스 IMPORT 이렇게하면 되지만 갑자기 테이블스페이스 연결을 못하고 테이블도 drop이 안될경우가 있는데 이때 테이블을 삭제하고 싶다면 아래 방식으로 하면됩니다. # mysql -uroot -p --skip-auto-rehash # drop table 삭제할테이블명; # rm -f 삭제할테이블명.* > 해당 DB .ibd 파일 등 테이블 정보 삭제 # 참고 내용 --auto-rehashTo complete a name, enter the first part and press Tab. If the name is unambiguous, mysql completes i.. 2021. 10. 18.
MySQL 복제 데몬 재구동시 포시션 맞추기 MySQL Replication 운영도중 Replication이 깨졌을 경우나 복제 서버 데몬 재구동이 필요한경우 포지션을 동기화 해줘야 하는데요. 이때 주의사항등이 있답니다. 만약 포지션 맞추지 않고 데몬을 재구성하고 복제연결만하면 마스터서버의 바이너리 파일을전체를 로딩 해버립니다. 그러면 당연히 틀어지겠죠. 그래서 해당 포지션 위치를 파악해서 맞춰주는게 가장 좋을것 같습니다. 1. 슬레이브 서버의 Replication 위치 확인 mysql> show slave status; 2. 마스터 서버에서 멈춘위치 근처의 쿼리 확인 mysql> show binlog events in '마스터바이너리파일명' from 1023768 limit 3; 3. 해당 쿼리가 필요 없는 쿼리일 경우 mysql> slave s.. 2021. 10. 14.
MySQL MSR Replication 구성 - Multi Source Replication 1. MSR - Multi Source Replication MySQL MSR - Multi Source Replication 는 1개의 Slave(Replica) 서버에 여러개의 Master DB를 연결하여 복제하는 구조로 여러개의 Master DB의 내용을 1곳의 Slave(Replica) 에 모으는 역활을 하게 됩니다.(Multi source 의 구조) MySQL 5.7 에서 추가된 기능으로 통합,백업 , OLAP 및 배치 작업 등에서 유용하게 사용할 수 있습니다. Multi Source Replication(MSR) 의 구성시에는 GTID 기반 복제 와 Binary Log Position 기반 복제 둘다 사용이 가능 합니다. 2. 파라미터 변경 MySQL MSR 구성시 Slave(Replica) .. 2021. 5. 18.
MySQL 5.7 LOGICAL_CLOCK 방식의 Parallel Replication (Multi-Threaded Slave, MTS) 개인적으로 MySQL 5.6 출시에 가장 크게 기대했던 부분은 병렬 복제 기능(MTS, Multi Threaded Slave)이었다. 하지만 이 기능은 특정 상황에서만 적용이 가능한 단점이 있어서, 보편적으로 활용을 하지는 못했었다. 5.6 버전의 병렬 복제 기능은 schema 단위로 개별적인 복제 처리를 하다보니, schema 단위의 트랜잭션 정합성을 맞출 수 없다는 구조적인 문제가 있었으며, schema 개수가 많지 않거나 schema 간 쓰기 부하가 균일하지 않으면 병렬 처리의 장점을 활용할 수가 없기 때문이다. ※ 5.6 버전의 병렬 복제 관련해서 작성했던 포스트 https://blog.naver.com/seuis398/70186283219 하지만 지난 2015년 10월말 출시된 MySQL 5.7.. 2021. 5. 18.
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.
innochecksum — 오프라인 InnoDB 파일 체크섬 유틸리티 innochecksum 은InnoDB파일에대한 체크섬을 인쇄 합니다. 이 도구는InnoDB테이블 스페이스 파일을읽고, 각 페이지의 체크섬을 계산하고, 계산 된 체크섬을 저장된 체크섬과 비교하고, 손상된 페이지를 나타내는 불일치를보고합니다. 원래는 정전 후 테이블 스페이스 파일의 무결성 확인 속도를 높이기 위해 개발되었지만 파일 복사 후에도 사용할 수 있습니다. 체크섬 불일치로 인해InnoDB실행중인 서버가 의도적으로 종료되기 때문에 프로덕션 서버가 손상된 페이지를 만날 때까지 기다리는 것보다이 도구를 사용하는 것이 좋습니다. 서버가 이미 연 테이블 스페이스 파일에는 innochecksum을 사용할 수 없습니다. 이러한 파일의CHECK TABLE경우 테이블 스페이스 내의 테이블을 확인하는데사용해야합니다. .. 2020. 9. 29.
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.
반응형