28
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi sao lưu cơ sở dữ liệu sản xuất của mình với lệnh sau:
mysqldump -u root --opt --skip-extended-insert --databases my_production_dbTệp kết xuất có các dòng sau gần trên cùng:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `my_production_db `;Để khôi phục cơ sở dữ liệu về một đích khác, tức là. my_debvelopment_db Tôi phải mở tệp kết xuất và chỉnh sửa các bit nơi cơ sở dữ liệu được đặt tên.
Sau đó tôi chạy:
mysql -u root -p <password> < mydumpfileTôi đã không tìm ra một cách khác để làm điều đó.
Khi cơ sở dữ liệu trở nên lớn hơn, điều này trở nên không thực tế.
Tui bỏ lỡ điều gì vậy? Tôi không thể chỉ định nơi tôi muốn khôi phục cơ sở dữ liệu? Tôi có cần một lệnh sao lưu khác không?
UNOR
89.1K24 Huy hiệu vàng202 Huy hiệu bạc345 Huy hiệu Đồng24 gold badges202 silver badges345 bronze badges
hỏi ngày 26 tháng 1 năm 2012 lúc 8:28Jan 26, 2012 at 8:28
@Minaz Câu trả lời là tốt, nhưng tôi muốn thêm một chút nữa.
Vấn đề được gây ra bởi từ khóa CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `my_production_db `; 0. Nếu bạn bỏ qua từ khóa, nó sẽ không chứa bất kỳ nội dung tạo cơ sở dữ liệu nào.
Vì vậy, kết xuất mà không có từ khóa CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `my_production_db `; 0.
mysqldump -u username -p database_name > dump.sqlVà khôi phục nó với tên cơ sở dữ liệu đích.
mysql -u username -p target_database_name < dump.sqlNgoài ra, có một số cách để làm điều này. Xem vấn đề tương tự ở đây (dba.stackexchange).
Đã trả lời ngày 31 tháng 1 năm 2012 lúc 5:02Jan 31, 2012 at 5:02
LQEZLQEZlqez
2.8385 Huy hiệu vàng23 Huy hiệu bạc54 Huy hiệu đồng5 gold badges23 silver badges54 bronze badges
3
Nếu bạn bỏ tùy chọn CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `my_production_db `; 0 nhưng vẫn chỉ định tên cơ sở dữ liệu, bạn sẽ không nhận được các câu lệnh cơ sở dữ liệu. I E:
mysqldump -u root --opt --skip-extended-insert my_production_dbTrên máy phát triển của bạn chỉ cần tạo bất kỳ cơ sở dữ liệu nào bạn muốn khôi phục.
Nam G Vu
31.7K67 Huy hiệu vàng222 Huy hiệu bạc357 Huy hiệu đồng67 gold badges222 silver badges357 bronze badges
Đã trả lời ngày 31 tháng 1 năm 2012 lúc 4:42Jan 31, 2012 at 4:42
Minazminazminaz
5.6101 Huy hiệu vàng31 Huy hiệu bạc29 Huy hiệu đồng1 gold badge31 silver badges29 bronze badges
1
Nếu bạn đã có bãi rác của mình, bạn có thể tước các lệnh để tạo và sử dụng cơ sở dữ liệu. Chỉ cần loại bỏ dòng thứ tư và thứ năm mới.
sed '4d' dump.sql | sed '5d' > dump-striped.sqlĐã trả lời ngày 27 tháng 8 năm 2015 lúc 10:31Aug 27, 2015 at 10:31
NetActionNetactionnetAction
1.7771 Huy hiệu vàng17 Huy hiệu bạc18 Huy hiệu đồng1 gold badge17 silver badges18 bronze badges
1
Trên Windows XAMPP, tôi đã sử dụng các lệnh sau để đạt được điều này
Xuất khẩu
mysqldump -u root -p mydb > mydb.sqlNhập khẩu
mysql -u root -p mynewdb < mydb.sqlĐã trả lời ngày 29 tháng 10 năm 2015 lúc 10:19Oct 29, 2015 at 10:19
MukeshmukeshMukesh
7.49920 Huy hiệu vàng105 Huy hiệu bạc152 Huy hiệu Đồng20 gold badges105 silver badges152 bronze badges