2011-10-14 3 views
1

mysql 데이터 폴더에 생성 된 폴더에 데이터를 추가 한 다음 mysql 서버가 데이터를 다시로드하여 데이터베이스를 안정적으로 표시해야하는 스크립트가 있습니다. 나는 현재 서버를 다시 시작하는 /etc/init.d/mysql 스크립트에 system 호출을 사용하고 있습니다. 그러나 이것은 매우 느립니다. myshtr에서 어떤 종류의 쿼리를 통해 데이터베이스를 다시로드하는 anyhting을 찾을 수 없습니다. 약간 더 빨랐어 요?Perl에서 mysql 데이터베이스를 가장 빨리 다시로드하는 방법

+0

http://stackoverflow.com/questions/917865/how-do-you-refresh-the-mysql-configuration-file-without-restarting – Hugh

답변

1

이것은 사용중인 스토리지 엔진에 따라 다릅니다.

MyISAM 테이블은 테이블이 MySQL에 의해 터치되면 바로 자동으로 다시로드됩니다 (분명히 .MYI, .MYD 및 .frm 파일이 일관성이 있는지 확인해야합니다).

InnoDB는 조금 더 복잡하며, 동일한 테이블 스페이스에있는 모든 테이블을 사용하는 전통적인 구성인지 아니면 innodb_file_per_table을 사용하는지에 따라 다릅니다. 전자의 경우 서버를 다시 시작해야합니다. 테이블 당 파일을 사용하면 개별 .ibd 파일을 복사 할 수 있지만 ALTER TABLE 문을 사용하여 해당 테이블 공간을 가져와야합니다.

서버를 다시 시작하지 않고 개별 .ibd 파일 작업에 대한 정보는 here을 참조하십시오.

This page은 또한 InnoDB 데이터를 장소로 이동하는 방법을 보는 데 유용합니다.

+0

에 따라 구성 다시로드가 작동 할 수 있습니다. 동의,이 OP는 ' 이렇게하기 위해서 전체 시스템을 재시작하고 싶어하고 펄은 이것과 아무 상관이 없다. – hpavc

0

'아주 느린'이란 무엇을 의미합니까?

당신은, orginal_db_name_temp라는 하나의 새로운dB의 덤프 /로드를 수행 original DB 이름을 바꾼 다음 orginal_db_name_temporginal_db_name에 이름을 바꿀 수 - 다음 장소에 새로운 DB를해야합니다.

그러나 어떤 방법이 더 빠른 지 알지 못합니다. 덤프 &로드 왕복이 파일 복사보다 느리기 때문에. 그러나 DB 이름 바꾸기는 서버를 다시 시작하는 것보다 빠를 것입니다.

관련 문제