2009-05-05 5 views
6

MYSQL 데이터베이스 백업 및 복원 명령 줄을 사용하고 있습니다. 뷰와 프로 시저가 포함 된 데이터베이스 데이터 1이 있어야합니다. 내가 Cmd를 위에 사용하는 경우 Cmd line에, 나는 mysqldumpMySQL 백업 및 명령 줄에서 복원

..>bin> mysqldump -u root -proot Data1 > Datafile.mysql 

를 사용하는 경우 은, 그것은 Dtafile.mysql 이름이 MySQL을의 bin 폴더에 백업 파일을 만듭니다.

하지만 문제는 프로 시저가 아닌 테이블 만 백업하는 것입니다. 나는 새 데이터베이스 '데이터 2 "그것이 무엇을

..bin> mysql - u root -proot Data2 < Dataafile.mysql 

이를 복원 있어요 때

그리고, 그것은 모든 테이블을 만들고 테이블에 뷰를 변환하고 어떤 절차가 복원되지 않았습니다.

모든 테이블, 뷰 및 절차로 전체 데이터베이스 백업을 복원 할 수 없습니다.

여러분 중 누구라도 도와 드릴 수 있습니다 .. 나는 매우 고맙습니다.

답변

10

"--routines"매개 변수를 mysqldump에 포함하면 절차가 덤프됩니다.

수정 # 1 : mysqldump는 명령이 지금과 같아야합니다 ,

mysqldump -u root -proot --routines Data1 > Datafile.mysql 

편집 # 2 : 당신뿐만 아니라 당신이 원하는 경우 --add-드롭 테이블 스위치를 추가 할 필요가
귀하의 견해를 보존하십시오. 그 이유는 뷰가 두 단계로 생성되기 때문입니다 (먼저 더미 테이블로, 실제 뷰로). 또한 테이블과 뷰가 동일한 이름 공간을 공유하므로 mysqlclient에서 "테이블 표시"명령으로 제공되는 출력에 오해하지 마십시오. 그 명령이 당신에게 다음보기 빙고,보기가 올바르게 복원되었는지 확인하기 위해 당신이 다른 데이터베이스의 관련 테이블에 일부 데이터를 삽입 한 다음에 선택 쿼리를 실행하는 경우 "Create View View vw_test"를 사용하십시오. 보기, 데이터가 묶여 있다면 황소 눈을 맞고, 다시 자신을 두들겨 :) 다른 사람은 항상 Stackoverflow 에서이 멋진 사회로 돌아갈 수 있습니다.

그래서 mysqldump는 명령은 이제 같아야합니다 (뷰를 유지하기 위해)이

mysqldump -u root -proot --routines --add-drop-table Data1 > Datafile.mysql 

HTH

백업 데이터베이스 사용 명령 줄, phpMyAdmin에 또는 MySQL의 관리자에게 세 가지 가장 좋은 방법 MySQL의 데이터베이스 백업이
+1

안녕하세요 어떻게 덤프를 가져 오는 동안 - 루틴을 포함합니까? 당신은 조금 설명해 줄께 –

+0

안녕하세요, 위의 내 대답을 사용하여 명령을 표시하도록 편집했습니다. –

+0

고마워 .. 그것은 작동합니다. 한 가지 더 많은 문제, 저는 직면하고 있습니다. "Data1"에 다른 데이터베이스를 참조하는 뷰가 있습니다. 내가 복원 할 때 모든 뷰를 테이블로 변환합니다. 즉, Data1에서 View vw_test를 가졌지 만 복원 할 때 Name vw_test가있는 테이블이됩니다. 무엇이 문제입니까? 도와주세요. 고마워요. –