powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не выполняется дамп
25 сообщений из 45, страница 1 из 2
Не выполняется дамп
    #35672029
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Пытаемся средствами через dump создать архив базы 1С-8, но вываливается ошибка:
Код: plaintext
1.
2.
3.
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR:  out of memory
DETAIL:  Failed on request of size  536870912 .
Дам выполняется следующей командой:
Код: plaintext
1.
pg_dump.exe -F c -b -f "DB.backup" DB
Архив получается около трех гигабайт, места свободного полно, NTFS.
Что можно сделать?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35672724
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
архив (сжатый) около 3 гигов? сколько же тогда 'весит' база?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35672740
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал на рабочих базах - никаких проблем с дампом (но они у меня пока небольшие).

сделал тестовую базу на 3 гига (притом с одной таблицей на 2 гига) - сдампилась нормально, размер бэкапа менее 500Мб. "поедания" памяти в процессе обнаружено не было.

приведите конфиг постгреса, может быть там что интересное есть
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35672764
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Архив не сжатый, pg_dump не дает делать сжатые - говорит что не поддерживается компрессия, видать из-за того, что сборка PG-SQL от фирмы 1С. Сама база не превышает пять гигов, судя по размерам каталога PGDATA, но выгрузка pg_dump-ом затыкается на трех с небольшим гигах.
Средствами 1С выгрузить базу тоже не удается.
В лог PGSQL вываливается следующее:
Код: plaintext
1.
2.
3.
could not send data to client: Unknown winsock error  10061 
could not receive data from client: Unknown winsock error  10061 
unexpected EOF on client connection
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35672847
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
погуглил - вполне вероятно повреждение базы.

начать стоит с того, чтобы остановить postgres, сделать простую копию каталога с данными (на тот случай, если дальнейшие попытки совсем обрушат базу).

далее можно попробовать сделать vacuum full, reindex database. вдруг поможет ;)

можно попробовать сделать частичный бэкап - найти то место, на котором "обламывается" dump и забэкапить всё, кроме него.

ну и искать источник проблем. как минимум - запустить (не менее, чем на сутки) тест памяти. погонять туда-суда по дискам большие файлы, а потом сверить md5.

если по железу ничего не находится - отписаться в соответсвующей рассылке, скорее всего разработчики обратят внимание и примут участие.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35672864
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, база похоже не повреждена. Выгрузка затыкается постоянно на одной и той-же таблице, в этой таблице 1С хранит вложения файлов ко всяким документам.
Сама база еще похоже рабочая, в нее можно зайти, потестировать, переиндексировать.
Вот конфиг pgsql, он почти дефолтный, что-то там давно менялось но что именно - не помню.
Памяти на сервере 2Гб всего, память в порядке, тестировалась, система Вин-2003SP2-R, версия PG-SQL 8.2.6:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
max_connections =  100 
shared_buffers =  89600 
work_mem =  1048576 
max_fsm_pages =  204800 
fsync = off
effective_cache_size = 128MB

stats_start_collector = on
stats_row_level = on
autovacuum = off

datestyle = 'iso, dmy'
max_locks_per_transaction =  150 	
Может чего-то в конфиге поменять, что бы выгрузка не затыкалась на этой большой таблице?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35672909
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не знаю, в каких единицах измеряется work_mem :)
скорее всего это килобайты, получается уже гигабайт, ИМХО перебор.

может быть стоит явно написать:
shared_buffers =512MB
work_mem = 64MB
maintenance_work_mem = 256MB

ps: если на сервере больше ничего не крутится - я бы ещё поднял effective_cache_size до 1024MB. хотя к исходному сообщению это отношения не имеет.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35675137
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сегодня попробовал выгрузить дамп на машину с линуксом - но с тем же успехом, дамп обломился.
Попробовал выгрузить через EMS SQL Manager for PostgreSQL - там можно типа экспортнуть таблицу кусками по одной записи - но тоже случился облом.
В итоге - после очистки злополучной таблицы, содержащей бинарные объекты - дамп пошел. Интересно - какие тогда ограничения у PG-SQL на размеры данных, хранящихся в таблицах?
И почему тогда получается, что сохранить в PG-SQL крупные блобы можно, но вот сдампить их для архива - не выйдет?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35675163
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какого размера были те самые бинарные объёкты?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35675250
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
eddieа какого размера были те самые бинарные объёкты?
Размеры разные, в этой табличке хранятся прицепленные к документам файлы, среди них были и объемом более ста мегабайт.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35675496
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё раз, повторю eddie : Вы work_mem уменьшили ? Вы знаете что это такое ? это сколько памяти можно использовать в запросе. причём work_mem при выполнение _одного_ запроса, в зависимости от запроса, может быть использовано целиком несколько раз. у Вас work_mem - один гигабайт, дамп осуществляется обычными sql командами, которые естественно могут использовать work_mem.

