본문 바로가기

DB/Mysql(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 - mysqldump 시 함수와 프로시저 누락 문제 해결 방법 데이터베이스 운영 시 주기적인 백업은 필수적입니다. 저 역시 mysqldump 명령어로 데이터베이스 전체를 백업해 왔습니다.백업 시 --all-databases 옵션을 사용하여 모든 데이터베이스를 백업하기 때문에 모든 객체가 백업될 것이라고 생각했습니다.그러나 최근 새로 추가된 데이터베이스에서 함수와 프로시저를 백업하는 과정에서 예상치 못한 문제가 발생했습니다.1. 백업 작업 중 발생한 문제저는 항상 다음과 같은 형식으로 전체 데이터베이스를 백업하고 있었습니다.mysqldump -uroot -p[password] --all-databases > DBBACKUP.sqlmysqldump -uroot -p[password] --all-databases --master-data=2 --single-transac.. 더보기
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.. 더보기
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 - Replication 설정 (Master-Master / Master-Slave) Replication이란?Replication은 데이터베이스 서버의 데이터를 다른 데이터베이스 서버로 복제하는 과정을 말합니다.  Replication을 왜 사용하는가?고가용성(High Availability): 한 서버에 장애가 발생해도 다른 서버에서 운영할 수 있어 서비스 중단을 방지합니다.백업(Backup): 실시간으로 데이터를 복제하여 데이터 손실을 최소화합니다.성능 향상(Performance Improvement): 읽기 작업을 여러 서버로 분산하여 성능을 최적화합니다.Master-Master Replication과 Master-Slave Replication1. Master-Master Replication두 개 이상의 마스터 서버가 서로 데이터를 복제합니다. 장점고가용성: 한 마스터 서버가 .. 더보기
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 계정 로그인 금지 : 관리자 계정의 .. 더보기