나는 사용하고있다MySQL존재하다우분투기계.
아래의 데이터베이스 파일을 물리적으로 이동해야 합니다 /var/lib/mysql/
(모든 데이터베이스 디렉터리가 여기에 있음).
두 개의 데이터베이스가 있다고 가정해 보겠습니다.db_1그리고db_2, 그래서 경로 아래에 두 디렉토리( 및 )가 모두 표시됩니다 db_1/
. 이 두 데이터베이스 디렉토리에는 데이터베이스의 모든 테이블 정보를 저장하는 파일이 많이 있습니다.db_2/
/var/lib/mysql/
.frm
.MYD
.MYI
예를 들어 db_1/
디렉터리에는 다음 파일이 포함되어 있습니다.
/var/lib/mysql/db_1# ls
cars.frm
cars.MYD
cars.MYI
customers.frm
customers.MYD
customers.MYI
departments.frm
departments.MYD
departments.MYI
...
포함하는자동차,고객,부서테이블 정보.
다음과 같은 간단한 작업을 수행하려면 쉘 스크립트가 필요합니다.
db_1_temp
라는 이름의 새 디렉터리를 만듭니다 ./var/lib/mysql/
관련 파일 이동자동차그리고고객디렉토리의 테이블을 디렉토리
db_1
로db_1_temp
db_2
디렉터리의 파일을db_1
디렉터리 로 이동
노트, 사용자에게 필요한뿌리접근 권한 /var/lib/mysql/
다른 응용 프로그램에서 실행할 수 있도록 이러한 내용을 .sh 파일에 넣어야 합니다.
죄송합니다. 쉘 스크립트에 대해서는 모르지만 이와 같은 것이 필요합니다. 누구든지 도움을 주시면 감사하겠습니다. 이 쉘 스크립트는 어렵지 않을 것이라고 생각합니다. 지금은 다른 소프트웨어 개발로 바쁘기 때문에 시간을 내어 쉘을 배우려고 노력합니다. 감사합니다!
답변1
데이터베이스 디렉터리의 이름을 직접 바꾸지 마십시오. 대신 데이터베이스를 덤프하고 새 데이터베이스 이름을 만든 다음(새 디렉터리 이름이 만들어짐) 데이터베이스를 새 데이터베이스 이름으로 다시 덤프합니다.
mysqldump -u username -p olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql
데이터베이스가 제대로 작동하는지 확인한 후에는 데이터를 삭제할 수 있습니다.
mysqladmin -u username -p drop oldatabase.
바라보다여기참고용.
귀하의 경우 tmp 데이터베이스를 생성하고, db_1 데이터베이스를 해당 임시 데이터베이스에 덤프하고, db_2 데이터베이스를 삭제하고 다시 생성한 다음, db_2 데이터베이스를 비어 있는 새 db_1 데이터베이스에 덤프할 수 있습니다.
답변2
글쎄요, 단지 파일을 이동할 뿐이므로 복잡한 것은 없습니다. 단지 3개의 mv 명령만 있으면 됩니다.
#!/bin/bash
mkdir /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_1/cars* /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_1/customers* /var/lib/mysql/db_1_temp
mv /var/lib/mysql/db_2/* /var/lib/mysql/db_1_temp
그러나 새 데이터베이스를 사용할 계획이라면 비어 있는 새 데이터베이스를 만든 다음 mysqldump를 사용하여 필요한 테이블을 가져오는 것이 가장 좋습니다.