Chuyển hướng đầu ra của mysqldump sang scp


13

Tôi đã làm việc với một linux pro nhiều năm trước, người đã thực hiện thủ thuật tiện lợi này. Anh ta có thể thực hiện một mysqldump nhưng chuyển hướng đầu ra sang kết nối scp / ssh thay vì ghi vào đĩa . Chúng tôi sử dụng sự yên tĩnh này một chút nơi tôi từng làm việc nhưng tôi không thể nhớ làm thế nào để làm điều này nữa.

Bây giờ tôi phải đối mặt với vấn đề ổ cứng trong máy chủ của tôi nằm ở chân cuối cùng và, với mục đích chuyên sâu, được gắn vĩnh viễn dưới dạng chỉ đọc.

Tôi đã hy vọng sử dụng mánh khóe dòng lệnh này để vẫn có thể sao lưu cơ sở dữ liệu của mình vào một máy chủ mới, vì việc viết kết xuất cho diska nd chuyển địa phương rõ ràng là không cần thiết.

Đây có phải là mẹo nhỏ thực sự có thể? Nếu vậy cú pháp là gì?

Tôi đã nhận ra do sự cố hệ thống tệp chỉ đọc Tôi có kinh nghiệm Tôi thậm chí không thể kết nối với mysql để thực hiện kết xuất. Nhưng phản hồi của bạn rất tuyệt và hy vọng sẽ được sử dụng cho người khác trong tương lai


1
"Ý định và mục đích"
Ignacio Vazquez-Abrams

Câu trả lời:


11

mysqldump dbname | ssh root@remoteserver.com "mysql -D dbname"

Cần làm việc :-)

Cũng thiết lập các khóa giữa các hệ thống để bạn có thể làm như vậy nếu không cần đăng nhập / vượt qua :-)


Đây là một công cụ thực sự tiện lợi, chuyển trực tiếp kết xuất vào mysql trên máy chủ từ xa, về cơ bản nhân bản cơ sở dữ liệu là một lệnh. Tôi có đúng không?
xzyfer

1
bạn đã nhận được nó ;-) tất nhiên bạn luôn có thể chỉ cần ấn vào một tệp nhưng tôi thích các bãi chứa vì chúng cho phép bạn cuộn vào bản sao lưu nếu cần :-) trong thời gian thực chỉ bằng cách thay đổi một ip trong các tệp cấu hình của bạn ... Lợi ích rất lớn. Chúng tôi làm điều này trên các công cụ linode của chúng tôi mọi lúc
Glenn Kelley

Tôi cảm thấy như có thể có một số vấn đề đệm ống ở đây?
Phil Hollenback

10
mysqldump ... | ssh ... "cat > out.dmp"

Điều này làm việc rất tốt cho tôi. Tôi đã thiết lập xác thực khóa công khai trên máy tính xách tay Mac OS X của mình và chạy mysqldump -p <dbname> | ssh <user>@<ip_address> "cat > <filename>.sql" Chính xác những gì tôi cần.
harperville

2

Tôi thích câu trả lời của @ GlennKelley, nhưng muốn chỉ ra những điều sau đây:

Chúng tôi đã có một cơ sở dữ liệu là 450 GB, nhưng chỉ có 500 GB được cung cấp trên máy chủ. Chúng tôi không thể xuất khẩu trong nước, vì vậy chúng tôi xuất khẩu từ xa. Chúng tôi xác nhận đầu ra và có hàng trăm trường hợp đầu ra bị hỏng do sự cố đệm ống.

Giải pháp tốt nhất ở đây là, từ máy chủ đích nơi bạn muốn kết xuất của mình, chạy mysqldumpnhưng sử dụng -htùy chọn cho máy chủ. Trỏ máy chủ đến máy chủ MySQL và xuất dữ liệu bằng cách sử dụng a >.

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.