이 저장소에는 PHP를 사용하여 데이터베이스를 덤프하는 데 사용하기 쉬운 클래스가 포함되어 있습니다. 현재 MySQL, PostgreSQL, SQLite 및 MongoDB가 지원됩니다. 뒤에서는 mysqldump , pg_dump , sqlite3 및 mongodump 사용됩니다.
다음은 다양한 드라이버를 사용하여 데이터베이스 덤프를 생성하는 방법에 대한 간단한 예입니다.
MySQL
SpatieDbDumperDatabasesMySql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->dumpToFile('dump.sql');포스트그레SQL
SpatieDbDumperDatabasesPostgreSql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->dumpToFile('dump.sql');SQLite
SpatieDbDumperDatabasesSqlite::create()
->setDbName($pathToDatabaseFile)
->dumpToFile('dump.sql');includeTables 옵션을 사용하려면 Sqlite 버전 3.32.0이 필요합니다.
몽고DB
SpatieDbDumperDatabasesMongoDb::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->dumpToFile('dump.gz');우리는 동급 최고의 오픈 소스 패키지를 만드는 데 많은 리소스를 투자합니다. 유료 제품 중 하나를 구매하여 우리를 지원할 수 있습니다.
귀하가 사용하고 있는 당사 패키지를 언급하면서 귀하의 고향에서 엽서를 보내주셔서 진심으로 감사드립니다. 연락처 페이지에서 주소를 확인하실 수 있습니다. 우리는 수신된 모든 엽서를 가상 엽서 월에 게시합니다.
덤프를 위해서는 MySQL-db의 mysqldump 설치해야 합니다.
덤프를 위해서는 PostgreSQL-db의 pg_dump 설치해야 합니다.
덤프를 위해서는 SQLite-db의 sqlite3 설치해야 합니다.
덤프를 위해서는 MongoDB-db의 mongodump 설치해야 합니다.
덤프 파일을 압축하려면 gzip 및/또는 bzip2 설치해야 합니다.
작곡가를 통해 패키지를 설치할 수 있습니다.
작곡가는 spatie/db-dumper가 필요합니다.
이것은 MySql db의 덤프를 생성하는 가장 간단한 방법입니다.
SpatieDbDumperDatabasesMySql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->dumpToFile('dump.sql');PostgreSQL로 작업하는 경우 해당 덤퍼를 사용하면 됩니다. 대부분의 방법은 MySql과 SQL 모두에서 사용할 수 있습니다. 및 PostgreSql-dumper.
SpatieDbDumperDatabasesPostgreSql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->dumpToFile('dump.sql'); mysqldump (또는 pg_dump ) 바이너리가 기본 위치가 아닌 위치에 설치된 경우 setDumpBinaryPath() -함수를 사용하여 패키지에 알릴 수 있습니다.
SpatieDbDumperDatabasesMySql::create()
->setDumpBinaryPath('/사용자 정의/위치')
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->dumpToFile('dump.sql'); 애플리케이션이 배포되고 호스트(기본값은 127.0.0.1)를 변경해야 하는 경우 setHost() -함수를 추가할 수 있습니다.
SpatieDbDumperDatabasesMySql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->setHost($호스트)
->dumpToFile('dump.sql');데이터베이스 덤프를 생성할 때 AUTO_INCREMENT 값의 포함을 제어해야 할 수도 있습니다. 이는 기본 키 충돌을 방지하거나 환경 간에 데이터를 전송할 때 ID 일관성을 유지하는 데 중요할 수 있습니다.
덤프의 테이블에서 AUTO_INCREMENT 값을 생략하려면 SkipAutoIncrement 메소드를 사용하십시오. 이는 특정 AUTO_INCREMENT 값이 이미 존재할 수 있는 다른 데이터베이스로 덤프를 가져올 때 또는 정확한 값이 관련이 없는 경우 충돌을 방지하는 데 특히 유용합니다.
SpatieDbDumperDatabasesMySql::create()
->setDbName('데이터베이스 이름')
->setUserName('사용자 이름')
->setPassword('비밀번호')
->자동 증가 건너뛰기()
->dumpToFile('dump.sql');기본적으로 AUTO_INCREMENT 값은 덤프에 포함됩니다. 그러나 이전에 SkipAutoIncrement 메소드를 사용했고 AUTO_INCREMENT 값이 후속 덤프에 포함되도록 하려면 dontSkipAutoIncrement 메소드를 사용하여 이를 명시적으로 포함하십시오.
SpatieDbDumperDatabasesMySql::create()
->setDbName('데이터베이스 이름')
->setUserName('사용자 이름')
->setPassword('비밀번호')
->dontSkip자동 증가()
->dumpToFile('dump.sql'); 일부 애플리케이션이나 환경에서는 데이터베이스 자격 증명이 개별 구성 요소 대신 URL로 제공됩니다. 이 경우 개별 메소드 대신 setDatabaseUrl 메소드를 사용할 수 있습니다.
SpatieDbDumperDatabasesMySql::create()
->setDatabaseUrl($databaseUrl)
->dumpToFile('dump.sql');URL을 제공하면 패키지는 자동으로 URL을 구문 분석하고 해당 덤퍼에 개별 구성 요소를 제공합니다.
예를 들어, URL mysql://username:password@hostname:3306/dbname 제공하면 덤퍼는 포트 3306 에서 실행되는 hostname 호스트를 사용하고 username 및 password 사용하여 dbname 에 연결합니다.
배열 사용:
SpatieDbDumperDatabasesMySql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->includeTables(['table1', 'table2', 'table3'])
->dumpToFile('dump.sql');문자열 사용:
SpatieDbDumperDatabasesMySql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->includeTables('테이블1, 테이블2, 테이블3')
->dumpToFile('dump.sql');mysqldump 명령의 옵션으로 " --column-statistics=0 "을 사용하려면 doNotUseColumnStatistics() 메서드를 사용할 수 있습니다.
mysqldump 8을 설치한 경우 기본적으로 information_schema 데이터베이스의 column_statics 테이블을 쿼리합니다. 5.7과 같은 일부 이전 버전의 MySql(서비스)에는 이 테이블이 존재하지 않습니다. 따라서 mysqldump 실행 중에 예외가 발생할 수 있습니다. 이를 방지하려면 doNotUseColumnStatistics() 메서드를 사용할 수 있습니다.
SpatieDbDumperDatabasesMySql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->doNotUseColumnStatistics()
->dumpToFile('dump.sql');배열을 사용하여 덤프에서 테이블을 제외할 수 있습니다.
SpatieDbDumperDatabasesMySql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->설정비밀번호($password)
->excludeTables(['table1', 'table2', 'table3'])
->dumpToFile('dump.sql');또는 문자열을 사용하여:
SpatieDbDumperDatabasesMySql::create()
->setDb이름($데이터베이스이름)
->setUserName($userName)
->setPassword($password)
->excludeTables('테이블1, 테이블2, 테이블3')
->dumpToFile('dump.sql'); doNotCreateTables 사용하여 create 문 작성을 방지할 수 있습니다.
$dumpCommand = MySql::create()
->setDbName('데이터베이스 이름')
->setUserName('사용자 이름')
->setPassword('비밀번호')
->doNotCreateTables()
->getDumpCommand('dump.sql', 'credentials.txt'); doNotDumpData 사용하여 행 데이터 쓰기를 방지할 수 있습니다.
$dumpCommand = MySql::create()
->setDbName('데이터베이스 이름')
->setUserName('사용자 이름')
->setPassword('비밀번호')
->doNotDumpData()
->getDumpCommand('dump.sql', 'credentials.txt'); dump 명령에 임의의 옵션을 추가하려면 addExtraOption 사용할 수 있습니다.
$dumpCommand = MySql::create()
->setDbName('데이터베이스 이름')
->setUserName('사용자 이름')
->setPassword('비밀번호')
->addExtraOption('--xml')
->getDumpCommand('dump.sql', 'credentials.txt'); MySql로 작업하는 경우 --databases 추가 옵션으로 사용하여 데이터베이스 이름을 설정할 수 있습니다. 이는 --add-drop-database mysqldump 옵션과 함께 사용할 때 특히 유용합니다(mysqldump 문서 참조).
$dumpCommand = MySql::create()
->setUserName('사용자 이름')
->setPassword('비밀번호')
->addExtraOption('--데이터베이스 데이터베이스 이름')
->addExtraOption('--추가-드롭-데이터베이스')
->getDumpCommand('dump.sql', 'credentials.txt'); MySql을 사용하면 --all-databases 추가 옵션을 사용할 수도 있습니다. 이는 지정된 MySQL 연결에 있는 모든 데이터베이스의 전체 백업을 실행하려는 경우에 유용합니다.
$dumpCommand = MySql::create()
->setUserName('사용자 이름')
->setPassword('비밀번호')
->addExtraOption('--모든 데이터베이스')
->getDumpCommand('dump.sql', 'credentials.txt'); ->addExtraOption('--databases dbname') 또는 ->addExtraOption('--all-databases') 사용하면 이전 ->setDbName() 호출에 설정된 데이터베이스 이름이 재정의됩니다.
출력 파일을 압축하려면 압축기 클래스를 사용할 수 있습니다.
기본적으로 제공되는 두 개의 압축기가 있습니다.
GzipCompressor - gzip 사용하여 db 덤프를 압축합니다. 이것을 사용하기 전에 시스템에 gzip 설치되어 있는지 확인하십시오.
Bzip2Compressor - bzip2 사용하여 db 덤프를 압축합니다. 이것을 사용하기 전에 시스템에 bzip2 설치되어 있는지 확인하십시오.
$dumpCommand = MySql::create()
->setDbName('데이터베이스 이름')
->setUserName('사용자 이름')
->setPassword('비밀번호')
->useCompressor(new GzipCompressor()) // 또는 `new Bzip2Compressor()`->dumpToFile('dump.sql.gz'); Compressor 인터페이스를 구현하여 자신만의 압축기를 만들 수 있습니다. 해당 인터페이스는 다음과 같습니다.
네임스페이스 SpatieDbDumperCompressors;인터페이스 압축기
{공용 함수 useCommand(): 문자열;공용 함수 useExtension(): 문자열;
} useCommand 단순히 db 덤프가 펌핑될 압축 명령을 반환해야 합니다. GzipCompression 구현은 다음과 같습니다.
네임스페이스 SpatieDbDumperCompressors;클래스 GzipCompressor는 압축기를 구현합니다.
{공용 함수 useCommand(): 문자열{return 'gzip';
}공용 함수 useExtension(): string{return 'gz';
}
}$ 작곡가 테스트
최근 변경된 사항에 대한 자세한 내용은 변경 로그를 참조하세요.
자세한 내용은 CONTRIBUTING을 참조하세요.
보안 취약점을 보고하는 방법에 대한 보안 정책을 검토하세요.
프리크 반 데르 헤르텐
모든 기여자
초기 PostgreSQL 지원은 Adriano Machado가 기여했습니다. SQlite 지원은 Peter Matseykanets가 기여했습니다.
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.