From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: Создание и |
Date: | 2005-05-24 04:53:17 |
Message-ID: | 4292B33D.9090502@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Oleg Bartunov wrote:
> Мне это непонятно. Поподробней нельзя ?
И мне непонятно. Чудеса творятся какие-то.
И длина текстовой строки здесь не причём.
В общем вот подробности.
На одной тачке поднят сервер PostgreSQL 8.0.1
С другой тачки берётся лог, нарезается блоками по 5000 строк и формируется
набор файлов. Затем каждый из этих файлов я пытаюсь загрузить на
машину-сервер через psql и COPY ... FROM stdin
Почему не всё сразу? Потому что возможны обрывы связи, а скрипт
проверяет код возврата из psql и если он не 0, останавливает процесс
загрузки с выдачей сообщения админу.
Картина вырисовывается такая. Вот структура таблицы:
CREATE TABLE traffic_tbl (
id SERIAL PRIMARY KEY,
tdate DATE,
ttime TIME,
src_ip INET NOT NULL,
src_port INT NOT NULL,
dst_ip INET NOT NULL,
dst_port INT NOT NULL,
size INT4 NOT NULL
);
Вариант 1.
Если я НЕ создаю индексов на эту таблицу, то загрузка всех файлов
проходит успешно: их около 1000. Т.е. вся информация УСПЕШНО
заносится в таблицу. Затем, при попытке создать
индексы (см. ниже как) я получаю ошибку:
ERROR: статус транзакции 1936024431 не доступен
ERROR: статус транзакции 1936024431 не доступен
ERROR: статус транзакции 1936024431 не доступен
ERROR: статус транзакции 1936024431 не доступен
На стороне сервера в это время в логе вот такие ошибки:
ERROR: статус транзакции 1936024431 не доступен
ПОДРОБНОСТИ: не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/0736": No such file or directory
ERROR: статус транзакции 1936024431 не доступен
ПОДРОБНОСТИ: не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/0736": No such file or directory
ERROR: статус транзакции 1936024431 не доступен
ПОДРОБНОСТИ: не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/0736": No such file or directory
ERROR: статус транзакции 1936024431 не доступен
ПОДРОБНОСТИ: не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/0736": No such file or directory
Почему вдруг этого файла там не оказалось - я не знаю. Места
на диске свободного ещё много - 17Gb
Вариант 2.
Если я создаю индексы на эту таблицу:
CREATE INDEX src_ip_idx ON traffic_tbl (src_ip);
CREATE INDEX dst_ip_idx ON traffic_tbl (dst_ip);
CREATE INDEX src_port_idx ON traffic_tbl (src_port);
CREATE INDEX dst_port_idx ON traffic_tbl (dst_port);
и пытаюсь производить загрузку, то загрузка идёт, понятное дело,
медленнее, но
процесс обрывается на где-то на 1/3 файлов с сообщением:
PANIC: failed to add item to the right sibling for "src_port_idx"
потеряна синхронизация с сервером, переустанавливается соединение
подсоединение к серверу было потеряно
В логе при этом написано
PANIC: failed to add item to the right sibling for "src_port_idx"
КОНТЕКСТ: COPY traffic_tbl, строка 3419: "2005-04-01 18:46:18
195.222.142.84 34075 217.106.50.196 80 536"
КОМАНДА: COPY traffic_tbl (tdate, ttime, src_ip, src_port, dst_ip,
dst_port, size) FROM stdin;
LOG: процесс сервера (PID 9642) был завершён сигналом 6
LOG: завершение любых других активных серверных процессов
LOG: все серверные процессы завершены... переинициализация
LOG: система была прервана: 2005-05-24 07:44:21 YEKST
LOG: контрольная точка: 1/9415D268
LOG: redo-запись: 1/94003CA8; undo-запись: 0/0; отключение: FALSE
LOG: ID следующей транзакции: 9550; следующий OID: 11085871
LOG: система баз данных была неправильно остановлена; проLOG: система
баз данных была неправильно остановлена; производится автоматическое
восстановление
FATAL: система баз данных стартует
LOG: REDO (повторить) начинается с 1/94003CA8
LOG: некорректная контрольная сумма резервного блока 1 в записи на
1/95852CA0
LOG: REDO (повторить) завершено на 1/95852C5C
LOG: система готова к использованию
Теперь я попытаюсь удалить индекс и создать его по новой
DROP INDEX src_ip_idx;
DROP INDEX dst_ip_idx;
DROP INDEX src_port_idx;
DROP INDEX dst_port_idx;
CREATE INDEX src_ip_idx ON traffic_tbl (src_ip);
CREATE INDEX dst_ip_idx ON traffic_tbl (dst_ip);
CREATE INDEX src_port_idx ON traffic_tbl (src_port);
CREATE INDEX dst_port_idx ON traffic_tbl (dst_port);
Получаю сообщение
DROP INDEX
DROP INDEX
DROP INDEX
DROP INDEX
сервер неожиданно прервал соединение
Скорее всего это означает что сервер завершил работу со сбоем
до или в течение обслуживания запроса.
подсоединение к серверу было потеряно
И в логе
LOG: процесс сервера (PID 9745) был завершён сигналом 11
LOG: завершение любых других активных серверных процессов
LOG: все серверные процессы завершены... переинициализация
LOG: система была прервана: 2005-05-24 08:05:35 YEKST
LOG: контрольная точка: 1/9586D6EC
LOG: redo-запись: 1/9586D6EC; undo-запись: 0/0; отключение: FALSE
LOG: ID следующей транзакции: 9562; следующий OID: 11094063
LOG: система баз данных была неправильно остановлена; производится
автоматическое восстановление
LOG: запись с нулевой длинноц в 1/9586D728
LOG: REDO (повторить) не требуется
LOG: система готова к использованию
Повторные попытки создать индекс дают такую же диагностику как и в первом
варианте:
ERROR: статус транзакции 227412372 не доступен
ERROR: статус транзакции 227412372 не доступен
ERROR: статус транзакции 227412372 не доступен
ERROR: статус транзакции 227412372 не доступен
с такими же сообщениями в логе:
ERROR: статус транзакции 227412372 не доступен
ПОДРОБНОСТИ: не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/00D8": No such file or directory
ERROR: статус транзакции 227412372 не доступен
ПОДРОБНОСТИ: не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/00D8": No such file or directory
ERROR: статус транзакции 227412372 не доступен
ПОДРОБНОСТИ: не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/00D8": No such file or directory
ERROR: статус транзакции 227412372 не доступен
ПОДРОБНОСТИ: не получилось открыть файл
"/var/lib/pgsql/data/pg_clog/00D8": No such file or directory
> Я совершенно точно создавал индексы по 500,000,000 строчкам и больше.
Верю, я вроде раньше тоже на эти проблемы не наступал.
--
С уважением, Виктор
From | Date | Subject | |
---|---|---|---|
Next Message | Nick Gazaloff | 2005-05-24 04:56:59 | Re: Создание и |
Previous Message | Nick Gazaloff | 2005-05-23 19:54:20 | Re: Создание и |