Có mysqldump -all-databases
bao gồm tất cả các đối tượng?
Tôi phải di chuyển tất cả các cơ sở dữ liệu sang máy chủ mới.
Có mysqldump -all-databases
bao gồm tất cả các đối tượng?
Tôi phải di chuyển tất cả các cơ sở dữ liệu sang máy chủ mới.
Câu trả lời:
Không có mysqldump -all-cơ sở dữ liệu không bao gồm tất cả các đối tượng
mysqldump --help
-A, --all-databases Dump all the databases. This will be same as --databases
with all databases selected.
Vì vậy, mysqldump với --all-cơ sở dữ liệu chỉ kết xuất tất cả các cơ sở dữ liệu.
Để di chuyển tất cả các cơ sở dữ liệu sang một máy chủ mới, bạn nên sao lưu hoàn chỉnh:
mysqldump toàn bộ một ví dụ mysql
mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql
Hạn chế là các bản sao lưu được tạo theo cách này chỉ có thể được tải lại vào cùng một phiên bản phát hành chính của mysql mà mysqldump đã được tạo. Nói cách khác, một cơ sở dữ liệu mysqldump --all từ cơ sở dữ liệu MySQL 5.0 có thể được tải trong 5.1 hoặc 5.5. Nguyên nhân ? Lược đồ mysql hoàn toàn khác nhau giữa các bản phát hành chính.
Đây là cách chung để kết xuất SQL Grants cho người dùng dễ đọc và dễ mang theo hơn
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
Hãy xem câu trả lời từ RolandoMyQueryDBA về Làm thế nào tôi có thể tối ưu hóa một mysqldump của một cơ sở dữ liệu lớn?
--single-transaction
sẽ không tạo ra một bản sao lưu nhất quán nếu có các bảng MyISAM được ghi trong khi bản sao lưu chạy. Tuy nhiên, thêm --single-transaction
là một ý tưởng tốt nếu bạn đang sử dụng tất cả InnoDB và muốn tránh bị chặn trong khi mysqldump
chạy.
--events
đó là cần thiết, thêm vào--routines
và--triggers
và bạn cũng bỏ qua--single-transaction
để tránh bị khóa bảng không cần thiết.