Ad Widget

Collapse

Непрекращаемый рост базы MySQL

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • hubbly-bubbly
    Junior Member
    • Nov 2009
    • 25

    #16
    Это все понятно. Ключевая фраза была "в принципе, не сильно нужны"=)
    Если я правильно понял, то mysql используется только для zabbix, а в этом случае можно обойтись и регулярно снимаемыми дампами...кому как удобнее в общем=).
    В любом случае больше 100Гб логов - это перебор.

    Comment

    • dima_dm
      Senior Member
      • Dec 2009
      • 2697

      #17
      Originally posted by Dev_LC
      Как выяснить есть ли данные старше 35 дней в таблице не понял.
      Очень легко, перевести в Unixtime время на 35 дней меньше текущей даты, и сделать select по таблице, у кого поле clock меньше этого числа.
      select *,from_unixtime(clock) from trends where clock<1305748800;
      time.pl
      Code:
      #! /usr/bin/perl
      use Time::Local;
      $time=timelocal(0,0,0,(localtime)[3,4,5]);
      $time=$time-35*86400;
      print "unixtime $time\n";
      print scalar(localtime($time)),"\n";
      Code:
      ./time.pl 
      unixtime 1305748800
      Thu May 19 00:00:00 2011
      Last edited by dima_dm; 23-06-2011, 13:10.

      Comment

      • rez0n
        Junior Member
        • Aug 2011
        • 12

        #18
        Наблюдается похожая ситуация. За 3 дня база выросла до 90MB, при условии что в системе пока только 3 хоста.

        Поправил конфиг по инструкциям в этой теме
        HousekeepingFrequency=48
        MaxHousekeeperDelete=0
        DisableHousekeeping=0

        Этого должно быть достаточно? При установке этих параметров zabbix сам чистит неактуальные данные в базе?

        Comment

        • dima_dm
          Senior Member
          • Dec 2009
          • 2697

          #19
          Originally posted by rez0n
          Наблюдается похожая ситуация. За 3 дня база выросла до 90MB, при условии что в системе пока только 3 хоста.

          Поправил конфиг по инструкциям в этой теме
          HousekeepingFrequency=48
          MaxHousekeeperDelete=0
          DisableHousekeeping=0

          Этого должно быть достаточно? При установке этих параметров zabbix сам чистит неактуальные данные в базе?
          База и будет рости, пока не пройдёт время равное максимальному времени хранения History и trends указанному для Item-ов. Дальше база будет рости очень медленно за счёт других таблиц.
          Оценка размера базы:
          http://www.zabbix.com/documentation/...n/requirements -> 2.6. Размер базы данных

          Comment

          • rez0n
            Junior Member
            • Aug 2011
            • 12

            #20
            Code:
            [root@dlc-zabb-db]/var/lib/mysql# cat /etc/my.cnf|grep -iv '^#'
            
            [client]
            port            = 3306
            socket          = /var/lib/mysql/mysql.sock
            
            [mysqld]
            port            = 3306
            socket          = /var/lib/mysql/mysql.sock
            back_log = 50
            max_connections = 100
            max_connect_errors = 10
            table_open_cache = 2048
            max_allowed_packet = 16M
            binlog_cache_size = 1M
            max_heap_table_size = 64M
            read_buffer_size = 2M
            read_rnd_buffer_size = 16M
            sort_buffer_size = 8M
            join_buffer_size = 8M
            thread_cache_size = 8
            thread_concurrency = 16
            query_cache_size = 64M
            query_cache_limit = 2M
            ft_min_word_len = 4
            default-storage-engine = INNODB
            thread_stack = 192K
            transaction_isolation = REPEATABLE-READ
            tmp_table_size = 64M
            log-bin=mysql-bin
            binlog_format=mixed
            slow_query_log
            long_query_time = 2
            server-id = 1
            key_buffer_size = 32M
            bulk_insert_buffer_size = 64M
            myisam_sort_buffer_size = 128M
            myisam_max_sort_file_size = 10G
            myisam_repair_threads = 1
            myisam_recover
            innodb_additional_mem_pool_size = 16M
            innodb_buffer_pool_size = 2G
            innodb_data_file_path = ibdata1:10M:autoextend
            innodb_write_io_threads = 8
            innodb_read_io_threads = 8
            innodb_thread_concurrency = 16
            innodb_flush_log_at_trx_commit = 1
            innodb_log_buffer_size = 8M
            innodb_log_file_size = 256M
            innodb_log_files_in_group = 3
            innodb_max_dirty_pages_pct = 90
            innodb_lock_wait_timeout = 120
            innodb_file_per_table
            
            [mysqldump]
            quick
            max_allowed_packet = 16M
            
            [mysql]
            no-auto-rehash
            
            [myisamchk]
            key_buffer_size = 512M
            sort_buffer_size = 512M
            read_buffer = 8M
            write_buffer = 8M
            
            [mysqlhotcopy]
            interactive-timeout
            
            [mysqld_safe]
            open-files-limit = 8192
            
            [root@dlc-zabb-db]/var/lib/mysql#
            использовал у себя [mysqld] блок.
            Скажите пожалуйста, что это за параметры, с ними так и не разобрался.
            #innodb_data_file_path = ibdata1:10M:autoextend
            #innodb_write_io_threads = 8
            #innodb_read_io_threads = 8

            Comment

            • rez0n
              Junior Member
              • Aug 2011
              • 12

              #21
              Originally posted by dima_dm
              База и будет рости, пока не пройдёт время равное максимальному времени хранения History и trends указанному для Item-ов. Дальше база будет рости очень медленно за счёт других таблиц.
              Оценка размера базы:
              http://www.zabbix.com/documentation/...n/requirements -> 2.6. Размер базы данных
              Скажите пожалуйста, где искать конфигурирование времени хранения этих trends и history?
              В конфиге заббикса исправил (было закомментировано):
              HistoryCacheSize=64M
              TrendCacheSize=64M
              но мне почему то кажется что это не "оно".

              Вот сведения по таблицам:
              Code:
              history	 Обзор	  Структура	 Поиск	  Вставить	 Очистить	  Удалить	~772,587	InnoDB	utf8_general_ci	59.1 МБ	-
              history_uint	 Обзор	  Структура	 Поиск	  Вставить	 Очистить	  Удалить	~359,109	InnoDB	utf8_general_ci	29.1 МБ	-
              items	 Обзор	  Структура	 Поиск	  Вставить	 Очистить	  Удалить	6,210	InnoDB	utf8_general_ci	2.2 МБ
              Отсюда видно, что больше всего распухла история.

              Comment

              • dima_dm
                Senior Member
                • Dec 2009
                • 2697

                #22
                Originally posted by rez0n
                Скажите пожалуйста, где искать конфигурирование времени хранения этих trends и history?
                Открываете настройки Item (Элемент данных) в Web интерфейсе Настройка->Узлы сети->Элементы данных и смотрите в колонках История и Динамика. Указывается в днях. Там же и настраивается, либо в шаблонах, если Item из шаблона.
                Last edited by dima_dm; 12-08-2011, 17:25.

                Comment

                • dotneft
                  Senior Member
                  • Nov 2008
                  • 699

                  #23
                  2 совета:
                  1. Секционирование
                  2. Периодическая оптимизация InnoDB таблиц. Перестроение индексов!

                  в MySQL используется дерево индексов b-tree, причем насколько я помню в таблицах истории индекс формируется не с clock, а с itemid, таким образом удаляя у itemid устаревшую историю (т.е. по clock), только лишь удаляя историю! вы практически не сможете добиться уменьшения размера занимаемого таблицей...

                  Да еще, Innodb не поддерживает в отличие от MyISAM оптимизацию, происходит recreate table.

                  Ссылки:
                  http://dev.mysql.com/doc/refman/5.1/...ize-table.html
                  For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which rebuilds the table to update index statistics and free unused space in the clustered index.

                  Ну и небольшой пример
                  Code:
                  asterisk #  ls -lah queue_log.*
                  3-rw-rw---- 1 mysql mysql 8.7K Июл 29 00:36 queue_log.frm
                  -rw-rw---- 1 mysql mysql 156M Авг 17 00:51 queue_log.ibd
                  -rw-rw---- 1 mysql mysql  11K Июл 30 03:05 queue_log.TRG
                  asterisk # mysql -pQwestions
                  Welcome to the MySQL monitor.  Commands end with ; or \g.
                  Your MySQL connection id is 53831352
                  Server version: 5.1.56-log Gentoo Linux mysql-5.1.56
                  
                  Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
                  This software comes with ABSOLUTELY NO WARRANTY. This is free software,
                  and you are welcome to modify and redistribute it under the GPL v2 license
                  
                  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
                  
                  mysql>  delete from asterisk.queue_log where time<=unix_timestamp(now() - INTERVAL 1 DAY);
                  Query OK, 728553 rows affected (29.68 sec)
                  
                  mysql> exit
                  Bye
                  asterisk #  ls -lah queue_log.*
                  -rw-rw---- 1 mysql mysql 8.7K Июл 29 00:36 queue_log.frm
                  -rw-rw---- 1 mysql mysql 156M Авг 17 00:52 queue_log.ibd
                  -rw-rw---- 1 mysql mysql  11K Июл 30 03:05 queue_log.TRG
                  asterisk # mysql -p
                  Welcome to the MySQL monitor.  Commands end with ; or \g.
                  Your MySQL connection id is 53832311
                  Server version: 5.1.56-log Gentoo Linux mysql-5.1.56
                  
                  Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
                  This software comes with ABSOLUTELY NO WARRANTY. This is free software,
                  and you are welcome to modify and redistribute it under the GPL v2 license
                  
                  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
                  
                  mysql> optimize table asterisk.queue_log;
                  +--------------------+----------+----------+-------------------------------------------------------------------+
                  | Table              | Op       | Msg_type | Msg_text                                                          |
                  +--------------------+----------+----------+-------------------------------------------------------------------+
                  | asterisk.queue_log | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
                  | asterisk.queue_log | optimize | status   | OK                                                                |
                  +--------------------+----------+----------+-------------------------------------------------------------------+
                  2 rows in set (2.24 sec)
                  
                  mysql> exit
                  Bye
                  asterisk #  ls -lah queue_log.*
                  -rw-rw---- 1 mysql mysql 8.7K Авг 17 00:53 queue_log.frm
                  -rw-rw---- 1 mysql mysql  20M Авг 17 00:53 queue_log.ibd
                  -rw-rw---- 1 mysql mysql  11K Июл 30 03:05 queue_log.TRG
                  http://forums.mysql.com/read.php?22,...4947#msg-64947

                  Comment

                  • dotneft
                    Senior Member
                    • Nov 2008
                    • 699

                    #24
                    Originally posted by rez0n
                    использовал у себя [mysqld] блок.
                    Скажите пожалуйста, что это за параметры, с ними так и не разобрался.
                    #innodb_data_file_path = ibdata1:10M:autoextend
                    #innodb_write_io_threads = 8
                    #innodb_read_io_threads = 8
                    innodb_data_file_path - табличное пространство, автоматически расширяемое блоками по 10МБ, это плюшка innodb онли, ввиду его модели транзакционности ACID.

                    Насколько я помню... менять в процессе уже работы сервера этот параметр категорически не рекомендуется!

                    что же касается двух других параметров... могу лишь предоположить что это, никогда не задумывался, но лучше не трогать
                    Количество потоков чтения и записи с диска, думаю что эти параметры можно трогать если вы уверены что не упретесь в iowait у диска (массива).
                    innodb_read_io_threads - The number of background I/O threads for read prefetch requests.
                    innodb_write_io_threads - The number of background I/O threads for writing dirty pages from the buffer pool.

                    Comment

                    • zalex_ua
                      Senior Member
                      Zabbix Certified Trainer
                      Zabbix Certified SpecialistZabbix Certified Professional
                      • Oct 2009
                      • 1286

                      #25
                      Добавлю еще ссылку на свое похожее сообщение. Вот.

                      Comment

                      • sersad
                        Senior Member
                        • May 2009
                        • 518

                        #26

                        Результат ниже.
                        Attached Files
                        Last edited by sersad; 18-08-2011, 07:09.

                        Comment

                        Working...