Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Уважаемые профессионалы помогите. Есть база 1с Комплексная Автоматизация 1.1 Postgresql 9.4.2-1.1C (x64)
Развалился Raid 10, восстановили но теперь вываливается ошибка ERROR: invalid page in block 3997 of relation base/16402/4530825
Помогите пожалуйста REINDEX, VACUUM FULL не помогают.
Архив есть но 4 месяца назад
За это время кучу изменений в конфигурации были сделаны и нужно их восстановить
14 ноя 17, 00:36    [20951161]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3426
Roxa17
Уважаемые профессионалы помогите. Есть база 1с Комплексная Автоматизация 1.1 Postgresql 9.4.2-1.1C (x64)
Развалился Raid 10, восстановили но теперь вываливается ошибка ERROR: invalid page in block 3997 of relation base/16402/4530825
Помогите пожалуйста REINDEX, VACUUM FULL не помогают.
Архив есть но 4 месяца назад
За это время кучу изменений в конфигурации были сделаны и нужно их восстановить


Шансы очень невысокие.
Для начала сделайте select relname from pg_class where relfilenode=relfilenode; посмотрим что за таблица.
14 ноя 17, 02:40    [20951215]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
mefman
Member

Откуда:
Сообщений: 1744
поздравляем с вступлением в клуб тех, кто "теперь делает бекапы"
14 ноя 17, 09:51    [20951447]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Maxim Boguk,
Максим будь добр помоги чайнику блин ввел твою команду у меня она тупо прошла не выдала ни какую ошибку, просто текст вышел
-----------------------------------------
pg_statistic
pg_type
pg_toast_2619
pg_toast_2619_index
pg_authid_rolname_index
pg_authid_oid_index
pg_attribute_relid_attnam_index
pg_attribute_relid_attnum_index
pg_toast_1255
pg_toast_1255_index
pg_toast_2604
pg_toast_2604_index
pg_attrdef_adrelid_adnum_index
pg_toast_2606
pg_toast_2606_index
pg_constraint_conname_nsp_index
pg_am_name_index
pg_am_oid_index
pg_amop_fam_strat_index
pg_amop_opr_fam_index
pg_amop_oid_index
pg_amproc_fam_proc_index
pg_amproc_oid_index
pg_aggregate_fnoid_index
pg_toast_2618
pg_toast_2618_index
pg_toast_2620
pg_toast_2620_index
pg_toast_2609
pg_toast_2609_index
pg_cast_oid_index
pg_cast_source_target_index
pg_toast_2964
pg_toast_2964_index
pg_auth_members_role_member_index
pg_auth_members_member_role_index
pg_toast_2396
pg_toast_2396_index
pg_toast_3596
pg_toast_3596_index
pg_collation_oid_index
pg_collation_name_enc_nsp_index
pg_database_datname_index
pg_database_oid_index
pg_proc_oid_index
pg_inherits_parent_index
pg_inherits_relid_seqno_index
pg_index_indrelid_index
pg_index_indexrelid_index
pg_operator_oid_index
pg_operator_oprname_l_r_n_index
pg_opfamily_am_name_nsp_index
pg_opfamily_oid_index
pg_opclass_am_name_nsp_index
pg_opclass_oid_index
pg_language_name_index
pg_language_oid_index
pg_largeobject_metadata_oid_index
pg_rewrite_oid_index
pg_rewrite_rel_rulename_index
pg_trigger_tgconstraint_index
pg_trigger_tgrelid_tgname_index
pg_event_trigger_evtname_index
pg_event_trigger_oid_index
pg_description_o_c_o_index
pg_enum_oid_index
pg_enum_typid_label_index
pg_namespace_nspname_index
pg_namespace_oid_index
pg_conversion_default_index
pg_conversion_name_nsp_index
pg_conversion_oid_index
pg_depend_depender_index
pg_depend_reference_index
pg_tablespace_oid_index
pg_tablespace_spcname_index
pg_pltemplate_name_index
pg_shdepend_depender_index
pg_shdepend_reference_index
pg_shdescription_o_c_index
pg_ts_config_cfgname_index
pg_ts_config_oid_index
pg_ts_config_map_index
pg_ts_dict_dictname_index
pg_largeobject_loid_pn_index
pg_type_oid_index
pg_roles
pg_shadow
pg_type_typname_nsp_index
pg_authid
pg_user_mapping_oid_index
pg_user_mapping_user_server_index
pg_group
pg_user
pg_rules
pg_views
pg_tables
pg_matviews
pg_indexes
pg_stats
pg_settings
pg_locks
pg_cursors
pg_available_extensions
pg_available_extension_versions
pg_prepared_xacts
pg_prepared_statements
pg_seclabels
pg_timezone_abbrevs
pg_timezone_names
pg_ts_dict_oid_index
pg_ts_parser_prsname_index
pg_ts_template_tmplname_index
pg_ts_template_oid_index
pg_extension_oid_index
pg_extension_name_index
pg_foreign_data_wrapper_oid_index
pg_foreign_data_wrapper_name_index
pg_foreign_server_oid_index
pg_foreign_server_name_index
pg_foreign_table_relid_index
pg_default_acl_role_nsp_obj_index
pg_default_acl_oid_index
pg_seclabel_object_index
pg_shseclabel_object_index
pg_range_rngtypid_index
pg_stat_all_tables
pg_stat_xact_all_tables
pg_stat_sys_tables
pg_stat_xact_sys_tables
pg_stat_user_tables
pg_stat_xact_user_tables
pg_statio_all_tables
pg_statio_sys_tables
pg_statio_user_tables
pg_user_mapping
pg_attribute
pg_proc
pg_statio_all_indexes
pg_statio_sys_indexes
pg_statio_user_indexes
pg_statio_all_sequences
pg_statio_sys_sequences
pg_statio_user_sequences
pg_stat_activity
pg_stat_replication
pg_replication_slots
pg_stat_database
pg_stat_database_conflicts
pg_stat_user_functions
pg_stat_xact_user_functions
pg_stat_archiver
pg_stat_bgwriter
pg_user_mappings
pg_attrdef
pg_constraint
pg_index
pg_operator
pg_opfamily
pg_opclass
pg_am
pg_amop
pg_amproc
pg_language
pg_database
pg_stat_all_indexes
pg_stat_sys_indexes
pg_stat_user_indexes
information_schema_catalog_name
applicable_roles
administrable_role_authorizations
pg_aggregate
pg_rewrite
pg_trigger
pg_event_trigger
pg_description
pg_cast
pg_enum
pg_namespace
pg_conversion
pg_depend
pg_db_role_setting
pg_tablespace
pg_pltemplate
pg_auth_members
pg_shdepend
pg_shdescription
pg_ts_config
pg_ts_config_map
pg_ts_dict
pg_ts_parser
pg_ts_template
pg_extension
pg_foreign_data_wrapper
pg_foreign_server
pg_foreign_table
pg_default_acl
pg_seclabel
pg_shseclabel
pg_collation
pg_range
pg_largeobject
attributes
character_sets
check_constraint_routine_usage
check_constraints
collations
collation_character_set_applicability
column_domain_usage
column_privileges
column_udt_usage
columns
constraint_column_usage
constraint_table_usage
domain_constraints
domain_udt_usage
domains
enabled_roles
key_column_usage
parameters
referential_constraints
role_column_grants
routine_privileges
role_routine_grants
routines
schemata
sequences
sql_implementation_info
pg_toast_11713
pg_toast_11713_index
sql_languages
pg_toast_11718
pg_toast_11718_index
sql_packages
pg_toast_11723
pg_toast_11723_index
pg_toast_11728
pg_toast_11728_index
table_constraints
table_privileges
role_table_grants
tables
triggered_update_columns
triggers
udt_privileges
role_udt_grants
usage_privileges
role_usage_grants
user_defined_types
view_column_usage
view_routine_usage
view_table_usage
views
data_type_privileges
element_types
_pg_foreign_table_columns
column_options
_pg_foreign_data_wrappers
foreign_data_wrapper_options
foreign_data_wrappers
_pg_foreign_servers
foreign_server_options
foreign_servers
_pg_foreign_tables
pg_statistic_relid_att_inh_index
foreign_table_options
foreign_tables
_pg_user_mappings
user_mapping_options
user_mappings
sql_sizing
sql_sizing_profiles
pg_toast_11738
pg_toast_11738_index
pg_proc_proname_args_nsp_index
pg_class_oid_index
pg_class_relname_nsp_index
pg_class_tblspc_relfilenode_index
pg_class
pg_attrdef_oid_index
pg_largeobject_metadata
pg_constraint_conrelid_index
pg_constraint_contypid_index
pg_constraint_oid_index
pg_inherits
pg_trigger_oid_index
pg_enum_typid_sortorder_index
pg_db_role_setting_databaseid_rol_index
pg_ts_parser_oid_index
pg_toast_11708
sql_features
pg_toast_11708_index
pg_toast_11733_index
sql_parts
pg_toast_11733
(295 rows)


