반응형

전체 글 488

[MySQL] (백업/복구6️⃣) 백업 복구 실수 방지 체크리스트와 실무 팁 💡

많은 개발자와 운영자가 “우린 매일 백업하고 있어요”라고 말하지만, 복구 테스트를 주기적으로 실행하는 곳은 드물다.하지만 실무에서 중요한 건 복원 가능성이다.“백업은 성공했는데, 복구는 실패했다”는 말이 나오지 않도록 실수를 예방하고 점검하는 전략을 정리한다.✅ 가장 흔한 복구 실수 10가지백업 파일이 없거나 최신 상태가 아님백업 스크립트는 존재하지만 실제 실행되지 않거나 cron 등록이 빠져 있음백업 파일이 손상되었거나 복원 불가용량만 확인하고, 실제 mysql Binary Log가 비활성화되어 PITR이 불가능log-bin 설정 누락으로 시점 복원이 불가백업 파일에 트리거, 프로시저, 이벤트 누락--routines, --events, --triggers 옵션 미사용다른 버전/설정의 DB에 복원하다 실..

DB 2025.07.12

[MySQL] (백업/복구5️⃣) 백업 자동화 스크립트 실무 적용 예제 🤖

MySQL 데이터를 안전하게 보호하려면 백업을 주기적으로 자동 수행해야 한다.수동으로 하는 백업은 사람이 까먹을 수도 있고, 장애 상황에서 복구 시점이 오래될 위험이 있다.이 글에서는 mysqldump를 활용한 백업 스크립트 작성부터 crontab 등록, 백업 압축, 삭제 정책, S3 연동까지 모두 정리한다.✅ 자동 백업을 위한 기본 구성요소백업 대상 DB 이름백업 저장 경로파일명에 날짜 포함mysqldump 명령에러 로깅일정 주기 실행 (crontab)보관 주기 설정 (삭제 or 외부 업로드)🧪 가장 기본적인 자동 백업 스크립트#!/bin/bashDATE=$(date +%F)DB_USER="root"DB_PASS="비밀번호"DB_NAME="mydb"BACKUP_DIR="/home/backup/mysq..

DB 2025.07.12

[MySQL] (백업/복구4️⃣) PITR(Point In Time Recovery) 원리와 설정 실습

MySQL 백업 전략에서 가장 강력한 복구 기능 중 하나가 PITR(Point-In-Time Recovery)다.PITR은 이름 그대로 특정 시점까지 데이터베이스 상태를 되돌리는 복구 기법이다.데이터를 완전히 날렸을 때 단순 전체 복원만으로는 복구할 수 없는 상황을 대비해, PITR은 실무에서 매우 중요하게 활용된다.✅ PITR이란 무엇인가?PITR(Point-In-Time Recovery)는 풀백업(mysqldump 등) 이후, 특정 시점까지의 변경 이력을 반영하여 데이터 상태를 복구하는 방법이다.Binary Log에 기록된 DML(INSERT, UPDATE, DELETE) 쿼리를 활용해 정해진 시간 이전의 데이터 상태로 되돌릴 수 있다.예를 들어, 실수로 DELETE FROM user를 실행한 경우,..

DB 2025.07.12

[MySQL] (백업/복구3️⃣) Binary Log 기반 백업 전략과 설정법

MySQL에서 데이터를 안전하게 보호하려면 단순히 mysqldump만으로는 부족하다.왜냐하면 mysqldump는 백업 시점의 스냅샷만 저장하고, 그 이후 변경된 데이터는 포함되지 않기 때문이다.이를 보완하기 위한 핵심 기능이 바로 Binary Log(바이너리 로그)다.Binary Log는 데이터 변경 이력을 기록하는 로그 시스템으로, 백업 및 복구 전략에서 핵심적인 역할을 한다.✅ Binary Log란?Binary Log는 MySQL 서버가 수행한 INSERT, UPDATE, DELETE 등의 DML 쿼리를 이진(binary) 형식으로 기록하는 로그 파일이다.주요 목적은 다음과 같다.Point-in-Time Recovery (PITR)특정 시점까지 변경 이력을 반영하여 복구할 수 있음Replication..

DB 2025.07.12

[MySQL] (백업/복구2️⃣) mysqldump 백업과 복원 방법 완벽 가이드

MySQL의 기본 백업 도구인 mysqldump는 가장 많이 사용되는 논리 백업 툴이다.SQL 구문 형식으로 데이터를 덤프하여 이식성과 가독성이 좋고, 간편하게 복원할 수 있다.✅ mysqldump란?mysqldump는 MySQL에서 제공하는 CLI(Command Line Interface) 백업 유틸리티다.데이터베이스나 테이블을 SQL 파일로 백업해 저장하며, 해당 파일을 다시 실행하여 데이터를 복원할 수 있다.mysqldump -u [사용자] -p [옵션] [DB명] > backup.sql파일 형식은 SQL이므로, 사람이 읽기 쉽고, 다른 MySQL 서버에도 쉽게 이식할 수 있다는 장점이 있다.🧪 가장 기본적인 백업 예제전체 데이터베이스 백업mysqldump -u root -p --all-datab..

DB 2025.07.12

[MySQL] (백업/복구1️⃣) 백업의 모든 것: 개념, 필요성, 전략 총정리

