Có mysqldump -all-databasesbao 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-databasesbao 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.sqlHạ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.sqlHã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-transactionsẽ 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-transactionlà 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 mysqldumpchạy.
                    
--eventsđó là cần thiết, thêm vào--routinesvà--triggersvà bạn cũng bỏ qua--single-transactionđể tránh bị khóa bảng không cần thiết.