mysqldump -all-databases에 모든 객체가 포함되어 있습니까?


답변:


21

mysqldump 없음-모든 데이터베이스에 모든 객체가 포함되어 있지 않습니다

mysqldump --help

  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.

따라서 --all-databases를 사용하는 mysqldump는 모든 데이터베이스 만 덤프합니다.

모든 데이터베이스를 새 서버로 마이그레이션하려면 전체 백업을 수행해야합니다.

mysqldump 전체 mysql 인스턴스

mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql

단점은이 방법으로 생성 된 백업은 mysqldump가 생성 된 것과 동일한 주요 릴리스 버전의 mysql로만 다시로드 할 수 있다는 것입니다. 즉, MySQL 5.0 데이터베이스의 mysqldump --all-databases는 5.1 또는 5.5로로드 할 수 없습니다. 이유 ? mysql 스키마는 주요 릴리스마다 완전히 다릅니다.

읽기 쉽고 이식 가능한 사용자를 위해 SQL Grants를 덤프하는 일반적인 방법은 다음과 같습니다.

mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql

RolandoMySQLDBA의 답변에서 대규모 데이터베이스의 mysqldump를 어떻게 최적화 할 수 있습니까?


1
당신은 잊었 --events 에 추가로 필요한 어떤 --routines--triggers당신이 생략 --single-transaction불필요하게 테이블을 잠금 방지하기 위해.
Michael-sqlbot

1
명확하게 --single-transaction하기 위해 백업이 실행되는 동안 MyISAM 테이블을 작성하는 경우 일관된 백업이 생성되지 않습니다. 그러나 --single-transaction모든 InnoDB를 사용하고 있고 mysqldump실행 중에 블로킹을 피하려면 추가 하는 것이 좋습니다 .
James L
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.