본문 바로가기
반응형

Database306

Mysql 알아가기 - Mysql control Monitoring Explain 등 안녕하세요. 지금가지 Dual Master 구성을 진행 했었는데요. 가능하면 듀얼 마스터를 순환형으로 구축을 한번 해보는것도 좋을것 같다는 생각이 듭니다. 가능하면 여러번 연습해서 내꺼로 만드는걸 강력하게 추천 드립니다. 이번에는 Mysql의 control, Monitoring, Explain등 추가적인부분을알아볼까합니다. Table Design - control – 대용량 MySQL instances/schemas/tables을 관리하는 추가 코스트 ( > 2TB) – 데이터 사이즈가 커짐에 따라 인덱스 구조가 더 넓어지고 깊어짐, 모든 SQL 작업에 영향 – 사용 하지 않는 이력 데이터에 대해서 삭제하거나 아카이브 성능 저하 – 신속하게 늘어나는 테이블에 대해서 대책을 세워야 함 – 파티션 테이블을 .. 2023. 7. 25.
Mysql 알아가기 - 1단계 (Information_schema, Table, Column, Index 등) 1차 안녕하세요. 지금가지 Dual Master 구성을 진행 했었는데요. 가능하면 듀얼 마스터를 순환형으로 구축을 한번 해보는것도 좋을것 같다는 생각이 듭니다. 가능하면 여러번 연습해서 내꺼로 만드는걸 강력하게 추천 드립니다. 이번에는 Mysql 에 대해서 자세히 알아갈건데요. Information_schema, Table, Column, Index 등 기본 Design 구조부터 해서 항목들 설명을 진행하게 될것 같습니다. 순서는 아래 순서지만 이번글에 모두 포함되진 않으니 참고하시고 읽어주세요. 1.Information_schema 설명 2.Table, Column 정의 방식 3.Index 정의 방식 4.Table Design 방식 > 기본정의 , 추가 방식, Indexing > Control, Monite.. 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 - 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.
MySQL 8.0.1 utf8mb4_0900_ai_ci의 한글 사용에 대한 문제점 MySQL 8.0.1 버전부터 기본값으로 채택된 utf8mb4_0900_ai_ci의 한글 사용에 대한 문제점 MySQL 8.0.1 버전부터 utf8mb4_0900_ai_ci를 기본값으로 적용했습니다. 기존의 5.x버전대의 MySQL을 사용해 오던 유저분들이라면 한글을 사용해야 하는 환경에서 대부분 utf8mb4_general_ci를 사용해왔을 겁니다. 0900_ai_ci로 기본 값이 변경되면서 아마 처음 MySQL을 시작하거나 그냥 설치만 해서 사용하시는 분들은 무슨 차이가 있나 궁금하실 수도 있습니다. 우선 기본값으로 설정된 utf8mb4_0900_ai_ci에 대해 간단히 설명 해보겠습니다. uft8mb4는 각 문자가 UTF-8 인코딩 체계에서 최대 4바이트로 저장됨을 의미. 0900은 유니코드 데이터.. 2023. 7. 10.
Mysql slave 동기화 반영 에러 - Concat() 쿼리 부분에 concat(년,월,일) 으로 합산하여 특정 컬럼에 Data를 기록하는 부분의 쿼리에서 형변환이 되지 않아 Slave 전송 반영이 안될경우 입니다. 1. Master에서 쿼리 실행 2. Slave에서 반영할때 해당 쿼리가 NULL 발생함 (실제 Data 누락됨) 자동 형변환일 될거라고 생각하고 SQL 작성할경우 이렇게 버그에 발목이 잡힐수 있으니 불편하더라도 형변환을 하는 습관을 가져봅시다. 카테고리 내용 InnoDB -- clustered index record를 deleted 마크하고 업데이트된 버전의 레코드를 clustered index에 삽입하는 row_upd_clust_rec_by_insert 함수가 하위 수준 함수에 잘못된 n_ext 값(총 외부 필드 수)을 전달하는 버그 픽스 -.. 2023. 6. 22.
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.
Mysql 파티션 추가시 느려지는 문제 해결 : innodb_adaptive_hash_index = OFF 파티션을 사용하다보면 파티션 추가 부분에서 갑자기 느려지는 경우가 있습니다. 이렇게 해보시면 어떨까요? 파티션 관련 ADD 작업시 AHI 유지라고 생각하는데 AHI 행이 크면 이 작업이 느려지지만 이 작업은 DDL 커밋 단계에서 mdl x로 보호하므로 선택이 중단된다고 합니다. innodb_adaptive_hash_index = OFF 하면 되니 참고하세요 2023. 5. 15.
[Google Cloud]외부 서버에서 복제하는 방법 외부 서버 구성 사용 사례 외부 서버 구성은 다음과 같은 목표를 달성하는 방법을 제공합니다. 최소한의 다운타임으로 데이터를 자체 관리형 MySQL 서버에서 Google Cloud로 마이그레이션하기 복제본 관리를 Cloud SQL로 오프로드하면서 서버의 코로케이션 및 제어 유지하기 이 사용 사례를 하이브리드 클라우드라고도 합니다. 자체 관리형 서버와 Cloud SQL 복제본 간의 복제는 무기한으로 지속됩니다. 외부 복제 구성 외부 복제 구성에는 다음 인스턴스가 포함됩니다. 사용자가 관리하는 MySQL 서버: 소스 데이터베이스 서버라고도 합니다. Cloud SQL 복제본 하나의 소스 데이터베이스 서버에 여러 개의 복제본이 있을 수 있습니다. 소스 표현 인스턴스 소스 표현 인스턴스는 Cloud SQL 복제본에.. 2023. 3. 27.
[Google Cloud]복제를 위한 Cloud SQL 및 외부 서버 구성 용어 외부 서버. 데이터를 복제하려는 Cloud SQL 외부의 MySQL 서버입니다. 소스 데이터베이스 또는 외부 데이터베이스 서버라고도 합니다. 다른 Cloud SQL 인스턴스이거나 온프레미스, Amazon 관계형 데이터베이스 서비스(RDS) 등과 같은 다른 데이터베이스 서버일 수 있습니다. 소스 표현 인스턴스. Cloud SQL 복제본에 대한 외부 서버를 나타내는 Cloud SQL 인스턴스의 모델입니다. Google Cloud 콘솔에서 볼 수 있고 일반 Cloud SQL 인스턴스와 비슷하게 표시되지만 데이터를 포함하거나, 구성 또는 유지보수가 필요하거나, 결제에 영향을 주지 않습니다. Cloud SQL 복제본. 외부 서버에서 복제하는 Cloud SQL 인스턴스. 외부 기본 읽기 복제본이라고도 합니다... 2023. 3. 27.
MySQL FullText Search 종류 검색 모드의 종류 1. 자연어 검색(natural search) 검색 문자열을 단어 단위로 분리한 후, 해당 단어 중 하나라도 포함되는 행을 찾는다. select * from match table_name where match('column_name') against ('word' in natural language mode); 2. 불린 모드 검색(boolean mode search) 검색 문자열을 단어 단위로 분리한 후, 해당 단어가 포함되는 행을 찾는 규칙을 추가적으로 적용하여 해당 규칙에 매칭되는 행을 찾는다. select * from table_name where match(column_name) against ('word' in boolean mode); 특징 검색의 정확도에 따라 결과가 정렬.. 2022. 12. 21.
Mysql 백업본 복구 및 Slave 추가 안녕하세요. 복제 Slave 추가를 위해서는 대부분 점검을 통해 서버를 추가해서 동기화를 하는데요. 오늘 이야기 할부분은 서비스중에 백업하고 백업된 DB를 복구하는 방식을 이야기 해볼까 합니다. 1. Myisam Slave 추가 Myisam의 경우 파일 엔진으로 파일을 복사하고 복구가 가능한데요. 문제점은 오토커밋이기 때문에 백업중에도 DaTa가 변경된다는거죠. 그래서 별도 백업용 Slave 서버가준비 되어 있다면 해당 서버의 복제를 일시 정지 하고 백업하고 다시 동기화를 진행하면 된답니다. 서버 구성은 1 Master , 1 Slave 이며, Slave 서버의 경우 어드민 등 서비스 투입은 안된 서버일경우 입니다. 백업시 동기화가 중단되기 때문에 실시간으로 변경되는 Data를 이용하기 위해 투입이 안되.. 2022. 12. 9.
mysqldump 사용법 mysqldump MySQL의 대표적인 Logical 백업 프로그램으로서 스토리지 엔진에 상관 없이 백업을 받을 수 있는 tool 입니다. mysqldump 는 기본적으로 dump를 하려고 하는 테이블에 대한 SELECT 권한, dump하려는 view에 대한 SHOW VIEW 권한, dump하려는 trigger에 대한 TRIGGER 권한을 가지고 있어야 합니다. 만약, --single-transaction 옵션을 사용할 수 없는 스토리지 엔진이라면 LOCK TABLES 권한이 추가적으로 필요합니다. 만약, 다른 옵션을 추가적으로 사용한다면 추가적인 다른 권한도 필요하게 됩니다. dump file을 reload하기 위해, 계정은 dump file을 생성했을 때 가졌던 권한을 다 가지고 있어야 합니다. 사용.. 2022. 12. 5.
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.
반응형