• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

db 백업 스크립트 오류 질문

21.03.24 21:22 작성 조회수 476

1

스크립트 실행시 아래와같은 오류가 발생합니다...

어떤게 추가되어야하나요?

답변 3

·

답변을 작성해보세요.

1

안녕하세요:) 추가 질문에 대해 답변드려요!


+ /usr/bin/mariabackup --backup --no-lock --target-dir=

[00] 2021-03-19 19:09:52 Connecting to MySQL server host: localhost, user: not set, password: not set, port: not set, socket: not set

[00] 2021-03-19 19:09:52 Failed to connect to MySQL server: Access denied for user ''@'localhost' (using password: NO).

이 부분을 보니 몇 가지 확인을 해봐야 할 것 같습니다. 

1. mariadb가 실행 중인 가

netstat -nltpu 를 실행하고 mysqld가 있는 지 확인 해 주세요. 

tcp6       0      0 :::3306   :::*   LISTEN      644/mysqld

위와 같은 내용이 보일겁니다. 

아마 여기부터 문제일 것 같은데요. 

2. 아무 것도 안보인다면 mariadb프로세스의 상태를 확인 해 보세요. 

systemctl status mariadb

를 실행하고 결과의 위에서부터 다섯번째 줄에 다음과같은 메세지가 보인다면 systemctl start mariadb를 해주세요.

   Active: inactive (daed)

그런데 여기서도 아무 것도 안보이거나 다음과 같은 결과가 나온다면 

Unit mariadb.service could not be found.

3. mariadb서버 설치가 되어있는 가 확인을 해야합니다.

rpm -qa | grep -i mariadb

를 실행하셔서 다음과같이 마리아디비 서버 패키지가 있는 지 확인 해보세요.

MariaDB-server-10.4.14-1.el8.x86_64

혹시 아무 결과가 없다면 다음을 실행해서 설치를 해 주세요. 

dnf -y install mariadb-server mariadb-client mariadb-backup --disablerepo=AppStream

4. 그리고 기본 설정을 해 주어야 합니다. 

mariadb 프로세스를 시작하고

systemctl start mariadb

mariadb를 시작 프로그램에 등록

systemctl enable mariadb

MariaDB 실행상태를 확인합니다. 

systemctl status mariadb 

여기서 결과의 5번째 줄이 아까와는 다르게 active상태로 보일겁니다.

   Active: active (running)

그리고 실습용 DB 임시 데이터를 준비해야합니다. 아마 vagrant script를 실행할 때 패키지 설치에 실패를 해서 그럴 확률이 높거든요. 

git clone https://github.com/t2sc0m/test_db.git ./test_db

cd test_db

mysql -uroot < employees.sql 

위 명령을 차례로 입력해주시면 테스트용 데이터입력까지 마칠 수 있을 겁니다. 

tpcable127님의 프로필

tpcable127

질문자

2021.03.26

안녕하세요 마리아 DB는 설치되어있습니다.

제대로 실행이 안되어서 처음부터 cent1 2 3 재설치했는데 동일 증상이네요 ㅠㅜ

employees db 까지 확인 됩니다.

tpcable127님의 프로필

tpcable127

질문자

2021.03.26

2. 프로세스도 러닝중입니다.

db process와 접속해서 테이블리스트까지 보였다면 이제 다음 단계를 알아봐야겠네요.

mariabackup을 실행할 때 문제가 생기는 것 같으니 수동으로 다음을 실행 해 보세요.

/usr/bin/mariabackup --backup --no-lock --target-dir=/root/SHELL/BACKUP/xtrabackup_backupfiles

여기서 쉘스크립트를 실행했을 때와 같이 이런 에러가 발생한다면 

Failed to connect to MySQL server: Access denied for user ''@'localhost' (using password: NO).

다음과 같이 유저 옵션을 추가해서 실행을 해 보세요. 

/usr/bin/mariabackup --backup --no-lock -u root --target-dir=/root/SHELL/BACKUP/xtrabackup_backupfiles

혹시 root유저 패스워드 설정을 하셨다면 -p 옵션도 추가해 주시고 실행을 하면 패스워드를 물어봅니다. 

그 때 지정한 root유저 패스워드를 입력하시면 돼요. 

이 방법으로 실행이 되었다면 쉘 스크립트를 열고 mariabackup옵션에 유저를 추가해 주시고 쉘스크립트를 실행해 보시면 될 것 같습니다. 

감사합니다. :)

0

tpcable127님의 프로필

tpcable127

질문자

2021.03.26

[root@cent2 BACKUP]# ./db_backup.sh

++ /usr/bin/hostname

+ HOST=cent2

+ LOG=/tmp/backup.log

+ PUSH=/root/SHELL/monitor/tel_push.sh

++ /bin/date +%Y.%m.%d

+ DATE=2021.03.19

+ BAK_LIST=/etc/my.cnf.d

+ BAK_PATH=/mnt/BACKUP/cent2

+ BAK_FILE=/mnt/BACKUP/cent2/2021.03.19_cent2.tgz

