AWS Session Manager를 사용한 장기 실행 데이터 가져오기 작업
3217 단어 aws
AWS Session Manager은 AWS 콘솔을 통해 시스템에 연결할 수 있고 ssh 키를 관리해야 하거나 네트워크에서 외부 공개 액세스를 잠그는 것을 기억해야 하는 것에 대해 걱정할 필요가 없도록 하여 삶을 단순화하는 좋은 방법입니다. 나는 sysadmin-y 작업을 수행해야 할 때 이것을 사용하고 있으며 요새 호스트를 관리하는 것을 조금 더 간단하게 만듭니다.
지난 주에 내가 한 일 중 하나는 이것을 사용하여 Amazon Aurora를 벤치마킹하는 것입니다. 그 중 일부는 소량의 데이터(8억 개 이상의 행) 가져오기/대량 로드를 의미합니다. 세션이 20분 후에 종료된다는 문제가 발생했고 세션을 계속 '간지럽게' 열기 위해 세션을 돌보고 싶지 않았습니다.
덮개 아래에서 실행되는 Linux를 감안할 때 나는 Solaris 시스템에서 작업하는 동안 나에게 도움이 된 과거의 몇 가지 트릭을 시도하기로 결정했습니다.
내 계획은 프로세스를 시작한 다음 배경으로 옮기는 것이었습니다. &를 사용하여 백그라운드 작업으로 시작하고 nohup을 사용하여 터미널 세션이 프로세스를 종료하지 않는지 확인했지만 이러한 접근 방식 중 어느 것도 작동하지 않았습니다. 내 솔루션의 기초로 사용한 StackOverflow에서 이에 대한 깔끔한 솔루션을 찾았습니다.
I use environment variables to hold values such as the DB host, username and password just in case you wonder what the $ values below are. Substitute your own.
mysql 클라이언트를 사용하여 Amazon Aurora에 연결하고 로드를 시작했습니다.
LOAD DATA LOCAL INFILE '/data/part.tbl' INTO TABLE PART FIELDS TERMINATED BY '|';
이것이 실행되면 CTRL과 Z를 누른 다음 프로세스를 일시 중단했습니다. 다음과 같이 표시되어야 합니다.
mysql >
[1]+ Stopped mysql -h$DBHOST -u$DBUSER -p"$DBPASS"
그런 다음 bg 명령을 사용하여 배경으로 이동했습니다.
$ > bg
[1]+ Stopped mysql -h$DBHOST -u$DBUSER -p"$DBPASS" &
후행 및 의미가 이제 깨어나서 백그라운드에서 실행 중임을 의미해야 합니다. 다음은 작업 명령을 사용하여 확인할 수 있습니다.
$ > jobs
[1]+ Stopped mysql -h$DBHOST -u$DBUSER -p"$DBPASS"
다음으로 ps -ef | grep mysql을 실행하여 실행 중인 프로세스를 확인합니다. 이것이 왜 필요한지 잘 모르겠지만, 나는 단지 내가 프로세스를 볼 수 있고 PID가 무엇인지 확인하고 내가 해를 끼치지 않았는지 확인하고 싶었습니다.
또한 mysql 클라이언트의 다른 인스턴스를 시작할 수 있으며 mysql에서 mysql 연결/프로세스를 표시해야 합니다.
mysql > show full processlist;
여기에서 이제 disown 명령을 사용하여 이 셸에서 PID를 분리할 수 있습니다. 이것은 쉘이 시간 초과되면 쉘이 소유한 모든 것을 가져갈 것이기 때문에 중요합니다.
$> disown -h %1
그게 다야. 밤새 실행한 상태에서 깨어났을 때 모든 6억 개의 행이 올바르게 가져왔고 그렇게 하는 데 5시간 미만이 걸렸습니다.
그것은 많은 간질에서 나를 구했습니다.
각주
물론 이것은 내가 할 수 있는지 확인하는 도전이었습니다. 내가 아침 식사를 하면서 나 자신과 함께 했던 부검은 다음과 같이 하는 것이 훨씬 더 현명했을 것이라는 것이었습니다.
이 작업을 모두 수행하는 데 약 5분이 걸렸으므로 이 작업을 수행하려는 경우 더 빠른 경로를 제안합니다.
이를 어떻게 개선했을까요? 더 나은 방법이 있습니까? 확실히 있습니다. 보안을 희생하지 않고 이 방법을 더 간단하게 만들 수 있는 방법을 알고 싶습니다.
Reference
이 문제에 관하여(AWS Session Manager를 사용한 장기 실행 데이터 가져오기 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws/long-running-data-import-jobs-in-aws-session-manager-33ah텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)