MySQL – 꿈꾸는 개발자 https://studioys.me #개발 #일상생활 #생각 Sun, 05 Jan 2025 12:25:38 +0000 ko-KR hourly 1 https://wordpress.org/?v=6.8 https://studioys.me/wp-content/webpc-passthru.php?src=https://studioys.me/wp-content/uploads/2024/09/cropped-그림1-32x32.png&nocache=1 MySQL – 꿈꾸는 개발자 https://studioys.me 32 32 MySQL 백업 및 복구 : mysqldump를 활용한 데이터 보호 https://studioys.me/how-to-backup-and-restore-mysql-using-mysqldump/ https://studioys.me/how-to-backup-and-restore-mysql-using-mysqldump/#respond Sun, 15 Dec 2024 03:28:55 +0000 https://studioys.me/?p=964 더 보기MySQL 백업 및 복구 : mysqldump를 활용한 데이터 보호]]> 데이터베이스는 서비스에서 가장 중요한 자산으로 예기치 못한 데이터 유실을 방지하기 위해 반드시 주기적으로 백업해야 합니다. 이번 포스팅에서는 mysqldump를 사용하여 MySQL 백업 및 복구 방법에 대해서 알아보도록 하겠습니다.

mysqldump란?

mysqldump는 MySQL에서 기본으로 제공하는 Command Line 기반 백업 도구입니다. 이 도구를 사용하여 원하는 데이터베이스의 데이터와 스키마를 텍스트 형식(SQL Script)으로 내보낼 수 있으며, 이를 통해 데이터베이스를 복구하거나, 데이터를 다른 서버로 이동할 수 있습니다.

mysqldump 설치 및 확인

mysqldump는 MySQL 클라이언트에 포함되어 있습니다. 글만약 MySQL이 설치가 안되어 있으면, MySQL 다운로드 페이지에서 원하는 버전을 다운로드 하여 설치하면 됩니다.

아래 명령어로 프로그램 설치 여부를 확인할 수 있습니다.

mysqldump --version

MySQL 백업 및 복구

MySQL 백업 및 복구 방법에 대해서 알아보겠습니다.

MYSQL 백업

단일 데이터베이스 백업

보통 단일 데이터베이스를 백업하기 때문에, 아래 명령을 사용하여 백업할 수 있습니다.

mysqldump -u [사용자명] -p [데이터베이스명] > [백업파일명].sql

# 예시
mysqldump -u root -p my_database > my_database_backup.sql

만약 원격지에 있는 데이터베이스를 백업하기 위해서는 -h 옵션을 추가하여 백업을 할 수 있습니다.

mysqldump -u [사용자명] -h [호스트] -p [데이터베이스명] > [백업파일명].sql

전체 데이터베이스 백업

서버에 있는 모든 데이터베이스를 백업하려면 --all-databases 옵션을 사용합니다.

mysqldump -u [사용자명] -p --all-databases > [백업파일명].sql

특정 테이블만 백업

특정 테이블만 선택적으로 백업할 수도 있습니다.

mysqldump -u [사용자명] -p [데이터베이스명] [테이블명1] [테이블명2] > [백업파일명].sql

기타 백업 옵션

백업 시 다양한 옵션이 존재합니다. 그 중 많이 사용하는 옵션은 다음과 같습니다.

  • –add-drop-database: 복구 시 기존 데이터베이스를 삭제하고 새로 생성합니다.
  • –add-drop-table: 복구 시 기존 테이블을 삭제하고 새로 생성합니다.
  • –routines: 저장 프로시저(Stored Procedure) 함수를 백업합니다.
  • –events: 이벤트 스케줄러를 백업합니다.

더 자세한 옵션은 MySQL 매뉴얼을 참고하면 됩니다.

MySQL 복구

백업한 파일을 사용해 데이터베이스를 복구하는 방법은 다음과 같습니다.

단일 데이터베이스 복구

아래 명령어로 단일 데이터베이스 백업 파일을 복구합니다.

mysql -u [사용자명] -p [데이터베이스명] < [백업파일명].sql

# 예시
mysql -u root -p my_database < my_database_backup.sql

전체 데이터베이스 복구

전체 데이터베이스 백업을 복구하려면 아래와 같이 사용합니다.

mysql -u [사용자명] -p < [백업파일명].sql

# 예시
mysql -u root -p < all_databases_backup.sql

백업 스크립트

아래는 정기적으로 MySQL 백업을 수행하는 간단한 Bash 스크립트입니다. 해당 파일을 cron에 등록하여 정기적으로 백업하는 것을 추천합니다.

#!/bin/bash
# MySQL 백업 스크립트

# 설정
USER="root"
PASSWORD="your_password"
DATABASE="my_database"
BACKUP_DIR="/path/to/backup"
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/${DATABASE}_backup_$DATE.sql"

# 백업 실행
mysqldump -u $USER -p$PASSWORD $DATABASE > $BACKUP_FILE

# 결과 확인
if [ $? -eq 0 ]; then
  echo "백업 성공: $BACKUP_FILE"
else
  echo "백업 실패"
fi

마치며

