본문 바로가기

mariadb

MariaDB - 10.3 → 10.6 업그레이드 mysql.user 접근 오류와 해결 방법 MariaDB 10.3을 사용 중 EOL(End of Life)이 되어 안정성을 위해 10.6 LTS(Long-Term Support) 으로 업그레이드를 했습니다.그러나 업그레이드 후 mysql.user 테이블에 접근하려고 하자, 아래와 같은 에러가 발생했습니다ERROR 1356 (HY000): View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them MariaDB 10.4부터 테이블 구조가 변경된 것이 문제의 원인이었습니다.이번 글에서는 MariaDB 업그레이드 과정에서 발생할 수 있는 mysql.user 접근 오류의 원인과 해결 방법을 .. 더보기
MariaDB - General Log 하루치씩 남기는 방법 MariaDB의 일반 로그(general_log)를 하루치씩 저장하고 오래된 로그는 자동으로 삭제하는 방법입니다.Windows에서 .bat 파일과 Linux에서 .sh 스크립트를 사용하여 처리할 수 있습니다.  Windows (Batch 파일)@echo off:: 현재 시간을 형식에 맞게 설정 (예: 0830)set TIME2=%TIME: =0%set TIME3=%TIME2:~0,2%%TIME2:~3,2%:: 일반 로그 비활성화C:\MariaDB\bin\mysql.exe -uroot -p비밀번호 --execute="set global general_log=off":: 로그 파일 복사 및 날짜/시간을 파일명에 추가copy C:\DB_LOG\DB01_history.log C:\Storage\DB_LOG\DB.. 더보기
MariaDB - Replication 복구 (Error 1062 해결 및 Slave 상태 점검) MariaDB 복제(Replication) 환경에서 종종 발생하는 오류 중 하나가 Error 1062: Duplicate entry입니다.복제 과정에서 기본 키 중복 문제로 인해 발생하며 복제가 중단되는 상황이 발생할 수 있습니다.1. Error 1062: Duplicate Entry주로 Primary Key 값이 중복되어 발생하는 문제입니다. 복제 환경에서는 주로 mysql.gtid_slave_pos 테이블에서 중복된 키로 인해 에러가 발생하는데, 이로 인해 Slave SQL 스레드가 멈추고 동기화가 중단됩니다. 로그를 보면 다음과 같은 에러 메시지를 확인할 수 있습니다:Error during XID COMMIT: failed to update GTID state in mysql.gtid_slave_p.. 더보기
Monitoring Tools - Zabbix MariaDB 모니터링 및 UserParameter 설정 데이터베이스 서버의 상태를 실시간으로 모니터링하고 문제 발생 시 경고를 받을 수 있어 유용합니다.이번 글에서는 Zabbix와 MariaDB를 연동하여 중요한 상태 정보를 수집하고, UserParameter를 통해 더 세밀한 모니터링을 구현하는 방법을 설명하겠습니다.Zabbix Version : 5.0 기준1. Zabbix 기본 템플릿: Template DB MySQL by Zabbix agentZabbix는 MySQL과 MariaDB의 기본적인 모니터링을 위한 Template DB MySQL by Zabbix agent 템플릿을 제공합니다.MySQL 버전 확인쿼리 수 및 슬로우 쿼리 수집스레드 연결 수 및 활성 상태연결된 클라이언트 수이 템플릿을 사용하면 MariaDB 서버의 주요 성능 지표들을 기본적으.. 더보기
MariaDB - 무중단 Replication 설정 : DB인스턴스 추가 및 변경 개요현재 DB1(172.16.34.6)과 DB2(172.16.34.7)는 양방향(Master-Master) 리플리케이션 구조로 설정되어 있습니다.DB2의 서버 부하가 심각하게 발생하여, 신규 서버인 DB0(172.16.34.5)를 추가하고, DB2를 대체하려는 절차입니다.최종 목표는 기존의 DB1 DB2 구조를 DB1 DB0 구조로 변경하는 것입니다.서비스 중단 없이 이루어져야 하므로 무중단 리플리케이션 설정을 적용합니다.작업 서버 정보DB0: 신규 서버 (IP: 172.16.34.5)DB1: 기존 서버, 마스터 서버 (IP: 172.16.34.6)DB2: 기존 서버, 부하 발생 중 (IP: 172.16.34.7)사전 준비: my.cnf 설정모든 MariaDB 서버에서 [mysqld] 섹션에 각 서버.. 더보기
MariaDB - backup.sh / backup.bat 데이터베이스를 관리하다 보면 백업은 중요한 업무 중 하나입니다. 백업 파일을 효율적으로 관리하기 위해 특정 테이블을 제외하고 백업을 생성, 압축, 특정 기간 동안 보관한 후 자동으로 삭제하는 스크립트를 작성하면 업무에 도움이 됩니다. 1. mysqldump 개요mysqldump는 데이터를 덤프 파일로 내보내는 도구로, 일반적으로 콜드 백업 도구로 간주됩니다. 테이블에 락을 걸거나 일관된 스냅샷을 얻기 위해 데이터를 일시적으로 정지시키기 때문에, 백업 중에는 데이터베이스의 쓰기 작업이 일시적으로 중단될 수 있습니다.mysqldump는 기본적으로 읽기 락을 사용하지만, InnoDB 테이블에서는 --single-transaction 옵션을 사용하여 테이블 락을 피할 수 있습니다. 이 옵션을 사용하면 트랜잭션 .. 더보기
MariaDB - 초기 보안 설정 mysql_secure_installation 사용법 MariaDB 보안 설치(mysql_secure_installation)는 MariaDB 서버의 보안을 강화하기 위해 필수적인 단계입니다.이 과정을 통해 MariaDB 서버의 기본 설정을 보완 및 보안 취약점을 줄일 수 있습니다. MariaDB 보안 설치를 해야 하는 이유MariaDB 서버는 초기 설치 시 root 계정에는 패스워드가 설정되지 않거나, 익명 사용자 계정이 존재할 수 있습니다.MariaDB 보안 설치를 통해 다음과 같은 이점을 얻을 수 있습니다.1. root 계정 비밀번호 설정 : root 계정은 MariaDB 관리자 계정으로 필수로 보호해야 합니다.2. 익명 사용자 계정 제거 : 익명 사용자 계정은 보안 취약점을 유발할 수 있습니다.3. 원격 root 계정 로그인 금지 : 관리자 계정의 .. 더보기
MariaDB - AUTO_INCREMENT 확인 및 초기화 방법 DB 관리를 하다 보면 연속된 숫자 ID를 자동으로 생성해 주는 AUTO_INCREMENT 속성을 자주 사용하게 됩니다.시퀀스란?시퀀스(Sequence)는 데이터베이스에서 자동으로 생성되는 일련의 숫자들을 의미합니다.MariaDB에서는 AUTO_INCREMENT 속성을 사용하여 테이블의 기본 키 값으로 이러한 시퀀스를 생성해 사용합니다.새로운 레코드가 삽입될 때마다 자동으로 증가하여, 각 행에 고유한 식별자를 부여합니다.AUTO_INCREMENT의 필요성고유성 보장 : 각 레코드에 고유한 식별자를 자동으로 부여하여 데이터 고유성을 보장합니다.데이터 무결성 유지 : 중복된 값이 들어가는 것을 방지하여 데이터 무결성을 유지합니다.AUTO_INCREMENT 사용 시 발생할 수 있는 문제점갭 발생 : 수동으로 .. 더보기