Những bảng nào là an toàn để xóa?


40

Tôi đã thừa hưởng một trang web khách hàng có cơ sở dữ liệu cực kỳ lớn mà không có lý do. Có một lượng nội dung vừa phải và rất ít mô-đun kích hoạt. Tuy nhiên, cơ sở dữ liệu quá lớn để di chuyển dễ dàng và tôi muốn dọn sạch nó.

Tôi đã xóa các bảng bộ đệm, syslog và accesslog tiêu chuẩn.

Có bảng nào khác tôi có thể cắt ngắn một cách an toàn trong một trang web Drupal tiêu chuẩn không?


1
Bạn có thể sắp xếp các bảng dựa trên kích thước của chúng trong phpmyadmin. Hãy thử điều đó và sau đó xem bảng nào là lớn nhất và báo cáo rằng ở đây. Ví dụ, tôi đã thấy các bảng phiên lớn không được dọn sạch vì một số lý do. Đó là điều bạn có thể xóa nếu bạn có thể sống với người dùng phải đăng nhập lại (và có thể mất dữ liệu biểu mẫu đã nhập nếu họ ở trên trang web, vì vậy bạn có thể muốn phối hợp điều này với người dùng)
Berdir

Chỉ cần một lưu ý phụ ở đó, rằng tất cả các câu trả lời dưới đây đề cập đến việc cắt ngắn {cache_form}không thực sự chính xác. Đây không phải là một bảng bộ đệm thực sự. Nó chứa trong đệ trình mẫu tiến độ. Nếu bạn xóa tất cả dữ liệu trong bảng này, người dùng của bạn có thể mất dữ liệu. Điều thích hợp để làm với bảng này là hết hạn các mục.
mpdon Arena

Câu trả lời:


21

Sử dụng mô-đun sao lưu và di chuyển , nó đi kèm với các mặc định tốt để bỏ qua dữ liệu không cần thiết . Theo mặc định, nó tạo ra một bản sao lưu DB mà không có bộ đệm, bộ giám sát và một số bảng khác.

Nếu điều này không có ích gì với phpMyAdmin và cho chúng tôi biết bảng nào có nhiều mục.


1
Đây là nơi đầu tiên tôi đã đi. Tuy nhiên, cơ sở dữ liệu đã qua một hợp đồng và sẽ không sao lưu thông qua phương pháp này. Ý định của tôi là xóa cơ sở dữ liệu để tôi có thể sử dụng sao lưu và di chuyển một cách thường xuyên. Về cơ bản, tôi tự hỏi nếu có thêm bảng nào tôi có thể xóa (đó không phải là BAM mặc định bỏ qua).
Nigel Waters

Nếu bạn có quyền truy cập dòng lệnh, bạn có thể sử dụng drush để bắt đầu sao lưu và di chuyển. Hoặc truy cập mysql trên dòng lệnh (ví dụ: mysqldump --host = your.host.com --user = db_user --compress --password your_pw> dump.sql) Cách này bạn sẽ không chạy vào thời gian chờ. Nói chung, dọn dẹp mà không có một bản sao lưu không phải là rất tiết kiệm. Bạn có thể dễ dàng kết thúc với một trang bị hỏng và không có cách nào để quay lại.
BetaRide

Vấn đề không nằm ở thời gian chờ. Tôi biết tôi có thể dễ dàng chạy các bản sao lưu thông qua ssh / drush. Tôi muốn dọn dẹp cơ sở dữ liệu vì nó đã thấy một trong nhiều bàn tay trong vài năm qua và có rất nhiều lỗi không cần thiết trong đó. Tôi chỉ cần biết những bảng nào tôi có thể xóa một cách an toàn, (không biết cách sao lưu hoặc di chuyển trang web của tôi).
Nigel Waters

@BetaRide là chính xác, những cái mặc định mà BAM loại trừ là những cái an toàn. Những người khác có thể có hoặc không có dữ liệu thực tế.
mpdon Arena

22

Drupal 7 bảng có thể được loại trừ

Dưới đây là danh sách các bảng trong Drupal 7 mà bạn có thể xóa (để giảm kích thước cơ sở dữ liệu) hoặc loại trừ một cách an toàn để thực hiện di chuyển (như trong câu hỏi về Làm thế nào để giảm kích thước cơ sở dữ liệu được xuất cục bộ để vượt qua giới hạn nhập máy chủ của tôi? ):

  • truy cập
  • đợt
  • tất cả các bảng liên quan đến bộ đệm, chẳng hạn như:
    • bộ đệm *
    • cache_block
    • cache_content
    • cache_filter *
    • cache_form
    • cache_calWiki_ical
    • cache_menu *
    • cache_page *
    • cache_view
    • * _cache, chẳng hạn như features_cache hoặc Views_data_object_export_cache
  • ctools_view_cache
  • ctools_object_cache
  • devel_queries
  • devel_times
  • lũ lụt
  • lịch sử
  • xếp hàng
  • nhiều bảng tìm kiếm_ * khác nhau, chẳng hạn như:
    • search_dataset
    • tìm kiếm_index
    • tìm kiếm_keywords_log
    • tìm kiếm
  • semaphore
  • phiên
  • cơ quan giám sát
  • webform_submit_data