postgres=#
14 ноя 17, 15:22    [20953039]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3426
Roxa17,

Я вообще имел в виду сделать
select relname from pg_class where relfilenode=4530825; 
(взяв значение relfilenode Из имени файла).
И делать не в базе postgres а в базе 1С на которой ошибка возникает.

PS: 9.4.2 - версия устаревшая года на 3 эдак с длинным списком известных багов помимо прочего (хотя конечно развалившийся рейд это другое)
14 ноя 17, 16:07    [20953248]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Maxim Boguk,
Как то восстановить средствами postgresql возможно?
14 ноя 17, 17:31    [20953575]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Дерзкий Вакуум
Member

Откуда:
Сообщений: 55
Roxa17,

у postgres нет стандартных средств для восстановления.

Кстати, можно об этом написать разработчикам postgres.
14 ноя 17, 17:52    [20953686]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
vyegorov
Member

Откуда: Рига
Сообщений: 1004
Дерзкий Вакуум
у postgres нет стандартных средств для восстановления.

Кстати, можно об этом написать разработчикам postgres.

Есть стандартные средства восстановления. Бэкапы нужно делать и/или реплики иметь для критичных данных.
14 ноя 17, 19:01    [20953980]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
vyegorov,
на этот случай есть другая проблема. Есть еще одна база которая каждый день делался backup но при загрузке его выходит куча ошибок вот тебе и backup
14 ноя 17, 19:22    [20954019]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Maxim Boguk,
А если попробовать базу загрузить в postgresql более свежей версии?
просто я не на столько силен в коде 1с
14 ноя 17, 19:31    [20954048]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Maxim Boguk
Roxa17,

