множественные внутренние объединения 3 или более сбоев MySQL Server 5.1.30 opensolaris - PullRequest
1 голос
/ 04 мая 2010

при выполнении простого запроса к 4 внутренним объединенным таблицам сервер аварийно завершает работу с выводом ниже, появляющимся в файле mysql .err.

например. выбрать * из таблицы1 внутреннее соединение table2 на table1.a = table2.a и table1.b = table2.b внутреннее соединение table3 на table2.a = table3.a и table2.c = table3.c внутреннее соединение table4 на table3.a = table4.a и table3.d = table4.d

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

mysql.err trace:

100503 18:13:19 - mysqld получил сигнал 11; Это может быть потому, что вы нажали ошибку. Также возможно, что этот двоичный файл или одна из библиотек, с которыми она была связана, повреждена, неправильно построена, или неправильно настроен. Эта ошибка также может быть вызвана неисправностью оборудования. Мы сделаем все возможное, чтобы собрать некоторую информацию, которая, мы надеемся, поможет диагностировать проблема, но так как мы уже разбились, что-то определенно не так и это может потерпеть неудачу.

key_buffer_size = 1572864000 read_buffer_size = 2097152 max_used_connections = 11 max_threads = 151 threads_connected = 10 Возможно, что MySQL может использовать до key_buffer_size + (read_buffer_size + sort_buffer_size) * max_threads = 2155437 K байты памяти Надеюсь, что все в порядке; если нет, уменьшите некоторые переменные в уравнении.

thd: 0x72febda8 Попытка возврата. Вы можете использовать следующую информацию, чтобы узнать где умер. Если вы не видите сообщений после этого, что-то пошло ужасно неправильно ... stack_bottom = fe07efb0 thread_stack 0x40000 Попытка получить некоторые переменные. Некоторые указатели могут быть недействительными и привести к прерыванию дампа ... thd-> query at be1021f0 = объяснить, выбрать * из бизнеса внутреннее расписание присоединения на business.id = schedule.business_id внутреннее объединение scheduleentry в schedule.business_id = scheduleentry.business_id и schedule.kid = scheduleentry.parent внутреннее объединение персонала на schedule.business_id = staff.business_id и schedule.staf f_person = staff.kid где business.id = '3050bb04fda41df64a9c1c149150026c' thd-> thread_id = 9 thd-> убил = NOT_KILLED Страница руководства на http://dev.mysql.com/doc/mysql/en/crashing.html содержит информация, которая должна помочь вам выяснить, что является причиной аварии. 100503 18:13:19 mysqld_safe mysqld перезапущен 100503 18:13:20 InnoDB: не удалось установить DIRECTIO_ON для файла ./ibdata1: OPEN: Inap собственный ioctl для устройства, продолжая в любом случае 100503 18:13:20 InnoDB: не удалось установить DIRECTIO_ON для файла ./ibdata1: OPEN: Inap собственный ioctl для устройства, продолжая в любом случае InnoDB: порядковый номер журнала в файлах ibdata не совпадает InnoDB: порядковый номер журнала в ib_logfiles! 100503 18:13:20 InnoDB: База данных не была нормально закрыта! InnoDB: запуск восстановления после сбоя. InnoDB: чтение информации табличного пространства из файлов .ibd ... InnoDB: восстановление возможных наполовину записанных страниц данных из двойной записи InnoDB: буфер ... InnoDB: Последняя позиция файла binlog MySQL 0 2731, имя файла ./mysql-bin.000093 100503 18:13:20 InnoDB: началось; порядковый номер журнала 0 2650338426 100503 18:13:20 [Примечание] Восстановление после сбоя с помощью mysql-bin 100503 18:13:20 [Примечание] Запуск восстановления после сбоя ...

100503 18:13:20 [Примечание] Восстановление после сбоя завершено.

Это на opensolaris SunOS 5.11 snv_111b i86pc i386 i86pc Mysql 5.1.30

Вот фрагмент из файла my.cnf:


key_buffer = 1500M max_allowed_packet = 1M нить стека = 256 КБ thread_cache_size = 8 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M table_cache = 512 tmp_table_size = 400M max_heap_table_size = 64M

query_cache_limit = 20M query_cache_size = 200M


Это ошибка или проблема конфигурации?

Данные испытаний:

У меня такая же проблема на двух почти точных установках mysql. В основном две зоны на сервере opensolaris, одна из которых была клонирована от другой. Считается ли это другой машиной, я не знаю. После заполнения тестовыми данными запрос в конце действительно приводит к сбою на сервере MySQL, но не раньше, чем заполняется данными.

СОЗДАТЬ БАЗУ ДАННЫХ test УСТАНОВКА ХАРАКТЕРА ПО УМОЛЧАНИЮ latin1 COLLATE latin1_swedish_ci; ИСПОЛЬЗОВАНИЕ test;

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ table1 ( a bigint (20) NOT NULL, b bigint (20) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (a, b) ) ENGINE = MySAM CHARSET ПО УМОЛЧАНИЮ = latin1;

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ table2 ( a bigint (20) NOT NULL, b bigint (20) NOT NULL, c bigint (20) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (a, b), КЛЮЧ c (c) ) ENGINE = MySAM CHARSET ПО УМОЛЧАНИЮ = latin1;

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ table3 ( a bigint (20) NOT NULL, c bigint (20) NOT NULL, d bigint (20) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (a, c), КЛЮЧ d (d) ) ENGINE = MySAM CHARSET ПО УМОЛЧАНИЮ = latin1;

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ table4 ( a bigint (20) NOT NULL, d bigint (20) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (a, d) ) ДВИГАТЕЛЬ = CHISSET ПО УМОЛЧАНИЮ MyISAM = latin1;

INSERT INTO table1 (a, b) ЗНАЧЕНИЯ (10001, 20001), (10002, 20002); INSERT INTO table2 (a, b, c) ЗНАЧЕНИЯ (10001, 20001, 30001), (10002, 20002, 30002); INSERT INTO table3 (a, c, d) ЗНАЧЕНИЯ (10001, 30001, 40001), (10002, 30002, 40002); INSERT INTO table4 (a, d) ЗНАЧЕНИЯ (10001, 40001), (10002, 40002);

выбрать * из таблицы1 внутреннее соединение table2 на table1.a = table2.a и table1.b = table2.b внутреннее соединение table3 на table2.a = table3.a и table2.c = table3.c внутреннее соединение table4 на table3.a = table4.a и table3.d = table4.d

1 Ответ

0 голосов
/ 20 мая 2010

Тестовые данные у меня тоже работают, убивая mysql. К сожалению, в реальном мире crapplication «Помощник времени 6.2» из каменного века использует 3 соединения и взрывается. точно так, как описано.

Нашел несколько подсказок: http://bugs.opensolaris.org/view_bug.do?bug_id=6892501

говорит, что его открытый солярис специфичен и на его устранение ушел всего год? (это не позволит мне добавить вторую ссылку !!)

Внизу выше, это указывает на ошибку mysql 49091.

Нет решения, которое я вижу -.-

...