최근에 스테이징 데이터베이스 서버를 MySQL 5.0.84에서 5.1.72로 업그레이드했습니다. 업그레이드 후 mysqldump를 복원하려고 합니다. 덤프의 데이터베이스 이름은 입니다 gss-app
. 그러나 아래의 데이터베이스 폴더 이름 /var/lib/mysql
은 로 바뀌었지만 gss@022dapp
mysql에 로그인하여 입력하면 mysql -u root -p
데이터베이스 show databases;
이름만 나열 되고 명령을 사용하여 테이블을 나열할 gss-app
수 있습니다 .Use Database gss-app
show tables
오류로 인해 복원이 실패했습니다 Got a packet bigger than --max_allowed_packet size
. 그 당시 데이터베이스가 부분적으로 복원되었고 그 기회에 gss@022dapp
폴더 이름을 gss-app
mysql 쉘로 바꾸고 로그인했습니다.
데이터베이스 이름이 다음과 같이 나열되어 있는데 @mysql@gss-app
데이터베이스에 들어갈 수 없습니다. 이제 를 사용하여 데이터베이스 복원을 다시 실행하고 --max_allowed_packet_size=1024M
있는데 gss@022dapp
폴더가 /var/lib/mysql
.
의 폴더 이름에 대해 걱정해야 합니까 /var/lib/mysql
? 아니면 복원하는 동안 다른 데이터베이스 이름을 사용할 수 있나요?
답변1
특히 복원하는 동안 다른 이름을 사용하는 것에 대한 질문에 대해: mysqldump를 사용하면 mysqldump databasename
또는 mysqldump --databases databasename
. 전자는 그 안에 진술을 넣지 않지만 create db
후자는 진술을 넣습니다.
이전 명령문으로 덤프를 만든 경우 새 DB를 수동으로 생성하고 mysql newdbname < dump.sql
. 후자의 경우 덤프 파일을 열고 이름을 변경할 수 있습니다.
mysqldump
참고로, MySQL 측에서 이러한 차이점을 갖는 것은 나쁜 디자인이라고 생각합니다 . BTW. 구문 없이 백업하는 경우 --databases
먼저 데이터베이스를 만들어야 복원할 수 있습니다. 그리고 해당 데이터베이스는 데이터베이스가 원래 가지고 있던 것과 다른 문자 집합이나 데이터 정렬을 가질 수 있습니다. 내 생각에는 데이터베이스를 덤프하면 모든 데이터와 메타데이터가 포함되어야 합니다. --routines
및 을 공급해야 하는 경우에도 마찬가지입니다 --events
. 다음과 같은 옵션이 --no-routines
편리할 것이라고 상상할 수 있지만 기본적으로는~ 아니다덤핑 루틴? 흠.