본문 바로가기
반응형

MariaDB31

MySQL/MARIADB auto_increment_increment, auto_increment_offset 설정 듀얼 마스터 구성에서 auto_increment 에 대한 에러가 발생하게되는데 이때 시작과 변동폭을 지정해줘야 합니다. Auto_increment 가 2씩 증가해야 대문에 auto_increment_increment 설정이 2로 되어있어서 2씩 증가 하도록설정 하고 또한 시작점을 지정해줘야 2씩 증가를 하겠죠? mysql> SHOW VARIABLES LIKE 'auto_inc%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 2 | | auto_increment_offset | 1 | +-------------------.. 2023. 9. 18.
SQL Injection A1Injection (인젝션)SQL, OS, XXE(Xml eXternal Entity), LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써, 인터프리터로 보내질 때 발생한다. 공격자의 악의적인 데이터는 예상하지 못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있다. Injection은 주입이라는 뜻으로, SQL 언어를 주입하여 해킹을 하는 기법을 뜻한다. 방어방법. Statement 대신, PreparedStatement같이 안전한 구문을 사용한 보안코딩 사용. statement구문을 사용시에는 꼭 컬럼값에 Injection을 유발할 수 있는 '(외따옴표) ;(세미콜론) 같은 DB에서 사용하는 특수문자 값을 제거하여 보안성 강화 그외 .. 2023. 8. 28.
innodb_flush_log_at_trx_commit 알면 쉬워짐. 안녕하세요. 복제 구성을 하고 나서 동기화 지연이 발생하는데 왜 Second 타임이 안잡이지 할때가 있는데요. 특히 AWS나 리전간 동기화 타임에서 안잡힐때 설정하면 확인이 가능합니다. innodb_flush_log_at_trx_commit 위의 그림에서 알 수 있듯이, 해당 값에 따라 순간적인 장애시 트랜잭션을 잃을 수 있다. 0 인 경우, MySQL 이나 OS가 갑자기 crash 된다면 최대 1초동안의 트랜잭션을 잃을 수 있다. 1 인 경우, 안전하다. 2 인 경우, OS가 갑자기 crash 된다면 최대 1초동안의 트랜잭션을 잃을 수 있다. 하지만 MySQL 장애시에는 이미 OS 영역으로 데이터는 넘어갔기 때문에 안전할 수 있다. 각 값에 따라, 엄청난 성능을 보일 수 있다. 지난번에 엄청난 양의 l.. 2023. 8. 24.
MySQL에서 메모리를 정보 알고 사용하기 전역 버퍼 MySQL은 서버 시작 시 전역 버퍼를 할당하며, 이 버퍼는 모든 연결에서 공유됩니다. MySQL 메모리의 대부분은 innodb_buffer_pool_size, innodb_log_buffer_size, key_buffer_size 등 전역 버퍼에서 사용합니다. InnoDB 버퍼 풀 InnoDB 버퍼 풀은 일반적으로 MySQL 인스턴스에서 가장 큰 메모리를 사용하며, innodb_buffer_pool_size 매개변수를 사용하여 구성됩니다. 테이블 데이터와 색인, 변경 버퍼, 적응형 해시 색인, 기타 내부 구조를 캐시하는 데 사용됩니다. Google Cloud의 관리형 MySQL 서비스인 MySQL용 Cloud SQL은 인스턴스 크기에 따라 innodb_buffer_pool_size를 인스턴스.. 2023. 8. 18.
Mysql 이메일 검사 및 정규표현식 정규표현식? 1. 정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 쓰이는 형식 언어 2. 문자열을 처리하는 방법 중의 하나 3. 특정한 조건의 문자를 ‘검색’하거나 ‘치환’할 때 사용 4. mySQL에서는 REGEXP라는 키워드를 사용하여 정규표현식을 처리함 이메일주소 정규표현 검사 SELECT 'abcdefg@gmail.com' REGEXP '^[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9._-]@[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9]\\.[a-zA-Z]{2,4}$'; SELECT 'abcdefg@gmail.com' REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$'; #정규 표현식으로 지정된 메일 조소인지.. 2023. 8. 17.
Mysql - Function - 사용자 함수 •절차형 sql을 활용하여 일련의 sql처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL. •DBMS 에서 제공되는 공통적 함수 이외에 사용자가 직접 정의하고 작성할 수 있다. •기본적인 개념 및 사용법 , 문법 등은 프로시저와 동일 •종료 시 단일 값을 반환한다는 것이 프로시저와 가장 큰 차이점 •사용자 정의함수의 호출을 통해 실행되며 반환되는 단일 값을 조회 또는 삽입 수정 작업에 이용하는 것이 일반적임. 오늘은 Mysql , Mariadb function에 대해서 알아볼까 합니다. 프로시져를 이용한 Out 방식을 이용해도 되지만 사용자 정의 함수를 통해서도 가능하기 때문이죠. CREATE [AGGREGATE] FUNCTION [IF NOT EXISTS] function_nam.. 2023. 8. 13.
mariadb, mysql ignored in --skip-name-resolve mode 경고 어떻게 처리 해야하나? 안녕하세요. DB 데몬 구동이후 에러 로그를 보는데 저렇게나올경우 아주 간단히 해결할수도 있을것같긴 한데요. 서비스에 이상은 없는데 경고 메시지가 나오면 관리자라면 정말 걱정이 될거라 생각됩니다. 그래서 왜 생기는지는 알아야겠죠 . 2023-08-03 15:26:54 7 [Warning] 'proxies_priv' entry '@% HOSTNAME' ignored in --skip-name-resolve mode. 2023-08-03 15:26:54 7 [Warning] 'proxies_priv' entry '@% HOSTNAME' ignored in --skip-name-resolve mode. 2023-08-03 15:26:54 7 [Warning] 'proxies_priv' entry '@% HOS.. 2023. 8. 3.
Mysql Error Log logging 옵션 log_warnings, log_error_verbosity 안녕하세요 오늘은 Mysql Error Log logging하는 옵션에 대해서 알아볼께요. 에러만 기록할수도 있고 에러와 경고, 아니면 모든 Note 로그까지 기록하는 옵션이 있답니다. System variables –log_warnings[=#] 에러 로그에 경고 메시지를 생성하는 옵션으로 기본값은 5.7.2이전에는 1, 이후에는 2로 활성되어있다. 5.7.2부터 log_warnings에 의해 관리되는 정보는 log_error_verbosity에 의해 관리되며 log_error_verbosity는 이전 log_warnings 보다 우선 사용된다. log_warnings에 값을 할당하면 log_error_verbosity에도 할당이 되며 반대의 경우에도 마찬가지로 적용된다. log_warnings=0은 .. 2023. 8. 1.
Mysql - procedure 사용법 - 2 안녕하세요. 오늘은 프로시져 사용에 대한 두번째 자료를 업로드 할려고 합니다. 너무 자세한 설명보다는 사용 가능한 부분위주로 설명을 하기 때문에 부족한 부분이 많을거에요. 부족한부분은 다른 글이나 구글링을이용해주세요 TRANSACTION 실행부 1. 수행된 데이터 작업들을 DB에 적용할지 취소할지 결정하는 처리부 2. COMMIT: 하나의 트랜잭션이 성공적으로 끝났을 때 사용 3. ROLLBACK : 비정상적으로 종료되어 다시시작하거나 연산을 취소할 때 사용 Delimiter ~ Begin DELIMITER $$ 구분자 USE `DB_NAME`$$ // 사용할 디비명 DROP PROCEDURE IF EXISTS `p_프로시져명`$$ // 같은 이름이 있으면 삭제 CREATE DEFINER=`생성자`@`생.. 2023. 8. 1.
Mysql - Stored Procedure 사용 방법 - 1 안녕하세요. Mysql DB를 정말 오랬동안 사용하고 있는데요. 처음 나왔을때는 아니겠지만 버젼 4부터 사용해서 버젼 8까지 지금까지 사용하고있는듯합니다. 처음에는 DB 테이블이 수시로 깨지고 했었는데 5.5 이후부터 안정적인 서비스 운영이 가능해지면서 지금은 많은 업체에서 사용하고 있는것 같아요. 오늘은 Mysql Stored Procedure 사용 방법에 대해서 알아보도록 하겠습니다. •프로시저는 절차형 sql 을 활용하여 특정 기능을 수행 할 수 있는 트랜잭션 언어. •일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합. •프로시저는 호출을 통해 실행. 프로시저 의 장점 1. Stored procedure를 처음 호출하면 MySQL은 DB의 catalog에서 이름을 찾아서 Stored p.. 2023. 7. 28.
Mysql 알아가기 - Mysql control Monitoring Explain 등 안녕하세요. 지금가지 Dual Master 구성을 진행 했었는데요. 가능하면 듀얼 마스터를 순환형으로 구축을 한번 해보는것도 좋을것 같다는 생각이 듭니다. 가능하면 여러번 연습해서 내꺼로 만드는걸 강력하게 추천 드립니다. 이번에는 Mysql의 control, Monitoring, Explain등 추가적인부분을알아볼까합니다. Table Design - control – 대용량 MySQL instances/schemas/tables을 관리하는 추가 코스트 ( > 2TB) – 데이터 사이즈가 커짐에 따라 인덱스 구조가 더 넓어지고 깊어짐, 모든 SQL 작업에 영향 – 사용 하지 않는 이력 데이터에 대해서 삭제하거나 아카이브 성능 저하 – 신속하게 늘어나는 테이블에 대해서 대책을 세워야 함 – 파티션 테이블을 .. 2023. 7. 25.
Mysql Dual master – slave replication - 3단계 안녕하세요. 오늘은 간단하게 Mysql Dual master – slave replication 구성하는 방법을 단계별로 알아보고 있는데요. 이번에는 복제 연동시, 듀얼 마스터 연동시 나올만한 에러 사항들을 확인해보 넘어가도록 하겠습니다. 복제 구성 연동 - 에러 # error1 Last_IO_Errno: 2003 Last_IO_Error: error connecting to master 'master@192.168.152.128:3306' - retry-time: 60 retries: 3 message: Can't connect to MySQL server on '192.168.152.128:3306' (111) # blind address 주석처리 # bind-address 부분을 주석처리하면 모든 .. 2023. 7. 24.
Mysql Dual master – slave replication - 2단계 안녕하세요. 오늘은 간단하게 Mysql Dual master – slave replication 구성하는 방법을 단계별로 알아볼까 합니다. 차근 차근 따라 하시면 쉽게 구성 가능하실거에요. 이번에는 계정 생성 및 기본 설정에 대해서 알아보겠습니다. 제 구성을 위한 계정 생성 CREATE USER dbmaster@'%' IDENTIFIED BY 'abc5678!' PASSWORD EXPIRE NEVER; grant replication slave on *.* to dbmaster@'%'; flush privileges; show grants for dbmaster@'%'; 계정을 생성하고 해당 계정에 대한 퀄한을 재 확인합니다. Mysql root 비밀번호 변경 # root 비밀번호 변경 ALTER USE.. 2023. 7. 23.
Mysql Dual master – slave replication - 1단계 안녕하세요. 오늘은 간단하게 Mysql Dual master – slave replication 구성하는 방법을 단계별로 알아볼까 합니다. 차근 차근 따라 하시면 쉽게 구성 가능하실거에요. 사용 프로그램 Dual master replication 구성 가상머신 : VMware-player-full-16.2.1-18811642 OS : ubuntu-20.04.3-desktop-amd64 SQL Client : SQLyog-13.1.8-0.x64Community 복제 서버 구성 시작 PC에서 설치를 하기 때문에 가상 머신을 설치 해야합니다. Trail 버젼을 사용해서 학습 하시고 정식 이용은 정식 버젼을 이용하세요. 서버는 총 2대를 설치할예정이며 해당 서버는 Dual Master 구성을 위한 서버 구성입니.. 2023. 7. 23.
Mysql Dual master – slave replication - 준비사항 안녕하세요. 오늘은 간단하게 Mysql Dual master – slave replication 구성하는 방법을 단계별로 알아볼까 합니다. 차근 차근 따라 하시면 쉽게 구성 가능하실거에요. Replication 왜 필요하지? 데이터베이스에 데이터를 잘 저장하고 잘 불러오고 있는데 굳이 서버 하나를 늘려서 이중화를 시켜야 하는 이유가 무엇입니까? 라고 당연히 물어볼 수 있을 것 같습니다. Replication이 필요한 이유는 다음과 같습니다. 일종의 부하 분산이 가장 큰 이유죠.. 개인 프로젝트를 포함하여 모든 프로젝트가 그렇지만, DB에 접근해서 처리해야 하는 것들이 대부분일 겁니다. 읽기, 쓰기, 수정의 모든 연산이 하나의 DB에서 일어난다면 트래픽이 늘어남에 따라 자연스럽게 병목 현상 이 생길 수 밖.. 2023. 7. 23.
테이블 조인 (MariaDB) - join_cache_level 조인 알고리즘 MiriaDB 5.3 이전 : 네스티드 루프 알고리즘만 사용 MiriaDB 5.3 이후 : 다양한 형태의 알고리즘 도입. 활용율은 높지 않지만 개선중. MiriaDB 5.3 부터 지원되는 알고리즘의 종류 단순 네스티드 루프(Simple Nested Loop) 블록 네스티드 루프(Block Nested Loop) 블록 네스티드 루프 해시(Block Nested Loop Hash) 블록 인덱스(Block Index Join, Batched Key Access) 블록 인덱스 해시(Block Index Hash Join, Batched Key Access Hash) 블럭 기반 조인 알고리즘의 종류 8가지 join_cache_Incremental=offjoin_cache_hashed=offjoin_.. 2023. 7. 20.
MariaDB의 메모리 설정 Mariadb의 메모리는 크게 두 가지로 분류가 됩니다. 1. Global 메모리 영역 : DB가 최초 기동되었을 때에는 메모리를 최소한만 사용하다가 설정된 값 까지 증가하며 증가한 이후에는 "메모리를 반환하지 않고" 설정 된 값 이내에서 계속 사용됩니다. (오라클의 경우 DB기동시 설정된 값 만큼 메모리를 할당 받고 올라가는 반면 Mariadb 는 기동시 설정된 메모리 값만큼 할당 받는것이 아닌 설정된 값 만큼 서서히 증가하게 됩니다) Innodb_buffer_pool_size Key_buffer_size innodb_log_buffer_size tmp_table_size → Global 메모리 = Innodb_buffer_pool_size + Key_buffer_size + innodb_log_buf.. 2023. 5. 19.
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.
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.
반응형