개발/MariaDB
MariaDB 다중 소스 복제(Multi-Source Replication) 구축 및 명령어
MariaDB 다중 소스 복제(Multi-Source Replication) 구축 및 명령어
2022.11.29이번 포스팅에서 구현해볼 관계도는 다중 소스 복제(multi-source replication)입니다. 제가 다중소스복제가 필요한 상황은 아래와 같습니다. 마스터, 슬레이브1, 슬레이브2, 슬레이브n 은 DB부하 분산을 위해 사용됩니다. 슬레이브1에는 마스터에 있는 테이블 중 분석에 필요한 테이블이 존재합니다. 분석에 필요한 데이터는 용량이 크며, 다른 서비스에서는 필요 없습니다. 특정한 부가 서비스에만 분석에 필요한 데이터가 필요합니다. 분석 프로그램 사용 시 마스터에 있는 정보도 필요한 상황입니다. 좀 모호 할 수도 있는 말이지만, 저는 마스터의 데이터와, 분석에서만 사용되는 데이터를 합쳐 놓은 DB가 필요한 상황입니다. 이때 적절한 리플리케이션 관계도가 다중 소스 복제라고 판단하였습니다. 다중 소스..
Mariadb 리플리케이션(Replication) 은 어떻게 동작하는 걸까?
Mariadb 리플리케이션(Replication) 은 어떻게 동작하는 걸까?
2022.11.252022.11.22 - [개발/MariaDB] - MariaDB 리플리케이션(Replication) 이해 및 구축(Rocky Linux) 지난 포스팅에서 아래와 같은 부분을 살펴봤습니다. 리플리케이션이 필요한 이유 리플리케이션 구축 방법 리플리케이션 동작 원리 리플리케이션 동작원리에 대해 설명이 좀 부탁하다 생각 들어 내용을 좀 더 보강해보려 합니다. [그림 1] 은 리플리케이션 동작의 흐름을 도표로 표현한 것입니다. 예시로 마스터의 데이터베이스에 row 한 개를 inset 했다고 가정하고 흐름을 이야기해볼까 합니다. Binary Log 바이너리 로그 또는 빈로그(bin Log)라고 불립니다. 마스터의 데이터베이스에 데이터 또는 스키마가 변경되는 이벤트를 저장하는 공간입니다. 데이터베이스에 row 한 개..
MariaDB 리플리케이션(Replication) 이해 및 구축(Rocky Linux)
MariaDB 리플리케이션(Replication) 이해 및 구축(Rocky Linux)
2022.11.22이번 시간에는 리플레이케이션 개념에 대해 알아보고, 구축 방법에 대해 기술하고자 합니다. 리플리케이션의 목적 DB 서버가 한대 있다고 가정해 봅시다. 사이트의 이용자가 많아져서 DB의 트랜잭션이 많아졌고, 결국 DB의 부하로 인하여 사이트가 느려지고 있습니다. 이럴 때 어떻게 해야 할까요? 이때 사용되는 기법 중 하나가 DB의 리플리케이션을 구축하는 것입니다. 서버를 다수개를 이용하여 각 서버에 DB를 설치합니다. Master DB에 데이터를 insert, update, delete 등을 수행하면 Slave DB들에 자동으로 동일한 명령어를 실행시켜 데이터를 동일하게 만듭니다. (Master DB에만 insert 등을 실행해야 합니다.) 웹서버에서는 Master DB에만 inset, update, del..
XMPP mariadb 데이터 초기화 하는 방법
XMPP mariadb 데이터 초기화 하는 방법
2022.10.28xmpp 7.4.30 버전을 설치하였습니다. 구성 내용은 아래와 같습니다. PHP 7.4 MariaDB 10.4 root 패스워드 설정하다가 무엇을 잘못 만졌는지 mysql servie도 살아나지도 않는 상황이었습니다. 혹시나 해서 C:\xampp\mysql\data 폴더도 삭제하고 서비스 시작을 해도 살아나지 않네요. 무심코 backup 폴더를 보게 되었고, 해당 폴더를 복사하니 데이터 초기화되면서 서비스 살아났습니다. (개이득) 결론 C:\xampp\mysql\data 내용 모두 삭제 C:\xampp\mysql\backup 복사하여 카피 서비스 시작 당연히 기존 데이터는 다 날라가는거죠. (저야 처음 설치하자마자 문제 됐던 거라서 상관없었고요) 필요하신 분은 참고하세요~
MySQL innoDB는 어떻게 생겼나요? [InnoDB Architecture]
MySQL innoDB는 어떻게 생겼나요? [InnoDB Architecture]
2022.10.26위의 이미지는 모든 구조를 다 기술한 것은 아니며, 중요한 부분을 발췌하여 표현하였습니다. innoDB는 크게 메모리 영역, CPU연산영역, 디스크 스토리지 영역으로 구분할 수 있습니다. $ cd /var/lib/mysql/ $ ls -al -rw-rw---- 1 mysql mysql 1202616 10월 30 13:36 ib_buffer_pool -rw-rw---- 1 mysql mysql 50331648 11월 5 16:58 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 11월 5 16:58 ib_logfile1 -rw-rw---- 1 mysql mysql 348127232 11월 5 16:58 ibdata1 -rw-rw---- 1 mysql mysql 125829..
[MySQL] MySQL 리플리케이션 UUID 관련 에러
[MySQL] MySQL 리플리케이션 UUID 관련 에러
2022.10.25# 작업환경 OS : CentOS 7 DB : MySQL 5.7 상황 : A 서버에 MySQL 데이터 덤프 받고, B서버로 데이터 그래도 복사 (/var/lib/mysql 전체) A, B서버 리플리케이션 구성하고 B서버 MySQL Start 시 리플리케이션 에러 에러 메시지 : mysql> SHOW SLAVE STATUS \G; Last_IO_Error: Fatal error: The SLAVE I/O thread stops because MASTER AND SLAVE have equal MySQL SERVER UUIDs; these UUIDs must be different FOR REPLICATION TO work. # 처리내용 결론은 B서버(slave 서버) 에서 auto.cnf 삭제 후 MySQL..
sphinx #4 :: 스핑크스 주기적 인덱스 방법 (delta + crontab)
sphinx #4 :: 스핑크스 주기적 인덱스 방법 (delta + crontab)
2022.10.25오픈소스 검색엔진 뭐 사용할까? 가벼운 스핑크스(Sphinx) 사용해보자 (인트로) Sphinx #1 :: 스핑크스 설치 및 환경설정 sphinx #2 :: 스핑스크 쿼리 테스트 (sphinxQL + PHP연동) sphinx #3 :: MySQL에서 스핑크스 직접 join하기 (sphinxSE) sphinx #4 :: 스핑크스 주기적 인덱스 방법 (delta + crontab) 스핑크스의 인덱스 순서는 아래와 같습니다. 환경설정 : sphinx.conf 인덱스 실행 : indexser --all 데몬 실행 : searchd 인덱스 재 실행 : indexser --all -- rotate (searchd 실행중인 경우에는 --ratate 옵션 부여) 그럼 인덱스 실행은 얼마나 자주 해야 하는걸까요? 실시간..
sphinx #3 :: MySQL에서 스핑크스 직접 join하기 (sphinxSE)
sphinx #3 :: MySQL에서 스핑크스 직접 join하기 (sphinxSE)
2022.10.25오픈소스 검색엔진 뭐 사용할까? 가벼운 스핑크스(Sphinx) 사용해보자 (인트로) Sphinx #1 :: 스핑크스 설치 및 환경설정 sphinx #2 :: 스핑스크 쿼리 테스트 (sphinxQL + PHP연동) sphinx #3 :: MySQL에서 스핑크스 직접 join하기 (sphinxSE) sphinx #4 :: 스핑크스 주기적 인덱스 방법 (delta + crontab) 이전 시간까지 스핑크스를 설치했고, sphinxQL을 이용하여 주로 사용하는 쿼리를 테스트 해봤으며, PHP 연동까지도 해봤습니다. 이번 장은 sphinxSE를 사용하는 방법을 설명하고자 합니다. 이글 부터 보시는 분들은 꼭 #1 부터 읽어주시기 바랍니다. sphinxSE는 searchd(스핑크스 데몬)와 대화하여 텍스트 검색을 ..
sphinx #2 :: 스핑스크 쿼리 테스트 (sphinxQL + PHP연동)
sphinx #2 :: 스핑스크 쿼리 테스트 (sphinxQL + PHP연동)
2022.10.25오픈소스 검색엔진 뭐 사용할까? 가벼운 스핑크스(Sphinx) 사용해보자 (인트로) Sphinx #1 :: 스핑크스 설치 및 환경설정 sphinx #2 :: 스핑스크 쿼리 테스트 (sphinxQL + PHP연동) sphinx #3 :: MySQL에서 스핑크스 직접 join하기 (sphinxSE) sphinx #4 :: 스핑크스 주기적 인덱스 방법 (delta + crontab) 이전 포스트을 통해 아래와 같은 것을 했습니다. 스핑크스 설치 환경설정 (sphinx.conf) 인덱싱 생성 데몬 실행 sphinxQL 실행 이번에는 sphinxQL을 통해 쿼리를 날려보고 동작원리 및 유용한 쿼리를 연습하는 시간을 가져보려 합니다. 기본 sphinxQL를 접속해주세요. ]$ mysql -h0 -P9306 Welc..
Sphinx #1 :: 스핑크스 설치 및 환경설정
Sphinx #1 :: 스핑크스 설치 및 환경설정
2022.10.25오픈소스 검색엔진 뭐 사용할까? 가벼운 스핑크스(Sphinx) 사용해보자 (인트로) Sphinx #1 :: 스핑크스 설치 및 환경설정 sphinx #2 :: 스핑스크 쿼리 테스트 (sphinxQL + PHP연동) sphinx #3 :: MySQL에서 스핑크스 직접 join하기 (sphinxSE) sphinx #4 :: 스핑크스 주기적 인덱스 방법 (delta + crontab) 현재 mysql를 사용 중이며, 500만 건 text, varchar 등 혼합된 구조의 테이블이 10개 정도 존재합니다. 이들 대상으로 통합검색을 사이트에 구현해야 합니다. 몇가지 후보군 중에 스핑크스(sphinx)가 적당하다 판단하고 설치부터 테스트, 구현까지의 과정을 포스팅합니다. 아래는 스핑스크 테스트할 사용 계획입니다. m..
오픈소스 검색엔진 뭐 사용할까? 가벼운 스핑크스(Sphinx) 사용해보자 (인트로)
오픈소스 검색엔진 뭐 사용할까? 가벼운 스핑크스(Sphinx) 사용해보자 (인트로)
2022.10.25오픈소스 검색엔진 뭐 사용할까? 가벼운 스핑크스(Sphinx) 사용해보자 (인트로) Sphinx #1 :: 스핑크스 설치 및 환경설정 sphinx #2 :: 스핑스크 쿼리 테스트 (sphinxQL + PHP연동) sphinx #3 :: MySQL에서 스핑크스 직접 join하기 (sphinxSE) sphinx #4 :: 스핑크스 주기적 인덱스 방법 (delta + crontab) mysql 사용중인 사이트에 통합검색을 하나 달아야 합니다. 5백만 건 정도이며 text자료형의 필드가 다소 있는 상태입니다. 'like'는 'index'를 사용할 수 없기 때문에 논의 대상 자체가 아닙니다. myisam 구조라서 full-text 방식을 사용하고 있지만 varchar 도 검색엔진에 태워야 하는데 결국 부분적으로 ..