Я вообще имел в виду сделать
select relname from pg_class where relfilenode=4530825; 
(взяв значение relfilenode Из имени файла).
И делать не в базе postgres а в базе 1С на которой ошибка возникает.

PS: 9.4.2 - версия устаревшая года на 3 эдак с длинным списком известных багов помимо прочего (хотя конечно развалившийся рейд это другое)

Проблема еще одна я не пойму где вводить твои команды они явно не 1с значит это запрос в sql а для меня это дремучий лес
Помоги плз
14 ноя 17, 19:37    [20954071]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 335
Roxa17
Есть еще одна база которая каждый день делался backup но при загрузке его выходит куча ошибок вот тебе и backup

Значит добро пожаловать в ряды тех, кто делает бекапы и проверяет, что может из них восстановиться.

Напомню общие правила работы с повреждёнными данными: для начала сделайте полную копию всех файлов (т.е. datadir целиком, на выключенной базе!) и пробуйте что-то восстановить исключительно из копии. Вообще желательно на отдельной железке. Дико полезная манипуляция даже если знать что делаешь. А уж если не знать и делать - то сделайте сразу 2 копии.

Затем вот сюда: https://wiki.postgresql.org/wiki/Corruption
Затем сделайте pg_dump отдельно для каждой таблицы. pg_catalog похоже хотя бы минимально живой у вас, так что список таблиц прочитать сможете.
Для тех которые не сдампились - выясняете у знакомых с 1с что это за таблицы и насколько вам нужны данные оттуда. Если нужны - вам везёт на приключения. С потерей данных можно что-нибудь попробовать прочитать через гайку zero_damaged_pages. Можно потыкать палочкой pg_filedump

Roxa17
Проблема еще одна я не пойму где вводить твои команды они явно не 1с значит это запрос в sql а для меня это дремучий лес

запрос разумеется sql. Ремарка оставлена, чтобы вы подключились именно к той БД, с какой работает это ваше 1с и запрос сделали именно там, а не в дефолтной базу. По тому списку выше из 296 строк похоже, что подключились вы не к той базе и соответственно запрос выполняли не там.
14 ноя 17, 21:20    [20954317]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Melkij,
Блин тогда я не пойму где ввести имя базы данных? select relname from pg_class where relfilenode=relfilenode; Что нужно изменить в этом запросе чтобы он отработал для меня?
14 ноя 17, 21:40    [20954361]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Melkij,
Разобрался с бекапом=) Дело было не в бобине) Я создавал базу куда будет грузиться бекап из 1с а нужно быо просто создать через postgresql базу и все село нормально
14 ноя 17, 21:41    [20954364]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Я как понимаю этой командой я узнаю какая таблица у меня повреждена?
DETAIL: 0 dead row versions cannot be removed yet.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: vacuuming "public._document552_vt16664"
INFO: "_document552_vt16664": found 0 removable, 0 nonremovable row versions in 0 pages
DETAIL: 0 dead row versions cannot be removed yet.
CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO: vacuuming "public._document552_vt16686"
INFO: "_document552_vt16686": found 0 removable, 0 nonremovable row versions in 0 pages
DETAIL: 0 dead row versions cannot be removed yet.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: vacuuming "public._document554"


