어떤 테이블을 지우는 것이 안전합니까?


40

아무 이유없이 매우 큰 데이터베이스가있는 클라이언트 사이트를 상속했습니다. 적당한 양의 콘텐츠가 있으며 활성화 된 모듈이 거의 없습니다. 그러나 데이터베이스가 너무 커서 쉽게 이동할 수 없으므로 정리하고 싶습니다.

표준 캐시 테이블, syslog 및 accesslog를 지 웠습니다.

표준 Drupal 사이트에서 안전하게 잘라낼 수있는 다른 테이블이 있습니까?


1
phpmyadmin에서 크기에 따라 테이블을 정렬 할 수 있습니다. 그것을 시도한 다음 가장 큰 테이블을보고 여기에보고하십시오. 예를 들어 어떤 이유로 정리되지 않은 거대한 세션 테이블을 보았습니다. 다시 로그인해야하는 사용자와 함께 살 수 있다면 (그리고 사이트에있는 경우 입력 된 양식 데이터를 잃어 버릴 수 있으므로 사용자와 조정하고 싶을 수도 있습니다)
Berdir

아래의 참고 사항은 잘림에 대한 아래의 모든 답변 {cache_form}이 실제로 정확하지 않다는 것입니다. 이것은 실제 캐시 테이블이 아닙니다. 양식 제출이 진행 중입니다. 이 표의 모든 데이터를 삭제하면 사용자 데이터를 잃을 수 있습니다. 이 테이블과 관련하여 올바른 일은 항목을 만료시키는 것입니다.
mpdonadio

답변:


21

백업 및 마이 그 레이션 모듈을 사용하십시오 . 필요한 데이터를 건너 뛰기위한 좋은 기본값 이 제공됩니다 . 기본적으로 캐시, 워치 독 및 기타 테이블없이 DB 백업을 생성합니다.

이것이 phpMyAdmin을 살펴 보는 데 도움이되지 않으면 어떤 테이블에 많은 항목이 있는지 알려주십시오.


1
내가 간 첫 번째 장소입니다. 그러나 데이터베이스가 공연을 넘어서서이 방법으로 백업하지 않습니다. 백업 및 마이그레이션을 정기적으로 사용할 수 있도록 데이터베이스를 지우는 것이 목적입니다. 본질적으로 삭제할 수있는 테이블이 더 있는지 궁금합니다 (기본적으로 BAM에서 건너 뛰지 않음).
Nigel Waters

명령 행 액세스 권한이 있으면 drush를 사용하여 백업을 시작하고 마이그레이션 할 수 있습니다. 또는 명령 행에서 mysql에 액세스하십시오 (예 : mysqldump --host = your.host.com --user = db_user --compress --password your_pw> dump.sql)이 방법으로 시간 종료되지 않습니다. 일반적으로 백업하지 않고 지우는 것은 그리 절약되지 않습니다. 페이지가 깨진 상태로 쉽게 돌아갈 수 있습니다.
BetaRide

시간 제한이 문제가 아닙니다. ssh / drush를 통해 쉽게 백업을 실행할 수 있다는 것을 알고 있습니다. 지난 몇 년 동안 일대 다 손을 보았고 거기에 많은 불필요한 크루 드가 있으므로 데이터베이스를 정리하고 싶습니다. 어떤 테이블을 안전하게 지울 수 있는지 알아야합니다 (사이트를 백업하거나 이동하는 방법을 모름).
Nigel Waters

@BetaRide는 정확하며 BAM에서 제외하는 기본은 안전한 것입니다. 다른 사람들은 실제 데이터를 가지고 있거나 가지고 있지 않을 수 있습니다.
mpdonadio

22

제외 할 수있는 Drupal 7 테이블

다음은 Drupal 7의 테이블 목록입니다 (데이터베이스 크기를 줄이려면) . ) :

  • 액세스 로그
  • 일괄
  • 다음과 같은 모든 캐시 관련 테이블 :
    • 은닉처*
    • cache_block
    • cache_content
    • cache_filter *
    • cache_form
    • cache_calendar_ical
    • cache_menu *
    • cache_page *
    • cache_views
    • features_cache 또는 views_data_object_export_cache와 같은 * _cache
  • ctools_views_cache
  • ctools_object_cache
  • devel_queries
  • devel_times
  • 홍수
  • 역사
  • 다음과 같은 다양한 search_ * 테이블 :
    • search_dataset
    • search_index
    • search_keywords_log
    • search_total
  • 신호기
  • 세션
  • 지키는 개
  • webform_submitted_data

