2011-12-09 36 views

Trả lời

64

Hãy thử nó với Mysqldump

#mysqldump --host=the.remotedatabase.com -u yourusername -p yourdatabasename > /User/backups/adump.sql 
45

Các bạn có quyền truy cập vào SSH?

Bạn có thể sử dụng lệnh này trong vỏ để sao lưu toàn bộ cơ sở dữ liệu:

mysqldump -u [username] -p[password] [databasename] > [filename.sql] 

Đây thực sự là một lệnh tiếp theo là > điều hành, trong đó nói rằng, "lấy đầu ra của lệnh trước đó và lưu nó trong tệp này. "

Lưu ý: Việc thiếu khoảng cách giữa -p và mật khẩu mysql không phải là lỗi đánh máy. Tuy nhiên, nếu bạn để cờ -p, nhưng mật khẩu thực sẽ để trống, bạn sẽ được nhắc nhập mật khẩu. Đôi khi điều này được khuyến khích để giữ mật khẩu trong lịch sử bash của bạn.

+6

mysql người đàn ông: Nếu bạn sử dụng biểu mẫu tùy chọn ngắn (-p), bạn ** không thể * * có ** khoảng trắng ** giữa tùy chọn và mật khẩu. –

+1

Giải thích "không gian" giữa -p và mật khẩu thực tế –

+0

nếu bạn sử dụng SSH, bạn nên đề cập đến việc sử dụng SCP hoặc SFTP để lưu tệp kết xuất trong máy tính cục bộ như được hỏi trong câu hỏi – imakin

31

Không ai đề cập đến bất cứ điều gì về tùy chọn - giao dịch đơn lẻ. Mọi người nên sử dụng nó theo mặc định cho các bảng InnoDB để đảm bảo tính nhất quán của dữ liệu. Trong trường hợp này:

mysqldump --single-transaction -h [remoteserver.com] -u [username] -p [password] [yourdatabase] > [dump_file.sql] 

Điều này đảm bảo kết xuất được chạy trong một giao dịch riêng biệt với những người khác, ngăn ngừa sao lưu giao dịch một phần. Ví dụ:

Ví dụ: hãy xem xét bạn có máy chủ trò chơi nơi mọi người có thể mua bánh răng bằng tín dụng tài khoản của họ. về cơ bản có 2 hoạt động chống lại các cơ sở dữ liệu:

  1. giảm trừ số tiền từ các khoản tín dụng của họ
  2. Thêm vào bánh răng để kho vũ khí của họ

Bây giờ nếu bãi xảy ra ở giữa các hoạt động này, lần sau khi bạn khôi phục bản sao lưu sẽ dẫn đến việc người dùng mất mục đã mua, bởi vì thao tác thứ hai không được bán phá giá trong tệp kết xuất SQL.

Mặc dù đó chỉ là tùy chọn , về cơ bản không có nhiều lý do khiến bạn không sử dụng tùy chọn này với mysqldump.

+0

. !!! –

+0

Ngoài ra tốt !! –

18

Chủ đề này hiển thị trên trang đầu tiên của kết quả google của tôi, vì vậy, đây là một mẹo nhỏ hữu ích cho người mới.

Bạn cũng có thể đổ sql và gzip nó trong một dòng:

mysqldump -u [username] -p[password] [database_name] | gzip > [filename.sql.gz] 
2
mysqldump -h [domain name/ip] -u [username] -p[password] [databasename] > [filename.sql] 
+3

Có thực sự là '-p [mật khẩu]' và không phải '-p [mật khẩu] '? –

+3

@ArtjomB. Có, và nếu mật khẩu của bạn có các ký tự đặc biệt, hãy đặt nó trong dấu ngoặc kép: '-p'pa $$ w0rd !!!! '' –

-1

bạn có thể chọn một cách khác:

mysql -u [username] [databasename] 

Và chọn file sql của bạn như:

source mydumpdatabase.sql 
+0

Đó là cách bạn * khôi phục * bản sao lưu, không phải cách bạn tạo. – Quentin

Các vấn đề liên quan