베하 ~~!
BTC 현상수배범입니다. 한해가 마무리 되고 있네요 ^^ 다들 즐거운 연말되시길 바랍니다~!
이번 시간에는 MySQL 일일 단위 백업 자동화하는 방법에 대해 같이 실습해보도록 하겠습니다.
[참고자료]
1. 우분투 서버를 업데이트하고 Mysql-server를 설치
sudo apt-get update
sudo apt-get install mysql-server
2. Mysql에 접속
sudo mysql -u root -p
3. Myql ROOT 비밀번호를 변경
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
4. 사용할 DB를 생성
mysql> create database test;
5. 테이블 생성 및 데이터 Insert
mysql> use test
Database changed
mysql> CREATE TABLE users (
-> user_id INT AUTO_INCREMENT PRIMARY KEY,
-> username VARCHAR(50) NOT NULL,
-> email VARCHAR(100) NOT NULL,
-> password VARCHAR(255) NOT NULL,
-> registration_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-> );
mysql> INSERT INTO users (username, email, password) VALUES
-> ('john_doe', 'john@example.com', 'hashed_password_123'),
-> ('jane_smith', 'jane@example.com', 'hashed_password_456'),
-> ('bob_jones', 'bob@example.com', 'hashed_password_789');
mysql> select * from users;
+---------+------------+------------------+---------------------+---------------------+
| user_id | username | email | password | registration_date |
+---------+------------+------------------+---------------------+---------------------+
| 1 | john_doe | john@example.com | hashed_password_123 | 2023-12-22 06:08:41 |
| 2 | jane_smith | jane@example.com | hashed_password_456 | 2023-12-22 06:08:41 |
| 3 | bob_jones | bob@example.com | hashed_password_789 | 2023-12-22 06:08:41 |
+---------+------------+------------------+---------------------+---------------------+
6. /home/ubuntu 경로에 백업 디렉토리 생성
mkdir backup
7. /home/ubuntu/backup 경로에 백업 스크립트 쉘 작성
cat backup.sh
#!/bin/bash
echo " "
echo "## Backup Start"
echo " "
datetime=$(date +%Y_%m_%d)
echo "## 5일전 백업 삭제 하기"
echo " "
sudo find /home/ubuntu/backup/*.tar.gz -ctime +5 -exec rm -f {} \\;
echo "## DB 백업"
echo " "
mysqldump -u"$DB_USER" -p"$DB_PASSWORD" --all-databases > /home/ubuntu/backup/mysql_bak_$datetime.sql
# 해당 디렉토리로 이동
cd /home/ubuntu/backup/
# .sql 파일 압축 및 생성
tar -zcvf /home/ubuntu/backup/mysql_bk_$datetime.tar.gz -C /home/ubuntu/backup/ mysql_bak_$datetime.sql
# .sql 파일 삭제
rm -f *.sql
echo "## Backup finish"
echo " "
8. 스크립트를 영구적 자동 실행 및 보안을 위해 환경변수 등록
cat ~/.bashrc | grep DB
##DB_USER##
export DB_USER="root"
##DB_PASSWORD##
export DB_PASSWORD="123456"
source ~/.bashrc
9. 쉘 스크립트 권한 변경
chmod +x backup.sh
10. Crontab에 등록
vi crontab -e
0 0 * * * /home/ubuntu/backup/backup.sh
#매일 자정 00시에 쉘스크립트 자동 실행
11. 시간 변경 후 스크립트 자동 실행 테스트
sudo date -s "2023-12-21 23:59:40"
Thu Dec 21 23:59:40 UTC 2023
ubuntu@ip-10-0-9-157:~/backup$ date
Thu Dec 21 23:59:42 UTC 2023
ubuntu@ip-10-0-9-157:~/backup$ ls
backup.sh mysql_bk_2023_12_22.tar.gz
12. Mysql 데이터 삭제 후 백업 되는지 테스트
mysql -u root -p
mysql> DROP DATABASE test;
Query OK, 1 row affected (0.04 sec)
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
ubuntu@ip-10-0-9-157:~/backup$ tar -zxf mysql_bk_2023_12_22.tar.gz
ubuntu@ip-10-0-9-157:~/backup$ ls
backup.sh mysql_bak_2023_12_22.sql mysql_bk_2023_12_22.tar.gz
ubuntu@ip-10-0-9-157:~/backup$ mysql -u root -p < /home/ubuntu/backup/mysql_bak_2023_12_24.sql
Enter password:
이렇게 하여 EC2에 mysql을 설치하고 백업스크립트를 작성한 후에 크론탭에 등록하는 과정까지 해보았습니다~!
백업된 .sql 파일을 복원하는 방법에 대해서도 알아봤는데요~
같이 한번 따라하시다보면 이해가 될 거라 생각해요~!
다음에 또만나요 ~!!
베빠~~
'Database' 카테고리의 다른 글
[GA4] 이벤트란? (0) | 2024.01.18 |
---|---|
Redis의 Node와 Shard (1) | 2024.01.05 |
Airflow 환경 이전 (0) | 2023.12.24 |
Python 클라이언트 라이브러리를 사용하여 Cloud Pub/Sub로 메시지 게시 (0) | 2023.12.15 |
Pub/Sub (0) | 2023.12.15 |
댓글