MySQL에서 안정적인 운영을 위해 가장 중요한 요소 중 하나는 바로 백업(Backup)이다.단 한 번의 장애나 실수로 수십만 건의 데이터를 잃을 수 있기 때문에, 정기적이고 전략적인 백업 체계를 갖추는 것은 실무에서 필수다.✅ 백업이란 무엇인가?백업은 데이터베이스의 현재 상태를 별도의 공간에 복사해서 저장하는 작업이다.복사된 데이터를 통해 장애 발생 시 복구(Recovery)가 가능하며, 이는 곧 서비스의 안정성 보장으로 이어진다.📌 백업이 필요한 이유하드웨어 장애디스크 고장, 서버 다운, RAID 오류 등 물리적 문제로 데이터 손실이 발생할 수 있다.휴먼 에러실수로 DELETE 또는 DROP을 실행했을 경우, 백업이 없으면 되돌릴 수 없다.랜섬웨어·해킹 공격데이터 암호화, 삭제 등의 피해가 발생했을..

DB 2025.07.12

[MySQL] (권한관리7️⃣) 사용자 관리 실수 방지 체크리스트

MySQL 사용자 계정과 권한은 강력한 보안 수단이자 치명적인 리스크 요인이 될 수 있다.실제 많은 장애와 보안 사고가 사용자 관리 실수에서 비롯되며, 예방만 잘 해도 문제의 80%는 사전에 차단할 수 있다.🚫 1. 불필요한 사용자 계정 방치테스트 계정, 임시 계정, 기본 계정(root 이외) 삭제 여부 확인사용하지 않는 계정은 DROP USER로 제거하거나 RENAME 처리DROP USER 'testuser'@'%';또는RENAME USER 'tester'@'%' TO 'tester_disabled'@'%';🔐 2. 계정 비밀번호 정책 미적용validate_password 플러그인 미사용 시 보안 위험 높음비밀번호 복잡도, 길이, 만료 주기 설정 필수ALTER USER 'user1'@'%' PASS..

DB 2025.07.11

[MySQL] (권한관리6️⃣) 사용자 권한 확인 및 변경, 삭제 실무 명령어 정리

MySQL에서 사용자 권한을 제대로 관리하려면, 정확한 조회와 신속한 변경, 안전한 삭제가 필수다.사용자 권한은 보안과 직결되기 때문에 명령어를 정확히 알고 있어야 실무에서 오류 없이 대응할 수 있다.🔍 사용자 권한 확인 방법✅ SHOW GRANTSSHOW GRANTS FOR '사용자명'@'호스트';예시:SHOW GRANTS FOR 'devuser'@'%';출력 예:GRANT SELECT, INSERT ON `testdb`.* TO 'devuser'@'%';해당 사용자가 부여받은 모든 권한을 나열해 준다.✅ 전체 사용자 목록 확인SELECT user, host FROM mysql.user;계정 이름과 접속 허용 호스트(IP/도메인)를 확인 가능✅ 권한 제한 항목까지 함께 조회SELECT user, ho..

DB 2025.07.11

[MySQL] (권한관리5️⃣) 비밀번호 관리와 인증 보안 강화 전략

MySQL 보안의 시작은 비밀번호 관리다.계정 해킹, 내부 유출, 자동화 공격을 막기 위해선 단순한 비밀번호 지정만으로는 부족하다.MySQL은 다양한 비밀번호 정책과 인증 방식을 제공하며, 이를 잘 활용하면 DB 전체의 보안 수준을 획기적으로 높일 수 있다.🔐 MySQL의 기본 인증 구조MySQL 사용자 계정은 mysql.user 테이블에 저장되며, 비밀번호는 해시 처리된 상태로 저장된다.MySQL 8.0 이후 기본 인증 플러그인은 caching_sha2_password로 변경되었고, 이전 버전에서는 mysql_native_password가 기본이었다.🔑 비밀번호 인증 플러그인 종류플러그인 이름설명caching_sha2_password기본값 (MySQL 8.0), 빠르고 안전mysql_native_p..

DB 2025.07.11

[MySQL] (권한관리4️⃣) 사용자별 리소스 제한 설정하기 (연결 수, 쿼리 수 등)

MySQL은 단순히 권한만 제어하는 것이 아니라, 계정별 리소스 사용량도 정밀하게 제한할 수 있다.특정 계정이 과도한 연결이나 대량 쿼리로 시스템에 부담을 주지 않도록 관리하는 것이 핵심이다.특히 다수의 외부 시스템이나 자동화 프로그램이 접속하는 환경에서는 리소스 제한 설정은 필수 보안/운영 전략이다.🔧 지원되는 리소스 제한 항목MySQL에서는 사용자 생성 시 다음과 같은 자원 제한을 설정할 수 있다.항목설명MAX_QUERIES_PER_HOUR시간당 허용 쿼리 수MAX_UPDATES_PER_HOUR시간당 허용 데이터 수정 쿼리 수MAX_CONNECTIONS_PER_HOUR시간당 최대 접속 수MAX_USER_CONNECTIONS해당 계정의 동시 접속 최대 수이 제한값은 단위 시간(1시간 기준) 혹은 실시..

DB 2025.07.10
반응형