+ DB_BAK_PATH=/root/SHELL/BACKUP/xtrabackup_backupfiles

+ DB_BAK_FILE=/mnt/BACKUP/cent2/2021.03.19_cent2_DB.tgz

+ /usr/bin/mount /mnt

+ /usr/bin/touch /tmp/backup.log

+ '[' -e /mnt/BACKUP/cent2 ']'

+ /bin/echo '백업 디렉토리가 있습니다.'

백업 디렉토리가 있습니다.

+ /bin/echo

+ /bin/echo '=== 백업 시작 시각 : '

+ /bin/date

+ /bin/echo

+ /usr/bin/mariabackup --backup --no-lock --target-dir=/root/SHELL/BACKUP/xtrabackup_backupfiles

[00] 2021-03-19 22:03:31 Connecting to MySQL server host: localhost, user: not set, password: not set, port: not set, socket: not set

[00] 2021-03-19 22:03:31 Failed to connect to MySQL server: Access denied for user ''@'localhost' (using password: NO).

+ /usr/bin/mariabackup --prepare --target-dir=/root/SHELL/BACKUP/xtrabackup_backupfiles

/usr/bin/mariabackup based on MariaDB server 10.3.27-MariaDB Linux (x86_64)

/usr/bin/mariabackup: Can't change dir to '/root/SHELL/BACKUP/xtrabackup_backupfiles/' (errno: 2 "No such file or directory")

[00] 2021-03-19 22:03:31 can't my_setwd /root/SHELL/BACKUP/xtrabackup_backupfiles/

+ /usr/bin/tar -czpPf /mnt/BACKUP/cent2/2021.03.19_cent2.tgz /etc/my.cnf.d

+ /usr/bin/tar -czpPf /mnt/BACKUP/cent2/2021.03.19_cent2_DB.tgz /root/SHELL/BACKUP/xtrabackup_backupfiles

/usr/bin/tar: /root/SHELL/BACKUP/xtrabackup_backupfiles: Cannot stat: No such file or directory

/usr/bin/tar: Exiting with failure status due to previous errors

++ /usr/bin/ls -al /mnt/BACKUP/cent2/2021.03.19_cent2.tgz

++ awk '{print $9}'

+ NAME=/mnt/BACKUP/cent2/2021.03.19_cent2.tgz

++ /usr/bin/ls -al /mnt/BACKUP/cent2/2021.03.19_cent2.tgz

++ awk '{print $5}'

+ SIZE=1554

+ /bin/echo '=== 백업 파일 정보: '

+ /bin/echo ' | 파일명 : /mnt/BACKUP/cent2/2021.03.19_cent2.tgz'

+ /bin/echo ' | 파일크기 : 1554Byte'

++ /usr/bin/ls -al /mnt/BACKUP/cent2/2021.03.19_cent2_DB.tgz

++ awk '{print $9}'

+ NAME=/mnt/BACKUP/cent2/2021.03.19_cent2_DB.tgz

++ /usr/bin/ls -al /mnt/BACKUP/cent2/2021.03.19_cent2_DB.tgz

++ awk '{print $5}'

+ SIZE=45

+ /bin/echo '=== DB백업 파일 정보: '

+ /bin/echo ' | 파일명 : /mnt/BACKUP/cent2/2021.03.19_cent2_DB.tgz'

+ /bin/echo ' | 파일크기 : 45Byte'

+ /bin/echo

+ /bin/echo '=== 백업 종료 시각 : '

+ /bin/date

+ /bin/echo

+ /usr/bin/umount /mnt

++ /usr/bin/cat /tmp/backup.log

+ /root/SHELL/monitor/tel_push.sh cent2 '

=== 백업 시작 시각 :

Fri Mar 19 22:03:31 UTC 2021

=== 백업 파일 정보:

 | 파일명 : /mnt/BACKUP/cent2/2021.03.19_cent2.tgz

 | 파일크기 : 1554Byte

=== DB백업 파일 정보:

 | 파일명 : /mnt/BACKUP/cent2/2021.03.19_cent2_DB.tgz

 | 파일크기 : 45Byte

=== 백업 종료 시각 :

Fri Mar 19 22:03:31 UTC 2021'

+ /usr/bin/rm -f /tmp/backup.log /root/SHELL/BACKUP/xtrabackup_backupfiles

0

안녕하세요 tpcalbe127님!

에러 메세지를 보니까 

디비 패키지의 설치 여부나 백업 쉘 스크립트 상단에 정의되어있어야 할 변수에 값이 제대로 들어가는 지 확인을 해봐야 할 것 같은데요. 

쉘 스크립트 가장 상단에서 디버깅모드를 켜고 쉘 스크립트를 실행한 다음에 에러메세지를 다시 보내주시면 정확히 알 수 있을 것 같아요. 

디버깅모드의 설정은 쉘스크립트 맨 위의 쉘 선언부분에 -x를 붙이시면 됩니다. 

#!/bin/bash -x