авторкакие тогда ограничения у PG-SQL на размеры данных, хранящихся в таблицах?это написано в документации, http://www.postgresql.org/docs/faqs.FAQ.html#item4.4
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
These are the limits:
Maximum size for a database?  unlimited (32 TB databases exist)
  Maximum size for a table?  32 TB
  Maximum size for a row?  400 GB
  Maximum size for a field?  1 GB
  Maximum number of rows in a table?  unlimited
  Maximum number of columns in a table?  250-1600 depending on column types
  Maximum number of indexes on a table?  unlimited

авторИ почему тогда получается, что сохранить в PG-SQL крупные блобы можно, но вот сдампить их для архива - не выйдет?потому что Вы некорректно настроили сервер - разрешили ему сожрать всё виртуальное адресное пространство процесса, и даже больше. любую базу можно сдампить если она не повреждена.


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35675538
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЁшВы work_mem уменьшили ?
Я специально увеличил ворк-мем в надежде, что дамп таки выгрузится. На компе кроме PG-SQL ничего нету, и кроме как pg-dump никто к серверу не обращается. Потом добавил еще пару планок мозгов - в итоге их стало в общем зачете три гига с копейками - но и это не помогло.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35675581
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если хотите - можете посчитать, приблизительно:
32-х битный виндовс по умолчанию обычно выделяет 2 гигабайта под пользовательское адресное пространство в процессе. у Вас следующие настойки:
Код: plaintext
1.
shared_buffers = 89600 # 89600 * 8kB = 89600 * 8192 = 734003200 ~700 мегабайт
work_mem = 1048576 # 1048576 * 1kB = 1048576 * 1024 = 1073741824 ~ 1 гигабайт

добавьте ещё сюда размер страниц под выполняемый код + данные (.exe .dll) + стек - пусть будет 100 мегабайт

итого ~ 1,8 гигабайта (если work_mem заполнится целиком только один раз, что совершенно не обязательно). у Вас осталось в запасе - 200 мегабайт. ещё раз выделить work_mem УЖЕ невозможно. то есть с текущими настройками Вам нужно сидеть и молиться что бы work_mem заполнялся целиком только максимум один раз на запрос, что совсем не обязательно. :)

А если вспомнить что адреса выделяются не по порядку, с нуля, а несколько "хаотично", например под .exe обычно выделяется адрес начиная с 0x00400000. а .dll отображается в адресное пространство не обязательно сразу после .exe или до. получается фрагментация адресного пространства которая "сожрёт" и гораздо больше тех оставшихся 200-т мегабайт просто под "дырки" между выделенными адресами. и выделить тот гигабайт work_mem одним куском - не получается...

всё тоже самое относится и к maintenance_work_mem, только она используется при восстановлении дампа (индексы, vacuum)

--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35675589
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImNeedHelpЯ специально увеличил ворк-мем в надежде, что дамп таки выгрузится.Вам надо не увеличивать, а уменьшать. Оно у Вас и так не влезает в два гигабайта.
ImNeedHelpНа компе кроме PG-SQL ничего нету, и кроме как pg-dump никто к серверу не обращается.это не имеет значения, если физической памяти не хватит - будет использован свап файл.
ImNeedHelpПотом добавил еще пару планок мозгов - в итоге их стало в общем зачете три гига с копейками - но и это не помогло.это не имеет значения. виндовс выделяет 2 гигабайта под страницы пользователя. Вы можете поставить хоть 8 планок физической памяти по гигабайту, это не изменит лимит в два гигабайта под страницы пользователя на процесс.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35676202
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прописал как советовали:
Код: plaintext
1.
2.
shared_buffers =512MB
work_mem = 64MB
maintenance_work_mem = 256MB
Не помогло. Вываливается с теми-же ошибками, ругань на ту же таблицу.
Как же все-таки вытащить дамп без очистки этой большой таблицы?
Может - какой-то фикс запустить или проверку? Есть какая-нибудь утилита?
Запускал pg-resetxlog.exe - но это очевидно из другой оперы и не помогает. Ваккумизация с полным анализом - тоже не помогает. Что можно сделать еще?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35676641
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сервер перезапускали после изменения конфигурации ? если да - попробуйте вообще закоментировать work_mem и maintenance_work_mem, что бы значения по умолчанию остались.

авторМожет - какой-то фикс запустить или проверку? Есть какая-нибудь утилита?есть, если у Вас select * from problem_table и vacum full analyze работают без сообщений об ошибках (смотреть в логах) - значит скорее всего у Вас всё в порядке.

авторЗапускал pg-resetxlog.exe - но это очевидно из другой оперы и не помогает. о боже, это ещё зачем !? всю базу разнесли, или что-то осталось ? :)

