【问题标题】:Clearing Magento Log Data清除 Magento 日志数据
【发布时间】:2011-04-07 23:47:29
【问题描述】:

我有一个关于清除 Magento 中的日志数据的问题。

我在 Magento 1.4.1 中有超过 2.3GB 的数据,现在我想优化数据库,因为数据量太大,速度太慢了。我检查了日志信息(URL、访问者),它显示超过 1.9 GB。如果我直接清除这些记录,是否会影响网站的任何功能?如何清除日志详细信息?通过清除这些数据,我是否会在我的网站上拥有或丢失任何数据?

【问题讨论】:

  • 您是否测量过这对性能的影响程度?知道会很有趣。
  • 在最初阶段,我的产品和过滤器选项在几分之一秒内就得到了很好的响应,但现在它变成了 2.3 Gb,并且不断增长。因此,总响应日复一日地以分钟为单位,而在管理员方面,我已经厌倦了它的响应。

标签: magento


【解决方案1】:

无需自己动手,Magento 系统自带清理日志信息的功能。如果你去

System > Configuration > Advanced > System > Log Cleaning

您可以将商店配置为自动清理这些日志。

【讨论】:

  • 注:这假设您已经设置了您的 cron 作业,对 Alan 吗?说明在这里:magentocommerce.com/wiki/1_-_installation_and_configuration/…
  • 可能是乔纳森,我对 Magento 的系统维护工作不多,但通常是这样实现的。
  • 这绝对假设您已经设置了 cron 作业。
  • Přeložit 我们遇到了自动清理的问题,它阻止了另一个 cron 作业的调度。我不知道为什么,但是如果我们将清洁安排在每个星期一的 5:00,那么每个星期一我们都会在表 'cron_schedule' 的工作列表中发现一个漏洞。最后一个作业是 5:00 的 log_clean,下一个作业安排在 6:00,5:00 到 6:00 之间的所有作业都没有安排。所以要小心。
  • 这只是触发shell/log.php吗?
【解决方案2】:

使用 SSH 清理 Magento 日志:

登录到 shell(SSH) 面板并使用 root/shell 文件夹。

在shell文件夹中执行以下命令

php -f log.php clean

输入此命令查看日志数据的大小

php -f log.php 状态

此方法将帮助您以非常简单的方式清理日志数据。

【讨论】:

  • 如果您需要手动执行操作,这就是您要走的路。如果你有表前缀(就像你应该的那样),那将是特别完美的。非常好。
【解决方案3】:

试试:

TRUNCATE dataflow_batch_export;
TRUNCATE dataflow_batch_import;
TRUNCATE log_customer;
TRUNCATE log_quote;
TRUNCATE log_summary;
TRUNCATE log_summary_type;
TRUNCATE log_url;
TRUNCATE log_url_info;
TRUNCATE log_visitor;
TRUNCATE log_visitor_info;
TRUNCATE log_visitor_online;
TRUNCATE report_viewed_product_index;
TRUNCATE report_compared_product_index;
TRUNCATE report_event;
TRUNCATE index_event;

您也可以参考以下教程:
http://www.crucialwebhost.com/kb/article/log-cache-maintenance-script/

谢谢

【讨论】:

  • 小心 log_visitor - catalog_compare_item 链接到它,如果您启用了比较功能,您可能会遇到异常。可能删除所有会话可以解决这个问题。
  • 我认为强烈不建议手动触摸数据库。最好改为运行“php -f /root/to/magento/shell/log.php clean”
  • 不要忘记禁用密钥检查... SET foreign_key_checks = 0; TRUNCATE .. SET foreign_key_checks = 1;
【解决方案4】:
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE dataflow_batch_export;
TRUNCATE dataflow_batch_import;
TRUNCATE log_customer;
TRUNCATE log_quote;
TRUNCATE log_summary;
TRUNCATE log_summary_type;
TRUNCATE log_url;
TRUNCATE log_url_info;
TRUNCATE log_visitor;
TRUNCATE log_visitor_info;
TRUNCATE log_visitor_online;
TRUNCATE report_viewed_product_index;
TRUNCATE report_compared_product_index;
TRUNCATE report_event;
TRUNCATE index_event;
SET FOREIGN_KEY_CHECKS=1;

