
다음 명령을 사용하여 대규모 프로덕션 DB를 한 호스트에서 다른 호스트로 마이그레이션하기 위해 파이프된 명령을 사용하고 있습니다.
mysqldump <someparams> | pv | mysql <someparams>
그리고 한 서버에서 다른 서버로 전달되는 SQL에서 라인 23(또는 첫 번째 X 라인이라고 가정)(파일로 저장되거나 단순히 bash 출력에 저장됨)을 추출해야 합니다.
내가 시도한 것:
less
적어도 출력 스크롤을 보려면 출력에서 연결 하지만 운이 좋지는 않습니다.mysqldump <someparams> | pv | mysql <someparams> | less
에 대해 읽어보았
sed
으나 나에게 유용하지 않음head를 사용하여 파일에 쓰지만 비어 있음
mysqldump <someparams> | pv | mysql <someparams> | head -n 25 > somefile.txt
내가 가진 유일한 요구 사항은 이 .sql 파일을 저장할 수 없다는 것입니다.
어떤 아이디어?
감사해요
답변1
와 함께zsh
mysqldump <someparams> |
pv > >(sed '22,24!d' > saved-lines-22-to-24.txt) |
mysql <someparams>
bash
(또는 ) 사용 zsh
:
mysqldump <someparams> |
pv |
tee >(sed '22,24!d' > saved-lines-22-to-24.txt) |
mysql <someparams>
(단, bash
해당 프로세스를 기다리지 않으므로 스크립트에서 다음 명령을 실행할 때까지 완료된다는 sed
보장은 없습니다 .)saved-lines-22-to-24.txt
sed
아니면 다음과 같이 작성 해야 할 수도 있습니다 .
mysqldump <someparams> |
pv |
sed '22,24 w saved-lines-22-to-24.txt' |
mysql <someparams>
이를 출력으로 사용하려면 다음을 사용하십시오 zsh
.
{mysqldump <someparams> |
pv > >(sed '22,24!d' >&3) |
mysql <someparams>} 3>&1
또는 bash
/ zsh
:
{ mysqldump <someparams> |
pv |
tee >(sed '22,24!d' >&3)
mysql <someparams>
} 3>&1