이 저장소에는 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). 자세한 내용은 라이센스 파일을 참조하십시오.