inflearn logo
강의

Course

Instructor

Linux Practical Guide: Bash Shell Script by System Engineer

DB 백업 스크립트 실행 오류

Resolved

443

aheeej4451

2 asked

0

[스크립트 경로]

[root@cent2 backup]# pwd
/root/backup
[root@cent2 backup]#
[root@cent2 backup]# ls
db_backup.sh

 

 

[스크립트 파일 내용]

#!/bin/bash

## 변수 설정

HOST="$(/usr/bin/hostname)"
LOG="/tmp/backup.log"
PUSH="/root/monitor/telegram_example.sh"
DATE="$(/bin/date +%Y.%m.%d)"
# 백업할 디렉토리/파일 지정
BAK_LIST="/etc/my.cnf.d"
# 백업 디렉토리
BAK_PATH="/mnt/BACKUP/${HOST}"
# 백업 파일명
BAK_FILE="${BAk_PATH}/${DATE}_${HOST}.tgz"
# DB백업디렉토리
DB_BAK_PATH="/root/backup/xtrabackup_backupfiles"
# DB백업파일명
DB_BAK_FILE="${BAK_PATH}/${DATE}_${HOST}_DB.tgz"

## 스토리지에 마운트
/usr/bin/mount /mnt


## 로그파일 생성
/usr/bin/touch "${LOG}"

## 백업 디렉토리 확인
if [ -e "${BAK_PATH}"  ]
then
	# 백업디렉토리가 존재한다면
	/bin/echo "백업디렉토리가 존재합니다."
else
	/usr/bin/mkdir -p "${BAK_PATH}"
fi




## --- 로그기록 시작
{
	/bin/echo
	/bin/echo "===== 백업 시작 시각 : "
	/bin/date
	/bin/echo

	## 백업

	# DB dump
	/usr/bin/mariabackup \
		--backup \
		--no-lock \
		--target-dir="${DB_BAK_PATH}"

	# DB apply logs
	/usr/bin/mariabackup \
		--prepare \
		--target-dir="${DB_BAK_PATH}"



	# p: 퍼미션 유지 P: 절대경로 유지
	/usr/bin/tar czpPf "${BAK_FILE}" ${BAK_LIST}
	# db백업 디렉토리 압축
	/usr/bin/tar czpPf "${DB_BAK_FILE}" ${DB_BAK_PATH}

	# 백업파일 정보
	NAME="$(/usr/bin/ls -al "${BAK_FILE}" | awk '{print $9}')"
	SIZE="$(/usr/bin/ls -al "${BAK_FILE}" | awk '{print $5}')"
	/bin/echo "===== 백업파일 정보: "
	/bin/echo " | 파일명 : ${NAME} "
	/bin/echo " | 파일크기 : ${SIZE}Byte "
	/bin/echo

	# DB 백업파일 정보
	NAME="$(/usr/bin/ls -al "${DB_BAK_FILE}" | awk '{print $9}')"
	SIZE="$(/usr/bin/ls -al "${DB_BAK_FILE}" | awk '{print $5}')"
	/bin/echo "===== DB 백업파일 정보: "
	/bin/echo " | 파일명 : ${NAME} "
	/bin/echo " | 파일크기 : ${SIZE}Byte "
	/bin/echo

	# 백업종료시각
	/bin/echo
	/bin/echo "===== 백업 종료 시각 : "
	/bin/date
	/bin/echo


}>|"${LOG}"
## --- 로그기록 끝




## 스토리지에 언마운트
/usr/bin/umount /mnt


## 텔레그램으로 백업 로그를 전송
"${PUSH}" "${HOST}" "$(/usr/bin/cat "${LOG}")"

## 로그파일 삭제
/usr/bin/rm -f "${LOG}"

 

[발생 에러]

[root@cent2 backup]#
[root@cent2 backup]# ./db_backup.sh
백업디렉토리가 존재합니다.
[00] 2023-10-17 13:55:08 Connecting to MySQL server host: localhost, user: not set, password: not set, port: not set, socket: not set
[00] 2023-10-17 13:55:08 Failed to connect to MySQL server: Access denied for user ''@'localhost' (using password:NO).
/usr/bin/mariabackup based on MariaDB server 10.3.35-MariaDB Linux (x86_64)
/usr/bin/mariabackup: Can't change dir to '/root/backup/xtrabackup_backupfiles/' (errno: 2 "No such file or directory")
[00] 2023-10-17 13:55:08 can't my_setwd /root/backup/xtrabackup_backupfiles/
/usr/bin/tar: /root/backup/xtrabackup_backupfiles: Cannot stat: No such file or directory
/usr/bin/tar: Exiting with failure status due to previous errors
[root@cent2 backup]#
[root@cent2 backup]#

 

 

에러가 발생하는데 어디를 수정해야할까요?

 

linux shell-script

Answer 1

0

groschool

안녕하세요:)

에러로그를 보니 데이터베이스에 접속할 사용자 이름이 비어있어 mariadb에 접속을 못해 생기는 문제인 것 같습니다.
다음과 같이 DB dump부분에 --user root 를 추가해주세요.

 # DB dump
 /usr/bin/mariabackup \



  --backup \


  --user root \ 
  --no-lock \
  --target-dir="${DB_BAK_PATH}"

0

aheeej4451

감사합니다. 해결되었습니다. :)

텔레그램 봇 메세지 전송기능을 여러 서버에 이용하려면

0

132

2

컨테이너에서 다른 컨테이너 접속시

0

95

2

실습 주소에 172.18.1.91를 접속하니 접속이 되지 않습니다

0

113

2

atlassian 접속이 안됩니다

0

177

2

docker 컨테이너로 가상환경 구축 시 init.sh 관련 에러 로그

0

221

2

백업 쉘스크립트 3 질문있어요

0

113

1

telegram 문자보내기 오류

0

195

1

2-2 초기 셋팅 질문드려요!

0

324

3

Linux top 커맨드에 대한 질문

0

151

1

2-0. 진행 후 웹사이트 접속이 안됩니다.

0

308

2

커리큘럼-강의교안

0

304

3

web_backup.sh 실행 시 mount.nfs No host to mount

0

367

1

환경설정 압축파일 해제 불가

0

310

1

SecureCRT 접속 오류

0

819

1

강의에서 로그를 쌓게 하는 vws.tmpcompany.com 이제 접속이 안되는건가요?

0

383

1

강의에서 보여주시는 컨플이나 자료 따로 있을까요?

0

318

1

vagrant up 명령어 실행시

1

376

1

vagrant ssh 접속 에러

0

554

2

서버 구축시 문제 발생

0

450

2

버츄얼박스 설치에러

0

308

1

스크립트 실행 결과 미표시

0

302

1

맥북 지원

0

371

1

[해결방법] 네트워크 어댑터 에러 메시지

1

395

2

실습환경 공지사항 8-1 네트워크 에러 질문 드립니다.

0

380

2