하나의 명령으로 특정 수의 MySql 데이터베이스를 내보내는 방법

하나의 명령으로 특정 수의 MySql 데이터베이스를 내보내는 방법

약 100개의 서로 다른 데이터베이스가 포함된 MySql 서버에서 약 20개의 데이터베이스를 내보내야 합니다. 콘솔 명령을 사용하여 데이터베이스 이름 목록을 별도의 파일로 내보낼 수 있습니까? (물론 Linux에서).

답변1

echo "show databases" | mysql -N | while read db
do
  mysqldump ${db} > ${db}.sql
done

grep다음과 같은 원치 않는 데이터베이스를 제거하는 데 사용할 수 있습니다 mysql.information_schema

답변2

백업하려는 각 데이터베이스의 이름을 해당 줄에 포함하는 텍스트 파일을 만듭니다.

예를 들어

db1
reports

그런 다음 이와 같은 스크립트를 사용하십시오.

#!/bin/bash
ERRORS=0

while read db
do
    echo "Processing $db"
    mysqldump -u root -p365576dx "$db" >"$db".sql
    EXITSTATUS=$?
    if [ "$ERRORS" -eq "0" -a "$EXITSTATUS" -ne "0" ]
    then
       ERRORS="$EXITSTATUS"
    fi

done<dbstodump

if [ "$ERRORS" -ne "0" ]
then
    echo "Errors occurred see above for details"
    exit 1
fi

답변3

가장 쉬운 해결책은 명령줄에서 바로 간단한 for 루프를 사용하는 것입니다. 내 예에서는 데이터베이스 를 내보내고 싶습니다 cars.animalscomputers

for db in cars animals computers ; do mysqldump -uuser -ppassword "$db" > "$db.sql" ; done

관련 정보