2017-11-29 18 views
1

MySQL의 Syslog 테이블을 "순환"/ 보관하는 스크립트가 있습니다. 이 스크립트 :MariaDB - 온라인 이동/보관 테이블

  • 리눅스 수준에서 후
  • MySQL을 내부

2 개의 단계를 온라인으로 "있는이 테이블의 이름을 변경 한 후 그들에게 압축 파일은"의 MyISAM "테이블의 이름을 변경 ". MySQLd를 다시 시작하지 않아도됩니다.

이제 새로운 syslog 데이터베이스를 MariaDB (Debian Stretch)에 만들었습니다. 테이블은 MyISAM이 아닌 InnoDB를 사용하고 있습니다. 이 스크립트는 파일을 이동 한 후 MySQL의 내부 테이블의 이름을 바꾸려면 2 실행에 실패

오류를 1050 (42S01가) 테이블 'SystemEvents_1가'이미

존재하는 테이블의 참조가 어딘가에 보관 (테이블 스페이스 내부 시스템 테이블?).

내 질문 : transactional = 0 인 ARIA 엔진으로 테이블을 마이그레이션해도 작동합니까?

감사합니다. 빈스

+0

innoddb는 innodb_file_per_table이 활성화되어 있지 않으면 테이블 당 파일을 사용하지 않으므로 MyISAM과 같은 작업을 수행 할 수 없습니다. – Hackerman

+0

@Hackerman에게 감사드립니다. 나는 "innodb_file_per_table"옵션을 살펴볼 것이다. 내 일반적인 생각은 MyISAM/aria 엔진으로 syslog를 잃어 버리는 것이 큰 문제가 아니더라도 InnoDB에 남아 있어야한다는 것입니다 ... – Vince

+0

그리고 그 옵션을 사용하더라도 innoDB는 여전히 ibdata1 파일을 사용할 것입니다. . dba 사이트에서이 Q & A를 읽으십시오. https://dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file – Hackerman

답변

0

더 이상 가능하지 않다고 생각합니다. 테이블을 MyISAM으로 변환하고 (트랜잭션이있는 Aria도 = 0) 동일한 오류 메시지가 나타납니다. 필자는 파일 시스템 파일의 이름을 직접 바꾸지 않고 mysqldump를 사용하여 테이블을 내보내는 것이 가장 좋습니다. 덜 편리하지만 mysqldump는 선택된 엔진에 상관없이 항상 작동합니다.