Ad Widget

Collapse

Update Zabbix 1.8.10 to 2.0.0. Долгий апргрейд базы.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dotneft
    Senior Member
    • Nov 2008
    • 699

    #16
    Originally posted by FreeD
    c 4 гигами база на 9,5 гб обновляется уже больше 25 часов...
    На чем застряло? посмотрите mytop, innotop.

    Comment

    • FreeD
      Member
      • Aug 2011
      • 68

      #17
      | 11524 | root | localhost | zabbix | Query | 92051 | Sending data | INSERT INTO tmp_events_eventid (eventid,prev_value)

      Comment

      • FreeD
        Member
        • Aug 2011
        • 68

        #18
        А как-то можно отследить, делает ли оно что-то вообще, или где-то произошел затык? Что-то мне слабо верится, что один запрос будет выполняться так долго...

        Comment

        • dotneft
          Senior Member
          • Nov 2008
          • 699

          #19
          в папке /var/lib/mysql/zabbix посмотрите меняется ли размер файла tmp_events_eventid. Но это можно сделать только если у вас выбрано per_file.

          Comment

          • mkolomiets
            Senior Member
            • Jul 2009
            • 134

            #20
            Привет!

            Originally posted by Eoxunn
            Пытаюсь обновить базу с 1.8.13 на 2.0.0, выдает ошибку
            ...
            ERROR 1005 (HY000) at line 6: Can't create table 'zabbix.#sql-4b9_4cc0' (errno: 121)
            ...
            Подскажите пжл что делать?
            Запускаете не первый раз? Это он ругается на невозможность создания форейн ключей, про причине того что они скорее всего уже есть с предыдущих запусков.

            У меня было такое - срубился скрипт на полпути, пришлось остальное вручную по частям обновлять. Сейчас жду окончания запроса:

            Code:
            INSERT INTO tmp_events_eventid (eventid,prev_value)
            (
            	SELECT e1.eventid,(SELECT e2.value
            				FROM events e2
            				WHERE e2.source=e1.source
            					AND e2.object=e1.object
            					AND e2.objectid=e1.objectid
            					AND (e2.clock<e1.clock OR (e2.clock=e1.clock AND e2.eventid<e1.eventid))
            					AND e2.value<2					-- TRIGGER_VALUE_UNKNOWN
            				ORDER BY e2.source DESC,
            						e2.object DESC,
            						e2.objectid DESC,
            						e2.clock DESC,
            						e2.eventid DESC,
            						e2.value DESC
            				LIMIT 1) AS prev_value
            		FROM events e1
            		WHERE e1.source=0							-- EVENT_SOURCE_TRIGGERS
            			AND e1.object=0 						-- EVENT_OBJECT_TRIGGER
            			AND e1.value=0							-- TRIGGER_VALUE_FALSE (OK)
            		HAVING prev_value IS NULL OR prev_value = 1				-- (NULL) or TRIGGER_VALUE_TRUE (PROBLEM)
            );
            Этот запрос и следующий за ним очень неоптимальные и потому тормознутые. Я уже часов 6 жду когда он закончится, успокаивает то что это только один раз...
            См. значение "Rows_examined":
            Code:
            +------+--------+------------------+--------+---------+-------+--------------+------------------------------------------------------------------------------------------------------+-----------+---------------+-----------+
            | Id   | User   | Host             | db     | Command | Time  | State        | Info                                                                                                 | Rows_sent | Rows_examined | Rows_read |
            +------+--------+------------------+--------+---------+-------+--------------+------------------------------------------------------------------------------------------------------+-----------+---------------+-----------+
            | 1138 | zabbix | 10.1.2.166:55217 | zabbix | Query   | 25197 | Sending data | INSERT INTO tmp_events_eventid (eventid,prev_value)                                                  |         0 |   38261355601 |     83925 |

            Comment

            • sersad
              Senior Member
              • May 2009
              • 518

              #21
              Тоже встрал апдейт базы на
              Code:
              *************************** 20. row ***************************
                   Id: 8969246
                 User: root
                 Host: localhost
                   db: zabbix2
              Command: Query
                 Time: 69452
                State: Sending data
                 Info: INSERT INTO tmp_events_eventid (eventid,prev_value)
              (
              	SELECT e1.eventid,(SELECT e2.value
              				FROM events e2
              				WHERE e2.source=e1.source
              					AND e2.object=e1.object
              					AND e2.objectid=e1.objectid
              					AND (e2.clock<e1.clock OR (e2.clock=e1.clock AND e2.eventid<e1.eventid))
              					AND e2.value<2					
              				ORDER BY e2.source DESC,
              						e2.object DESC,
              						e2.objectid DESC,
              						e2.clock DESC,
              						e2.eventid DESC,
              						e2.value DESC
              				LIMIT 1) AS prev_value
              		FROM events e1
              		WHERE e1.source=0							
              			AND e1.object=0 						
              			AND e1.value=0							
              		HAVING prev_value IS NULL OR prev_value = 1				
              )
              А временой таблицы уже давно нет

              Code:
              mysql> SHOW FULL TABLES LIKE '%tmp%';
              Empty set (0.00 sec)
              Шел 20 час апдейта базы
              Last edited by sersad; 29-05-2012, 07:48.

              Comment

              • sersad
                Senior Member
                • May 2009
                • 518

                #22
                Изменил слегка патч
                Code:
                CREATE TABLE tmp_events_eventid (eventid bigint unsigned PRIMARY KEY,prev_value integer);
                CREATE INDEX tmp_events_index on events (source, object, objectid, clock, eventid, value);
                
                
                
                -- Which OK events should have value_changed flag set?
                -- Those that have a PROBLEM event (or no event) before them.
                
                INSERT INTO tmp_events_eventid (eventid,prev_value)
                (
                        SELECT e1.eventid,(SELECT e2.value
                                                FROM events e2
                                                WHERE e2.source=e1.source
                                                        AND e2.object=e1.object
                                                        AND e2.objectid=e1.objectid
                                                        AND (e2.clock<e1.clock OR (e2.clock=e1.clock AND e2.eventid<e1.eventid))
                                                        AND e2.value<2                                  -- TRIGGER_VALUE_UNKNOWN
                                                ORDER BY e2.source DESC,
                                                                e2.object DESC,
                                                                e2.objectid DESC,
                                                                e2.clock DESC,
                                                                e2.eventid DESC,
                                                                e2.value DESC
                                                LIMIT 1) AS prev_value
                                FROM events e1
                                WHERE e1.source=0                                                       -- EVENT_SOURCE_TRIGGERS
                                        AND e1.object=0                                                 -- EVENT_OBJECT_TRIGGER
                                        AND e1.value=0                                                  -- TRIGGER_VALUE_FALSE (OK)
                                HAVING prev_value IS NULL OR prev_value = 1                             -- (NULL) or TRIGGER_VALUE_TRUE (PROBLEM)
                );
                Вроде пошел процесс
                Code:
                mysql> select count(*) from tmp_events_eventid; 
                +----------+
                | count(*) |
                +----------+
                |   136630 |
                +----------+
                1 row in set (0.16 sec)
                
                mysql> select count(*) from tmp_events_eventid; 
                +----------+
                | count(*) |
                +----------+
                |   253817 |
                +----------+
                1 row in set (0.07 sec)
                mysql>

                Comment

                • FreeD
                  Member
                  • Aug 2011
                  • 68

                  #23
                  Как может выполняться запрос

                  zabbix_2 | query | 257 | sending data | insert into tmp_events_eventid (eventid,prev_value)
                  если

                  error 1146 (42s02): Table 'zabbix_2.tmp_events_eventid' doesn't exist

                  Comment

                  • sersad
                    Senior Member
                    • May 2009
                    • 518

                    #24
                    Все апдейт прошел, и пратишины остались там где надо.
                    Ушла русская локаль (
                    Code:
                    You are not able to choose some of the languages, because locales for them are not installed on the web server.
                    Сделал локаль тер она завязана на системной локали и модуле php-gettext
                    Last edited by sersad; 29-05-2012, 13:42.

                    Comment

                    • mkolomiets
                      Senior Member
                      • Jul 2009
                      • 134

                      #25
                      Originally posted by freed
                      Как может выполняться запрос
                      если
                      Не может что временные таблицы доступны только в своей сессии?

                      ЗЫ. Я просто очистил евенты, имхо их не страшно потерять.

                      Comment

                      • MustDie95
                        Junior Member
                        • Apr 2011
                        • 6

                        #26
                        Привет!

                        При обновлении БД действительно помогает увеличение кэшей MySQL. У нас база ~45Гб (>500млн. записей), сервер поднят на инстансе m1.large AWS EC2 (2 cores, 7.5Гб RAM). На время апгрейда поменял тип инстанса на m2.4xlarge (8 cores, 68.4 GB RAM) и почти всё отдал MySQL. В результате база конвертнулась примерно за 4 часа (перед этим, правда, я очистил таблицы alerts и events).

                        Comment

                        • genakir
                          Member
                          • Mar 2011
                          • 49

                          #27
                          Доброго времени суток.
                          Использую готовое решение (Zabbix Appliance 1.8.12). Как можно обновиться до 2.0?
                          P.S. Прошу прощения за делитанский вопрос.

                          Comment

                          • tikondrus
                            Member
                            • Jan 2011
                            • 36

                            #28
                            у меня таже проблема. висит на

                            | 124301 | root | localhost | zabbix | Query | 321890 | Sending data | INSERT INTO tmp_events_eventid (eventid,prev_value)


                            надеялся, что за выходные выполнится, но пошли уже четвертые сутки.
                            в топе висит mysqld уже 90 часов и отжирает 100% CPU.


                            патч запускаю уже 2й раз, и ситуация аналогичная. 1й раз всё прервал на 3й день, восстановил базу из бекапа и поставил патчится.

                            думаю, что если запущу 3й раз, ситация повторится ( что делать??

                            Comment

                            • tikondrus
                              Member
                              • Jan 2011
                              • 36

                              #29
                              воспользовался рекомендациями скрипта mysqltuner.pl.
                              restore базы (дамп ок. 2ГБ) стал выполняться существенно быстрее. Было 3 часа, стало 10 минут.

                              запустил опять патч базы.

                              Comment

                              • FreeD
                                Member
                                • Aug 2011
                                • 68

                                #30
                                Originally posted by tikondrus
                                воспользовался рекомендациями скрипта mysqltuner.pl.
                                restore базы (дамп ок. 2ГБ) стал выполняться существенно быстрее. Было 3 часа, стало 10 минут.

                                запустил опять патч базы.
                                Я просто почистил таблицу events и запустил обновление. Через пару часов получил 2.0

                                Comment

                                Working...