Thông thường các bảng như search_indexwatchdogsử dụng nhiều không gian cơ sở dữ liệu, vì vậy chỉ cần loại bỏ 2 bảng đó có thể tạo ra sự khác biệt rất lớn.

Các bảng khác có thể được loại trừ

Kiểm tra kích thước của các bảng còn lại của bạn và xác định một trong số chúng có kích thước lớn nhất.

Thông thường, bạn có thể tìm thấy các bảng phiên không có quy trình dọn dẹp. Những bảng như vậy có lẽ bạn cũng có thể loại trừ.

Mô-đun sao lưu và di chuyển

Để tiếp tục giảm thách thức như chi tiết trong " Cách giảm kích thước cơ sở dữ liệu được xuất cục bộ để vượt qua giới hạn nhập máy chủ của tôi? ", Hãy xem mô-đun Sao lưu và Di chuyển . Đây là một trích dẫn từ trang dự án của nó (đánh dấu đậm được thêm vào đây):

Sao lưu và khôi phục cơ sở dữ liệu, mã và tệp Drupal MySQL của bạn hoặc di chuyển một trang web giữa các môi trường. Sao lưu và di chuyển hỗ trợ nén gzip, bzip và zip cũng như sao lưu theo lịch trình tự động.

Với Sao lưu và Di chuyển, bạn có thể kết xuất một số hoặc tất cả các bảng cơ sở dữ liệu của mình để tải xuống tệp hoặc lưu vào một tệp trên máy chủ hoặc ngoại vi và để khôi phục từ kết xuất cơ sở dữ liệu đã tải lên hoặc đã lưu trước đó. Bạn có thể chọn bảng nào và dữ liệu nào để sao lưu và dữ liệu bộ đệm được loại trừ theo mặc định .

Và còn nhiều hơn thế: nếu môi trường cục bộ của bạn (ví dụ Win hoặc Mac) khác với HĐH mà máy chủ của trang web được lưu trữ của bạn đang chạy (như Linux), thì những khác biệt giữa các OS-es tiềm ẩn những thách thức bổ sung tiềm năng. Tôi đã có kinh nghiệm tốt với mô-đun Sao lưu và Di chuyển giữa các hệ điều hành khác nhau, điều này không gây ra bất kỳ vấn đề nào (hoạt động tốt) trong các tình huống xuất / nhập MySql điển hình thất bại trước đó.


Tốt để thêm rằng bất kỳ bảng nào có cache_thêm hoặc _cachethêm vào đều an toàn để cắt bớt, chẳng hạn như features_cachehoặc views_data_object_export_cachevv
Beebee

1
Lời cảnh báo, dữ liệu bảng tìm kiếm có thể được loại trừ, nhưng có thể mất một thời gian rất, rất lâu để xây dựng lại các chỉ mục trên các trang web lớn. Đánh giá điều này trên cơ sở từng trường hợp.
mpdon Arena

2
Ngoài ra, đoạn trích B & M về dữ liệu được lưu trong bộ nhớ cache hơi sai. Khi được kích hoạt trên một trang web, nó sẽ loại trừ các bảng bộ đệm. Tuy nhiên, nếu bạn thêm một mô-đun sau khi B & M được thiết lập, các bảng bộ đệm có thể không được thêm vào danh sách dữ liệu loại trừ. Tôi đã thấy điều này xảy ra rất nhiều lần, điển hình là khi tôi ghi đè cài đặt trên cấu hình mặc định.
mpdon Arena

@MPD: cảm ơn vì phản hồi thú vị này (chưa biết về điều đó!). Về bảng tìm kiếm: điểm hợp lệ. Nhưng cá nhân tôi luôn đi theo cách tiếp cận xây dựng lại: nó giúp vượt qua giới hạn và nó đảm bảo chỉ số phù hợp với nội dung thực tế trong mục tiêu. Về nhận xét thứ 2 của bạn: đoạn trích là một đoạn trích từ trang dự án, vì vậy có lẽ bạn muốn gửi một vấn đề về hàng đợi vấn đề của nó (Drupal.SE không phải là nơi để báo cáo về các lỗi, v.v., phải không?) .
Pierre.Vriens

