이 과정에서 제일 머리가 아픈건 어떻게 운영과 같은 환경에서 테스트를 해볼것 인지였다.
첫번째로 들었던 생각은 퍼블릭클라우드에서 뭐 하나 따서 쓰지 뭐 였다 하지만 비용이 발생하므로 보류했다.
두번째로 들었던 생각은 도커에 우분투 컨테이너를 올리고 그 위에 MySQL을 설치한다면? 이란 생각을 했다. 아래는 그 내가 선택한 두번째 결과물이다.
$ docker pull ubuntu:20.04
$ docker run -p 3306:3306 --name ubuntu-mysql-container -it ubuntu:20.04
p 3306:3306에서 첫 번째 3306은 호스트 시스템의 포트를 의미한다.
두 번째 3306은 컨테이너 내부의 포트를 의미한다.
따라서 p 3306:3306 은 컨테이너 내부의 3306 포트와 호스트 시스템의 3306 포트를 연결하는 것이다.
MySQL의 기본 포트는 3306 이므로, 이 명령어를 사용하면 컨테이너 내부에서 실행되는 MySQL 서비스를 호스트 시스템의 3306 포트를 통해 접근할 수 있게 된다.
그러나 여기서 주의할 점은, 위의 명령어로는 그저 우분투 컨테이너만 실행되며, MySQL은 별도로 설치 및 설정해야 합니다.
docker exec -it [컨테이너 이름 또는 ID] /bin/bash
$ apt update
$ apt-get install mysql-server
설치를 완료하면
service mysql start
명령어로 MySQL 을 실행 할 수 있다.
Mysql 실행하기전 !!!!

나는 DataGrip에서 연결할거라 127.0.0.1 -> 0.0.0.0으로 bind-address 를 변경했다.
/etc/mysql/mysql.conf.d 경로에서 mysqld.cnf 을 수정했다.
컨테이너 외부에서 접근할것이라 그냥 오픈했다.
mysql -u root -p
를 통해서 mysql에 접근하고
create database test;
테스트 데이터베이스를 만들었다.
필자는 DataGrip을 사용중이라 데이터그립에서 접근해 더미데이터를 만들었다.
더미데이터는 상기 사이트를 이용해 만들었다.

더미데이터를 insert 시키고 이제 기존에 짜둔 script 를 가져왔다.
######
#!/bin/bash
USER="your_username"
PASSWORD="your_password"
DATABASE="your_database_name"
BACKUP_ROOT="/path/to/backup"
PERIOD=$1
YEAR=$(date +\%Y)
MONTH=$(date +\%m)
DAY=$(date +\%d)
DATE_FORMAT="${YEAR}-${MONTH}-${DAY}"
case $PERIOD in
daily)
BACKUP_PATH="${BACKUP_ROOT}/daily/${DATE_FORMAT}"
;;
weekly)
BACKUP_PATH="${BACKUP_ROOT}/weekly/$(date +\%Y-\%m-\%d -d "Sunday")"
;;
monthly)
BACKUP_PATH="${BACKUP_ROOT}/monthly/${YEAR}-${MONTH}-01"
;;
*)
echo "Invalid backup period. Choose from daily, weekly, or monthly."
exit 1
;;
esac
BACKUP_FILE="backup_${DATE_FORMAT}.sql"
mkdir -p ${BACKUP_PATH}
mysqldump -u ${USER} -p${PASSWORD} ${DATABASE} > ${BACKUP_PATH}/${BACKUP_FILE}
쉘 스크립트에 Cron으로 dump를 뜰 생각 이였다.
vim backup.sh
상기 명령어를 통해 기존에 만들어둔 쉘 스크립트를 만들었다.
./backup.sh daily
명령어를 통해 해당 스크립트를 실행하였다.


dump가 정상적으로 나온것을 확인하였다.
Cron을 이용해 백업을 할거라
crontab -e
0 0 * * * /backupscript/backupscript.sh daily
0 0 * * 0 /backupscript/backupscript.sh weekly
0 0 1 * * /backupscript/backupscript.sh monthly
상기와 같이 작성 하였다.
오늘 했던 작업은 리눅스 환경에서 Mysql 의 데이터를 백업하는 작업이였다.
문의는 댓글로 남겨주길 바란다.
많은 도움이 되었습니다, 감사합니다.