일반적으로 많은 데이터베이스 공간 search_index과 같은 테이블을 watchdog사용하고 있으므로 두 테이블을 제거하면 이미 큰 차이를 만들 수 있습니다.

제외 될 수있는 다른 테이블

나머지 테이블의 크기를 확인하고 가장 큰 테이블을 확인하십시오.

일반적으로 정리 절차가없는 세션 테이블을 찾을 수 있습니다. 이러한 테이블을 제외 할 수도 있습니다.

모듈 백업 및 마이그레이션

"에 설명 된대로 더 도전을 줄이기 위해 내 서버의 수입 제한을 해결하기 위해 로컬 수출 데이터베이스 크기를 줄이는 방법? "를 봐 백업 및 마이그레이션 또한 모듈. 다음은 프로젝트 페이지의 인용문입니다 (굵은 글씨가 여기에 추가됨).

Drupal MySQL 데이터베이스, 코드 및 파일을 백업 및 복원하거나 환경간에 사이트를 마이그레이션하십시오. 백업 및 마이그레이션은 gzip, bzip 및 zip 압축과 자동 예약 백업을 지원합니다.

백업 및 마이그레이션을 사용하면 일부 또는 모든 데이터베이스 테이블을 파일 다운로드로 덤프하거나 서버 또는 오프 사이트의 파일로 저장하고 업로드되거나 이전에 저장된 데이터베이스 덤프에서 복원 할 수 있습니다. 기본적으로 제외 할 데이터와 백업 및 캐시 할 데이터를 선택할 수 있습니다 .

그리고 더 많은 것이 있습니다 : 로컬 환경 (예 : Win 또는 Mac)이 호스팅 된 웹 사이트의 서버가 운영하는 OS와 다른 경우 (예 : Linux), OS 간의 이러한 차이는 잠재적 인 추가 과제를 암시합니다. 다른 OS간에 백업 및 마이그레이션 모듈에 대한 좋은 경험이 있었는데, 일반적인 MySql 내보내기 / 가져 오기가 실패한 상황에서는 아무런 문제가 없었습니다.


좋은이있는 모든 테이블 것을 추가 cache_앞에 추가 또는 _cache안전에 추가 같은뿐만 아니라 잘라내 features_cache거나 views_data_object_export_cache
Beebee

1
경고, 검색 테이블 데이터는 제외 할 수 있지만 큰 사이트에서 인덱스를 다시 작성하는 데 시간이 오래 걸릴 수 있습니다. 사례별로 판단하십시오.
mpdonadio

2
또한 캐시 된 데이터에 대한 B & M 발췌문이 약간 부정확합니다. 사이트에서 활성화하면 캐시 테이블이 제외됩니다. 그러나 B & M을 설정 한 후 모듈을 추가하면 캐시 테이블이 제외 데이터 목록에 추가되지 않을 수 있습니다. 나는 이것이 기본 프로필의 설정을 무시할 때 여러 번 발생하는 것을 보았습니다.
mpdonadio

@ MPD :이 흥미로운 피드백에 감사드립니다 (아직 몰랐습니다!). 검색 테이블 정보 : 유효한 포인트. 그러나 개인적으로 나는 항상 재 구축 접근 방식을 사용합니다. 제한을 극복하는 데 도움이되고 색인이 대상의 실제 내용과 일치하는지 확인합니다. 두 번째 의견 정보 : 발췌는 프로젝트 페이지에서 잘라서 붙여 넣기 때문에 문제 대기열에 문제를 제기하고 싶을 수도 있습니다 (Drupal.SE는 버그 등에 대해보고 할 장소가 아닙니다.) .
Pierre.Vriens

@ Pierre.Vriens cron이 실행 중이고 인덱싱이 발생한다고 가정하면 내용을 일치시키는 것은 중요하지 않습니다. B & M, 알려진 문제라고 확신합니다. 또한 세션 데이터에 대한 섹션이 100 % 정확하지 않습니다. 기본 세션 시간이 약 3 주이기 때문에 테이블이 커집니다. _drupal_session_garbage_collection시스템 설정에 따라 해당 테이블을 깔끔하게 유지합니다.
mpdonadio

19

내 경험상 모든 "cache_ *"테이블을 제거합니다.

  • 과거 Drupal 로그를 신경 쓰지 않으면 "watchdog"
  • 로그인 한 사용자가 신경 쓰지 않으면 "accesslog"
  • 인덱스 노드 내용에 신경 쓰지 않으면 "검색"

1
여기서도 마찬가지로 세션도 있습니다.
Alex Weber

2
이것을 시도하는 사람에 대한 참고 사항 : 먼저 백업을 작성하십시오. 그리고 테이블을 삭제하지 말고 비우거나 자르십시오.
timofey.com

9

나는 때때로이 SQL을 실행하여 최상위 테이블의 성장에 주목합니다.

SELECT * 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =  'yourdbnamehere'
ORDER BY table_rows DESC 

어떤 열을 확인해야합니까?, TABLE_ROWS
Bala

8

워치 독 및 세션도 지울 수 있습니다. 모든 사용자가 로그 아웃됩니다.


6

mySQL을 사용하면 mysqldump 프로그램으로 재미있는 작업을 수행하여 데이터베이스 전체 또는 일부를 내보낼 수 있습니다. 예를 들어 이것은 구조를 내 보냅니다.

mysqldump -u root -pBatteryHorseStapleObviously -h some_host --no-data dbname > ~/dbname.sql

그런 다음 '테이블 무시'옵션을 사용하여 데이터를 추가로 내보낼 수 있습니다.

mysqldump -u root -pBatteryHorseStapleObviously -h some_host --ignore-table=dbname.huge_table --ignore-table=dbname.massive_table --ignore-table=dbname.useless_table some_host >> ~/dbname.sql

그러면 대량의 테이블을 무시하고 이전 파일의 끝에 데이터가 배치됩니다.

그런 다음 방대한 테이블이 필요한 경우 위의 접근 방식을 사용하여 다른 파일로 테이블을 내보낼 수 있습니다.

업로드하기 전에 파일을 압축 한 적이 있습니까? 아니면 어리석은 질문입니까?


5

캐시 테이블을 정리 하려면 OptimizeDB 모듈을 사용하십시오 . 데이터베이스 관리는 또한 도움이된다.

데이터베이스 백업을 잊지 마십시오.


데이터베이스는 이제 14Mo입니다. OptimizeDB를 사용했습니다. 다시 한 번 감사드립니다
Mitch

@Mitch you welcome
M ama D

2

이하지만 당신은 비울 수있는 테이블의 일부 / 잘라 내기 될 것이라고 내보낼 수동으로 백업 및 마이그레이션 모듈을 사용하지 않는 경우 ... 내 경험을 공유에없는 슈퍼 전문가 watchdog, cache, cache_menu, cache_block, cache_content, cache_form그들이 큰 포함될 수 있습니다로 내가 캐시하지 않은 캐시 된 물건의 양은 내가 아프지 않을 것이라고 생각하지만 ... 다시 이것은 내 경험이며 이로 인해 문제 나 데이터 손실이 발생하지 않았습니다.


2

몇 가지 아이디어 :

  • 완전히 다른 접근 방식은 유지하려는 데이터 보기 를 사용하여 RSS 피드를 작성 하는 것입니다. 그런 다음 새로운 Drupal 설치를 작성하고 Feed API를 사용 하여이 데이터를 가져 오십시오 .
  • 그리고 또 다른 접근 방식 : 학생을 고용하고 데이터를 수동으로 새로 설치하도록하십시오.
  • 또는 이것 : 어떤 테이블이 매우 큰지, 그리고 그 이유가 무엇인지에 대해 더 알려주십시오.

2

example.drushrc.php다음 중 어느 목록을 확인하십시오 .

$options['structure-tables']['common'] = array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog');
$options['skip-tables']['common'] = array('migration_*');

서로 다른 환경 사이에서 데이터베이스를 이동하는 측면에서 (특히 큰 데이터베이스를 사용하는 경우 ) 안전하게 지울 수 있습니다 . 그러나 여전히 지우고있는 것을 이해해야합니다.


1

지울 수있는 추가 테이블 :

  • 일괄
  • webform_submitted_data

꽤 많은 공간을 차지할 수있는 기타 사항 :-이전 버전의 콘텐츠 (단순 잘라내기로 정리할 수 없음). -locales_source 및 locales_target. 더 이상 사용하지 않는 언어 또는 더 이상 사용하지 않는 모듈에 대한 문자열 변환이있는 경우 이 테이블은 절대 청소되지 않는 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.