ERROR: invalid page in block 3997 of relation base/16402/4530825

ERROR: invalid page in block 3997 of relation base/16402/4530825

это выходит когда делаю vacuum full
14 ноя 17, 21:57    [20954399]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 335
Roxa17
Блин тогда я не пойму где ввести имя базы данных?

Если говорить о psql - то это аргумент запуска.
Или \c имя_базы уже из psql.

К какой таблице относится страничка может сказать запрос, который привёл Maxim Boguk (который с уже любезно подставленным аргументом).
14 ноя 17, 22:05    [20954417]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Roxa17
Member

Откуда:
Сообщений: 10
Melkij,
я вас не понял
14 ноя 17, 22:14    [20954429]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Дерзкий Вакуум
Member

Откуда:
Сообщений: 55
vyegorov
Дерзкий Вакуум
у postgres нет стандартных средств для восстановления.

Кстати, можно об этом написать разработчикам postgres.

Есть стандартные средства восстановления. Бэкапы нужно делать и/или реплики иметь для критичных данных.


Можно подробнее про стандартные методы восстановления поврежденной таблицы?
Как сделать что-то на подобии checktable (MSSQL) ?
20 ноя 17, 13:10    [20968898]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3426
Дерзкий Вакуум
vyegorov
пропущено...

Есть стандартные средства восстановления. Бэкапы нужно делать и/или реплики иметь для критичных данных.


Можно подробнее про стандартные методы восстановления поврежденной таблицы?
Как сделать что-то на подобии checktable (MSSQL) ?


Восстановить из base backup + wal archive или из обычного backup.
Ну и реплики надо.
Вам же написали "стандартные средства восстановления: репликация и система настроенных и автоматически ПРОВЕРЯЕМЫХ backups"
20 ноя 17, 13:13    [20968914]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Дерзкий Вакуум
Member

Откуда:
Сообщений: 55
Maxim Boguk
Дерзкий Вакуум
пропущено...


Можно подробнее про стандартные методы восстановления поврежденной таблицы?
Как сделать что-то на подобии checktable (MSSQL) ?


Восстановить из base backup + wal archive или из обычного backup.
Ну и реплики надо.
Вам же написали "стандартные средства восстановления: репликация и система настроенных и автоматически ПРОВЕРЯЕМЫХ backups"


В MS SQL восстановление поврежденных таблиц гораздо лучше реализовано.

Очень жаль что в посгрес нет аналога checkdb и checktable
20 ноя 17, 13:15    [20968921]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3426
Дерзкий Вакуум
Maxim Boguk
пропущено...


Восстановить из base backup + wal archive или из обычного backup.
Ну и реплики надо.
Вам же написали "стандартные средства восстановления: репликация и система настроенных и автоматически ПРОВЕРЯЕМЫХ backups"


В MS SQL восстановление поврежденных таблиц гораздо лучше реализовано.

Очень жаль что в посгрес нет аналога checkdb и checktable


Вы серьезно считаете что если данные на диске побиты то есть реалистичный метод со стороны базы восстановить их содержимое каким то спиритическим методом?
Если базе нужны checktable - значит у нее не работает WAL log (или что там вместо него используется).
Я тоже могу могу написать checktable для postgres который сделает select count(*) from table и проверит что он не падает с ошибкой.
20 ноя 17, 13:54    [20969095]     Ответить | Цитировать Сообщить модератору
 Re: Восстановление поврежденных таблиц  [new]
Тролин
Member

Откуда:
Сообщений: 189
способом ниже данные теряются....но что есть можно сохранить.


database=# SET zero_damaged_pages = on;
SET
database=# VACUUM FULL damaged_table;
WARNING: invalid page header in block 13748 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13749 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13757 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13758 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13759 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13760 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13762 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13782 of relation base/16995/67484; zeroing out page
(...)
WARNING: index "damaged_table_site_id" contains 14697831 row versions, but table contains 14709258 row versions
HINT: Rebuild the index with REINDEX.
WARNING: invalid page header in block 13762 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13816 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13817 of relation base/16995/67484; zeroing out page
WARNING: invalid page header in block 13818 of relation base/16995/67484; zeroing out page
(...)
WARNING: index "damaged_table_site_id" contains 14697498 row versions, but table contains 14709258 row versions
HINT: Rebuild the index with REINDEX.
VACUUM

database=# REINDEX TABLE damaged_table;
21 ноя 17, 23:56    [20973797]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить