해결된 질문
작성
·
338
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]#
에러가 발생하는데 어디를 수정해야할까요?
답변 1
0
안녕하세요:)
에러로그를 보니 데이터베이스에 접속할 사용자 이름이 비어있어 mariadb에 접속을 못해 생기는 문제인 것 같습니다.
다음과 같이 DB dump부분에 --user root 를 추가해주세요.
# DB dump
/usr/bin/mariabackup \
--backup \
--user root \
--no-lock \
--target-dir="${DB_BAK_PATH}"
감사합니다. 해결되었습니다. :)