mysqldump는 MySQL 데이터베이스의 보호를 위한 강력한 도구입니다. 반드시 주기적으로 백업하고, 복구 테스트를 통해 백업된 파일의 유효성을 검증하는 것을 추천합니다.

]]>
https://studioys.me/how-to-backup-and-restore-mysql-using-mysqldump/feed/ 0
맥북에 MySQL 설치 https://studioys.me/%eb%a7%a5%eb%b6%81-mysql-%ec%84%a4%ec%b9%98/ https://studioys.me/%eb%a7%a5%eb%b6%81-mysql-%ec%84%a4%ec%b9%98/#respond Wed, 11 Sep 2024 04:02:53 +0000 https://studioys.me/?p=435 더 보기맥북에 MySQL 설치]]> 맥북에 MySQL을 설치하는 방법은 크게 두 가지가 있습니다. 공식 사이트에서 직접 다운로드해서 설치하거나 Homebrew를 사용하여 설치할 수 있습니다.

이번 포스팅에서는 Homebrew를 사용하여 맥북에 MySQL 설치하는 방법에 대해서 알아보겠습니다.

맥북에 MySQL 설치

MySQL 설치하기 위해서 homebrew가 먼저 설치되어 있어야 합니다.

만약 Homebrew가 설치 안되어 있으면 다음 포스트를 참고하여 Homebrew를 설치해주세요
Homebrew 설치 및 사용 방법 – Studio YS

터미널을 열고 아래 명령어를 입력하여 MySQL을 설치합니다.
최신 버전의 MySQL을 설치하면 9.x 버전이 설치 되는데, 저는 8.4 버전을 설치하겠습니다.

( 설치하는 데 시간이 좀 걸립니다. )

brew install mysql@8.4
맥북에 MySQL 설치

설치가 완료되었습니다. 위 그림에서와 같이 기본적으로 MySQL은 root 패스워드 없이 설치되며, localhost에서만 접속 가능하도록 설정됩니다.

맥북에서 개발용으로만 사용해서 root 패스워드 없이 사용하는 경우도 많이 있습니다.

서비스 등록하기

MySQL 설치가 완료되면 맥북 로그인 시 MySQL이 자동으로 시작되도록 서비스에 등록할 수 있습니다. 아래 명령어로 MySQL을 서비스로 등록하고 시작합니다.

brew services start mysql
실행 결과
==> Tapping homebrew/services
Cloning into '/opt/homebrew/Library/Taps/homebrew/homebrew-services'...
remote: Enumerating objects: 3246, done.
remote: Counting objects: 100% (707/707), done.
remote: Compressing objects: 100% (323/323), done.
remote: Total 3246 (delta 438), reused 566 (delta 378), pack-reused 2539 (from 1)
Receiving objects: 100% (3246/3246), 922.31 KiB | 6.11 MiB/s, done.
Resolving deltas: 100% (1579/1579), done.
Tapped 2 commands (48 files, 1MB).
==> Successfully started `mysql` (label: homebrew.mxcl.mysql)

MySQL 보안 설정

MySQL 보안 설정을 위해 mysql_secure_installation 명령어를 실행하여 root 패스워드를 설정하고 기타 보안 관련 설정을 진행할 수 있습니다.

mysql_secure_installation

설정을 시작하면 패스워드 복잡도 설정 여부를 묻는 메시지가 나옵니다. 보안 향상을 위해 Y를 입력합니다.

실행 결과
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No:

패스워드 복잡도 레벨을 결정합니다. 8자 이상의 문자 + 숫자 + 특수 문자 조합을 사용 하기 위해 1번 MEDIUM을 선택합니다.

실행 결과
There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

패스워드 복잡도에 맞게 root 계정의 패스워드를 입력합니다.

실행 결과
Please set the password for root here.

New password:
Re-enter new password:

패스워드 강도를 보여주고 패스워드를 그대로 사용할지 여부를 물어봅니다. 패스워드를 제대로 입력했다면 Y를 입력합니다.

실행 결과
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

anonymous 유저 삭제 여부를 물어봅니다. Y를 입력하여 anonymous 유저를 삭제합니다.

실행 결과
Remove anonymous users? (Press y|Y for Yes, any other key for No) :

외부에서 root 계정 접속을 차단할지 여부를 물어봅니다. 보통 맥북에서는 개발환경으로 사용하기 때문에 외부에서 접속할 일이 없으므로 Y를 입력합니다.

실행 결과
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

테스트 데이터베이스를 삭제할지 물어봅니다. 테스트 데이터베이스를 사용하지 않는다면 Y를 입력합니다.

실행 결과
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

privileges table을 갱신할지 물어봅니다. Y를 입력하여 privileges를 갱신합니다.

실행 결과
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

MySQL 접속 테스트

root 계정으로 MySQL에 접속 가능한지 확인합니다.

mysql -u root -p
실행 결과
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.3.0 Homebrew

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

root 패스워드를 입력 후 정상적으로 접속되면 MySQL 설치 및 설정이 완료되었습니다.

참고 자료

]]>
https://studioys.me/%eb%a7%a5%eb%b6%81-mysql-%ec%84%a4%ec%b9%98/feed/ 0