【讨论】:

    【解决方案5】:
    TRUNCATE `log_url_info`;
    TRUNCATE `log_visitor_info`;
    TRUNCATE `index_event`;
    TRUNCATE `log_visitor`;
    TRUNCATE `log_url`;
    TRUNCATE `report_event`;
    TRUNCATE `dataflow_batch_import`;
    TRUNCATE `dataflow_batch_export`;
    

    我只是用它。

    【讨论】:

    • 小心 log_visitor 表 - catalog_compare_item 表引用它。如果您在您的网站上启用了比较产品功能,客人可能会遇到例外情况。
    • 如果你这样做,你可以解决关键参考的问题。您可以在 SET foreign_key_checks = 0; 之前添加这个 Mysql 命令这个命令在 SET foreign_key_checks = 1; 之后
    • @Phuc 我怀疑这是否明智。外键检查是有原因的。禁用它们,您最终会在相关表中得到孤立的记录,这可能会导致各种副作用......而且您可能要到几周或几个月后才能看到这些副作用,这使得它们几乎无法诊断。
    【解决方案6】:

    通过 Magento 管理面板清理日志

    这种方法对于不想直接弄乱 Magento 商店数据库的非技术商店所有者来说更容易。要在 Magento 中激活日志清理选项,只需执行以下操作:

    登录到您的 Magento 管理面板。 转到系统 => 配置。 在高级下的左侧单击系统(高级 = > 系统)。 在系统下,您将看到“日志清理”选项。 填写所需的“日志清理”选项值,然后单击保存。

    通过 phpMyAdmin 清理日志

    如果您对 mysql 和查询感到满意,那么此方法比默认的 Magento 日志清理工具更高效、更快捷。此方法还允许您清理任何您喜欢的内容,您甚至可以清理默认 Magento 的日志清理工具中未包含的表。

    在 phpMyAdmin 中打开数据库 在右侧框架中,单击下表对应的框: dataflow_batch_export

    dataflow_batch_import

    log_customer

    log_quote

    日志摘要

    log_summary_type

    log_url

    log_url_info

    log_visitor

    log_visitor_info

    log_visitor_online

    report_viewed_product_index

    report_compared_product_index

    报告事件

    查看页面底部,然后单击显示“已选中”的下拉框并单击空白。 在确认屏幕上单击是,这将截断所有选定的表。

    或者你可以使用脚本来运行

    TRUNCATE dataflow_batch_export;
    TRUNCATE dataflow_batch_import;
    TRUNCATE log_customer;
    TRUNCATE log_quote;
    TRUNCATE log_summary;
    TRUNCATE log_summary_type;
    TRUNCATE log_url;
    TRUNCATE log_url_info;
    TRUNCATE log_visitor;
    TRUNCATE log_visitor_info;
    TRUNCATE log_visitor_online;
    TRUNCATE report_viewed_product_index;
    TRUNCATE report_compared_product_index;
    TRUNCATE report_event;
    TRUNCATE index_event;
    

    请记住,我们在这里是为了清空(截断)选定的表而不是删除它们。执行此操作时要非常小心。

    定期执行此操作肯定会提高您的 Magento 商店的性能和效率。您也可以使用“CRON”设置脚本以定期自动执行此操作。

    【讨论】:

    • 通过 phpMyAdmin 清理日志对我来说效果很好,数据库从 4GB 变为 19MB。
    【解决方案7】:

    您还可以清除其他一些表格: 记录在这里:https://dx3webs.com/blog/house-keeping-for-your-magento-database

    希望这会有所帮助 安迪

    【讨论】:

      【解决方案8】:

      这个脚本很整洁。将其设置为 cron 作业并放松:

      http://www.crucialwebhost.com/kb/magneto-log-and-cache-maintenance-script/

      【讨论】:

        【解决方案9】:

        你可以在这里查看好文章:

        http://blog.magalter.com/magento-database-size

        它有说明如何检查数据库大小、截断一些表以及如何配置自动表清理。

        【讨论】:

          【解决方案10】:

          进一步提示:如果您不需要这些信息,您可以将表类型更改为“黑洞”(而不是 InnoDB)。这意味着,将来不会存储任何内容,并且插入语句仍然可以正常工作。

          您还可以通过将所有事件设置为禁用来禁用日志:

          https://gist.github.com/tegansnyder/189f1c3ce897b4ab494d

          【讨论】:

            【解决方案11】:

            使用上述任何方法清理日志后,您还可以在 app/etc/local.xml 中禁用它们

            ...
            <frontend>
            <events>
             <frontend>
              <events>
                <!-- disable Mage_Log -->
                <controller_action_predispatch>
                    <observers><log><type>disabled</type></log></observers>
                </controller_action_predispatch>
                <controller_action_postdispatch>
                    <observers><log><type>disabled</type></log></observers>
                </controller_action_postdispatch>
                <customer_login>
                  <observers>
                    <log>
                      <type>disabled</type>
                    </log>
                  </observers>
                </customer_login>
                <customer_logout>
                  <observers>
                    <log>
                      <type>disabled</type>
                    </log>
                  </observers>
                </customer_logout>
                <sales_quote_save_after>
                   <observers>
                      <log>
                          <type>disabled</type>
                      </log>
                    </observers>
               </sales_quote_save_after>
               <checkout_quote_destroy>
                 <observers>
                   <log>
                     <type>disabled</type>
                   </log>
                 </observers>
               </checkout_quote_destroy>
            </events>
            </frontend>
            </config>
            

            【讨论】:

            • 你不应该关闭日志,好像出了什么问题你没有办法调试它。
            【解决方案12】:
            SET foreign_key_checks = 0;
            TRUNCATE dataflow_batch_export;
            TRUNCATE dataflow_batch_import;
            TRUNCATE log_customer;
            TRUNCATE log_quote;
            TRUNCATE log_summary;
            TRUNCATE log_summary_type;
            TRUNCATE log_url;
            TRUNCATE log_url_info;
            TRUNCATE log_visitor;
            TRUNCATE log_visitor_info;
            TRUNCATE log_visitor_online;
            TRUNCATE report_viewed_product_index;
            TRUNCATE report_compared_product_index;
            TRUNCATE report_event;
            TRUNCATE index_event;
            SET foreign_key_checks = 1;
            

            【讨论】:

              【解决方案13】:

              登录到您的 c-panel 转到 phpmyadmin 使用 SQL 在查询下运行以清除日志

              TRUNCATE dataflow_batch_export;
              TRUNCATE dataflow_batch_import;
              TRUNCATE log_customer;
              TRUNCATE log_quote;
              TRUNCATE log_summary;
              TRUNCATE log_summary_type;
              TRUNCATE log_url;
              TRUNCATE log_url_info;
              TRUNCATE log_visitor;
              TRUNCATE log_visitor_info;
              TRUNCATE log_visitor_online;
              TRUNCATE report_viewed_product_index;
              TRUNCATE report_compared_product_index;
              TRUNCATE report_event;
              TRUNCATE index_event;
              

              【讨论】:

                【解决方案14】:

                如何手动、自动和其他 Magento 数据库维护来完成 Magento 日志清理。以下三点是 Magento 数据库维护和优化技术中最重要的;

                • 日志清理
                • 智能使用 MySQL 更新版本
                • 缓冲池大小设置

                获取更多信息http://blog.contus.com/magento-database-maintenance-and-optimization/

                【讨论】:

                  【解决方案15】:

                  您可以禁用或设置日志设置的日期和时间。

                  系统 > 配置 > 高级 > 系统 > 日志清理

                  【讨论】:

                    猜你喜欢
                    • 2012-11-03
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-07-30
                    • 1970-01-01
                    • 2023-01-19
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多