답변:
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를 어떻게 최적화 할 수 있습니까?
--single-transaction
하기 위해 백업이 실행되는 동안 MyISAM 테이블을 작성하는 경우 일관된 백업이 생성되지 않습니다. 그러나 --single-transaction
모든 InnoDB를 사용하고 있고 mysqldump
실행 중에 블로킹을 피하려면 추가 하는 것이 좋습니다 .
--events
에 추가로 필요한 어떤--routines
과--triggers
당신이 생략--single-transaction
불필요하게 테이블을 잠금 방지하기 위해.