데이터베이스 파일을 이동하는 데 필요한 간단한 쉘 스크립트

데이터베이스 파일을 이동하는 데 필요한 간단한 쉘 스크립트

나는 사용하고있다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

... 

포함하는자동차,고객,부서테이블 정보.

다음과 같은 간단한 작업을 수행하려면 쉘 스크립트가 필요합니다.

  1. db_1_temp라는 이름의 새 디렉터리를 만듭니다 ./var/lib/mysql/

  2. 관련 파일 이동자동차그리고고객디렉토리의 테이블을 디렉토리 db_1db_1_temp

  3. 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를 사용하여 필요한 테이블을 가져오는 것이 가장 좋습니다.

관련 정보