если ничего не помогает - обращайтесь в 1С - пусть они разбираются что они там напатчили и почему _у них_ дамп не работает.


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677485
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёшсервер перезапускали после изменения конфигурации ?
Канечно - PG-SQL на лету эти опции не прочитывает и не изменяет.
Ёшпопробуйте вообще закоментировать work_mem и maintenance_work_mem, что бы значения по умолчанию остались.
Пробовал - тот же результат.
Ёш
если у Вас select * from problem_table и vacum full analyze работают без сообщений об ошибках (смотреть в логах) - значит скорее всего у Вас всё в порядке.
select * from problem_table выдает клиенту out of memory for query result
Ёш
о боже, это ещё зачем !? всю базу разнесли, или что-то осталось ?
Да пофиг - я все равно не рабочую базу терзаю, скопировал каталог PGDATA на другой комп - и там уже душу.
Ёш
обращайтесь в 1С - пусть они разбираются что они там напатчили и почему _у них_ дамп не работает.
Несмотря на то, что 1С официальна куплена - обращатся за помощью в их супорт считаю бессмысленной тратой времени, они начнут лепить отмазы типа: у вас версия не самая последняя, доставайте базу из архива и т.п. - в общем - разведут гнилые базары на целый месяц, а реальной помощи не будет - это мы уже проходили. А если посмотреть на то, что через какой анус у них организована работа с SQL - уже станет плохо.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677520
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
киньте структуру "больной" таблицы, попробую повторить у себя
что-то типа pg_dump -s -t bad_table bad_db
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677768
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторselect * from problem_table выдает клиенту out of memory for query resultвот этого по идеи не должно быть... хм...


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677774
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот структура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET default_with_oids = false;

CREATE TABLE _reference59 (
    _idrref bytea NOT NULL,
    _version integer NOT NULL,
    _marked boolean NOT NULL,
    _ismetadata boolean NOT NULL,
    _description mvarchar( 100 ) NOT NULL,
    _fld700rref bytea,
    _fld701 mvarchar,
    _fld702_type bytea,
    _fld702_rtref bytea,
    _fld702_rrref bytea,
    _fld703 bytea,
    _fld6303 bytea
);
ALTER TABLE ONLY _reference59 ALTER COLUMN _idrref SET STORAGE PLAIN;
ALTER TABLE ONLY _reference59 ALTER COLUMN _fld700rref SET STORAGE PLAIN;
ALTER TABLE ONLY _reference59 ALTER COLUMN _fld702_type SET STORAGE PLAIN;
ALTER TABLE ONLY _reference59 ALTER COLUMN _fld702_rtref SET STORAGE PLAIN;
ALTER TABLE ONLY _reference59 ALTER COLUMN _fld702_rrref SET STORAGE PLAIN;


ALTER TABLE public._reference59 OWNER TO postgres;

ALTER TABLE ONLY _reference59
    ADD CONSTRAINT _reference59_pkey PRIMARY KEY (_idrref);

CREATE UNIQUE INDEX _referenc59_byfield706_rr ON _reference59 USING btree (_fld700rref, _idrref);

CREATE UNIQUE INDEX _referenc59_byfield707_rr ON _reference59 USING btree (_fld702_type, _fld702_rtref, _fld702_rrref, _idrref);

CREATE UNIQUE INDEX _referenc59_descr_sr ON _reference59 USING btree (_description, _idrref);
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677782
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажите ещё пожалуйста, какое-то конкретное поле содержит большие блобы или оно размазано по всем полям bytea ?


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677803
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Возьмите конфиг по умолчанию постгреса используемой вами версии, перезагрузитесь и запустите дамп. Если снова не получится, перезагрузитесь и дампайте сначала все таблицы, кроме проблемной, а потом отдельно проблемную таблицу. О результатах отпишитесь.

P.S. Перезагружаться под виндой обязательно.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677804
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select
    max(length(_idrref)) as _idrref,
    max(length(_description)) as _description,
    max(length(_fld700rref)) as _fld700rref,
    max(length(_fld701)) as _fld701,
    max(length(_fld702_type)) as _fld702_type,
    max(length(_fld702_rtref)) as _fld702_rtref,
    max(length(_fld702_rrref)) as _fld702_rrref,
    max(length(_fld703)) as _fld703,
    max(length(_fld6303)) as _fld6303
from _reference59;
удаётся выполнить ?


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677811
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGВозьмите конфиг по умолчанию постгреса используемой вами версии, перезагрузитесь и запустите дамп. Если снова не получится, перезагрузитесь и дампайте сначала все таблицы, кроме проблемной, а потом отдельно проблемную таблицу. О результатах отпишитесь.

P.S. Перезагружаться под виндой обязательно.мне кажется бессмыслено мучить pg_dump если простой select * from problem_table выдает клиенту out of memory for query result... надо имхо сначала разобраться с этим. очень похоже на ошибку или повреждение базы...
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35677864
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похожий баг:
http://archives.postgresql.org/pgsql-bugs/2006-11/msg00071.php
...
Рейтинг: 0 / 0
25 сообщений из 45, страница 1 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не выполняется дамп
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]