나는 사용하고있다MySQL데이터베이스에우분투기계.
내 거MySQL데이터 디렉터리는 /var/lib/mysql/
'라는 디렉터리가 있기 때문 입니다.데이터베이스 테스트db_test/
", 그래서 아래에 라는 디렉터리 가 있습니다 /var/lib/mysql/
. 모든 테이블 정보는 다음 위치에 있습니다./var/lib/mysql/db_test/
/var/lib/mysql# ls
db_test
/var/lib/mysql# cd db_test
/var/lib/mysql/db_test# ls
cars.frm
cars.MYD
cars.MYI
customers.frm
customers.MYD
...
제가 달성하고 싶은 것은 간단합니다. "라는 이름의 새 디렉토리를 생성하면 됩니다.지원", 그리고모든 파일을 다음으로 이동하세요. /var/lib/mysql/db_test/
/var/lib/mysql/backup/
디렉토리 에 . 그래서 아래 명령을 실행하고 있습니다.내 홈 디렉토리의 하위 디렉토리:
~/tmp$ sudo mkdir /var/lib/mysql/backup
~/tmp$ sudo mv /var/lib/mysql/db_test/* /var/lib/mysql/backup
첫 번째 mkdir
명령이 성공적으로 실행되고 아래에 "backup/"이라는 새 디렉터리가 생성됩니다./var/lib/mysql/
그러나 두 번째 명령은 실패했습니다., 다음 오류 메시지가 나타납니다.
mv: cannot stat `/var/lib/mysql/db_test/*': No such file or directory
왜? ? 내 db_test/
디렉토리 에 테이블 파일이 많은데 /var/lib/mysql/
오류 메시지가 나타나는 이유는 무엇입니까?
폴리스티렌
루트 사용자만 액세스할 수 있다는 것을 알고 있습니다 /var/lib/mysql/
. 이것이 이유입니까? (하지만 저는 사용했어요 sudo
) 잘 모르겠어요... 그리고 어떻게 없애나요?
답변1
$ sudo mv /var/lib/mysql/db_test/* /var/lib/mysql/backup
이것을 입력하면 사용자의 쉘이 확장을 시도합니다 /var/lib/mysql/db_test/*
. 사용자에게 디렉토리에 대한 액세스 권한이 없으면 실패하며 대체가 이루어지지 않습니다.
따라서 mv
명령 실행은 다음과 같습니다 sudo
./var/lib/mysql/db_test/*
단어파일 이름. 해당 이름의 파일이 존재하지 않습니다.
다음을 사용해 보세요:
$ sudo sh -c 'mv /var/lib/mysql/db_test/* /var/lib/mysql/backup'
하지만 넌 그래야 해진짜,진짜데이터베이스 백업을 위해 데이터베이스 도구 사용을 고려해보세요.
답변2
이는 MySQL 데이터베이스가 백업되는 방식이 아닙니다. 대신 mysqldump
다음과 같이 사용해야 합니다 .
mysqldump -u root -p db_test > ~/backup/db_test.sql
/var/lib/mysql
디렉터리 내에 백업 디렉터리를 만들지 말고 다른 곳에 두십시오. 위의 예에서 db_test를 root
데이터베이스 사용자 이름으로 바꾸고 db_test를 데이터베이스 이름으로 바꿉니다. 로컬 계정이 아닌 데이터베이스 사용자의 비밀번호인 비밀번호를 입력하라는 메시지가 표시됩니다. 이 작업이 모두 완료되면 ~/backup/db_test.sql에 전체 백업이 포함됩니다. 백업을 복원하려면
mysql -u root -p db_test < ~/backup/db_test.sql
그러면 백업이 MySQL로 가져옵니다. 위의 이름을 해당 값으로 다시 바꿉니다.