mysqldump의 출력을 scp로 리디렉션


13

나는 몇 년 전에이 멋진 트릭을 한 리눅스 프로와 함께 일했습니다. 그는 mysqldump를 수행 할 수 있지만 디스크에 쓰지 않고 출력을 scp / ssh 연결로 리디렉션합니다 . 우리는 내가 일했던 곳 에서이 조용한 것을 조금 사용했지만 더 이상 이것을하는 방법을 기억할 수 없습니다.

이제 서버의 하드 드라이브가 마지막 다리에 있고 집중적 인 목적으로 읽기 전용으로 영구적으로 마운트되는 문제에 직면했습니다.

로컬 디스크에 덤프를 작성하고 전송하는 것은 분명히 문제가되지 않기 때문에이 명령 줄을 사용하여 데이터베이스를 새 서버에 백업 할 수 있기를 바랐습니다.

이것이 실제로 가능한 작은 트릭입니까? 그렇다면 구문은 무엇입니까?

이후 읽기 전용 파일 시스템 문제로 인해 덤프를 수행하기 위해 mysql에 연결할 수 없다는 것을 알고 있습니다. 그러나 귀하의 피드백은 훌륭하고 앞으로 다른 사람이 사용하기를 바랍니다.


1
"의도 및 목적"
Ignacio Vazquez-Abrams

답변:


11

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

작동해야합니다 :-)

시스템간에 키를 설정하면 로그인 / 패스가 필요하지 않습니다. :-)


이것은 원격 서버의 mysql에 직접 덤프를 파이프하여 실제로 데이터베이스를 복제하는 것이 하나의 명령입니다. 제가 맞습니까?
xzyfer

1
당신은 그것을 얻었습니다 .-) 물론 당신은 항상 단순히 파일로 푸시 할 수는 있지만 덤프를 좋아합니다. 필요한 경우 백업으로 롤백 할 수 있기 때문에 :-) 설정 파일에서 ip를 변경하여 실시간으로 ... 큰 혜택. 우리는 항상 우리의 linode 재료에 대해 이렇게
Glenn Kelley

파이프 버퍼링 문제가있을 수 있다고 생각합니까?
Phil Hollenback


2

나는 @GlennKelley의 답변을 좋아하지만 다음을 지적하고 싶었습니다.

우리는 450GB의 데이터베이스를 가지고 있었지만 호스트에 500GB 만 프로비저닝했습니다. 로컬로 내보낼 수 없으므로 원격으로 내보냈습니다. 출력을 검증했으며 파이프 버퍼링 문제로 인해 출력이 손상된 수백 개의 인스턴스가있었습니다.

여기서 가장 좋은 해결책은 덤프를 끝내려는 대상 호스트에서 실행 mysqldump하지만 -h호스트 옵션을 사용하는 것입니다. 호스트를 MySQL 서버로 지정하고를 사용하여 데이터를 내 보냅니다 >.

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.