@ Pierre.Vriens Phù hợp với nội dung không quan trọng, giả sử bạn có cron chạy và đảm bảo lập chỉ mục xảy ra. B & M, khá chắc chắn đó là một vấn đề được biết đến. Ngoài ra, phần về dữ liệu phiên không chính xác 100%. Bảng đó trở nên lớn vì thời gian phiên mặc định là khoảng ba tuần; _drupal_session_garbage_collectionsẽ giữ bảng đó gọn gàng, dựa trên các cài đặt hệ thống.
mpdon Arena

19

Theo kinh nghiệm của tôi, tôi lọc tất cả các bảng "cache_ *".

  • cộng với "cơ quan giám sát" nếu tôi không quan tâm đến nhật ký Drupal trong quá khứ
  • cộng với "accesslog" nếu tôi không quan tâm đến người dùng đã đăng nhập
  • cộng với "tìm kiếm" nếu tôi không quan tâm đến nội dung các nút được lập chỉ mục

1
Tương tự ở đây, tôi cũng có phiên.
Alex Weber

2
Một lưu ý cho bất cứ ai cố gắng này: Tạo bản sao lưu trước. Và đừng bỏ các bảng, thay vì trống hoặc cắt ngắn.
timofey.com

9

Đôi khi tôi chạy SQL này để theo dõi sự phát triển của các bảng hàng đầu:

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

Tôi nên kiểm tra cột tăng trưởng nào?, Ý bạn là TABLE_lawS
Bala

8

Cơ quan giám sát và phiên cũng có thể bị xóa, hãy nhớ rằng tất cả người dùng sẽ được đăng xuất.


6

Với myQuery, bạn có thể làm những điều thú vị với chương trình mysqldump để xuất toàn bộ cơ sở dữ liệu hoặc theo từng phần. Ví dụ, điều này chỉ xuất cấu trúc:

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

Sau đó, bạn có thể sử dụng tùy chọn 'bảng bỏ qua' để xuất thêm dữ liệu, ví dụ:

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

Điều đó đặt dữ liệu vào cuối tập tin trước đó bỏ qua một số bảng lớn.

Nếu sau đó bạn cần các bảng lớn thì bạn có thể xuất chúng sang một tệp khác bằng cách sử dụng phương pháp trên, sau đó bạn có thể nhập chúng theo từng khối (mặc dù có thể cần phải kiểm tra fk).

Bạn đã gzip tập tin của bạn trước khi tải lên, hoặc đó là một câu hỏi ngớ ngẩn?



2

không phải là chuyên gia siêu về vấn đề này nhưng chia sẻ kinh nghiệm của tôi ... nếu bạn không sử dụng sao lưu và mô-đun di cư và tự xuất ra một số các bảng bạn có thể làm rỗng / truncate sẽ watchdog, cache, cache_menu, cache_block, cache_content, cache_formvì chúng có thể chứa một lượng lớn số lượng nội dung được lưu trong bộ nhớ cache mà tôi cho là sẽ không bị tổn thương ... nhưng một lần nữa đây là kinh nghiệm của tôi và tôi đã không gặp phải rắc rối hoặc mất dữ liệu vì điều này.


2

Một vài ý tưởng:

  • Một cách tiếp cận hoàn toàn khác sẽ là tạo nguồn cấp RSS bằng cách sử dụng chế độ xem dữ liệu bạn muốn giữ. Sau đó tạo bản cài đặt Drupal mới và nhập dữ liệu này bằng API nguồn cấp dữ liệu .
  • Và chỉ là một cách tiếp cận khác: Thuê một sinh viên và để anh ấy / cô ấy chuyển dữ liệu theo cách thủ công vào bản cài đặt mới của bạn.
  • Hoặc cái này: Hãy cho chúng tôi biết thêm về những bảng nào rất lớn và lý do cho việc này là gì (nếu bạn biết).

2

Kiểm tra example.drushrc.phpdanh sách này:

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

An toàn để xóa chúng về mặt di chuyển cơ sở dữ liệu giữa các môi trường khác nhau (đặc biệt là khi bạn làm việc với cơ sở dữ liệu lớn ). Tuy nhiên, bạn vẫn cần phải hiểu những gì bạn đang làm rõ.


1

Các bảng bổ sung có thể bị xóa:

  • đợt
  • webform_submit_data

Những thứ khác có thể chiếm khá nhiều dung lượng: - phiên bản cũ hơn của nội dung của bạn (không thể xóa bằng một phần rút gọn đơn giản). - loc_source và loc_target. Nếu bạn có ngôn ngữ không được sử dụng nữa hoặc dịch chuỗi cho các mô-đun mà bạn không sử dụng nữa. Những cái bàn này dường như không bao giờ được làm sạch.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.