Mysterious table that exists but doesn't exist

Поиск
Список
Период
Сортировка
От Dale Fukami
Тема Mysterious table that exists but doesn't exist
Дата
Msg-id CAAHkhS48yqHxv97ee0DZ4c0cMb9PQsSGKuH=Lpf8HqA_L+VwrA@mail.gmail.com
обсуждение исходный текст
Ответы Re: Mysterious table that exists but doesn't exist
Re: Mysterious table that exists but doesn't exist
Список pgsql-general
Hi,

I'm having a problem on a standby server (streaming replication) where a table seems to exist but is not queryable. Essentially a select statement (and drop/insert/etc) fails but \d and pg_tables show it exists. The table exists on the master (and is queryable) and replication is still working in that changes to the master table don't cause errors on the standby and changes to other tables are replicated and verified to be on the standby. Queries from the standby pasted below.

I have a couple of questions that arise from this:

1) Any thoughts on what is going on here?
2) If there were corruption or something in the data for that particular table on the standby only, would replication report a failure (i.e., be unable to apply the binary changes) or would the binary changes still just sort of happen overtop the bad data? Because in this case, replication is still running without reporting any errors.
3) We managed to discover this by accident during some other routine work we do from a snapshot we'd taken of the standby drives (6 volume raid0). I had assumed that if replication and the pg_last_xlog_receive_location information was up to date then I was safe but, in this case, replication continued to run but the standby is essentially unusable as a failover option since this table is not available. Is there some other way to be certain that a standby server is "consistent" with master?

Thanks,
Dale

psql session output
----------------------------

live=# set search_path to someschema;
SET
live=# select * from tracked_deductibles;
ERROR:  relation "tracked_deductibles" does not exist
LINE 1: select * from tracked_deductibles;
live=# select * from someschema.tracked_deductibles;
ERROR:  relation "someschema.tracked_deductibles" does not exist
LINE 1: select * from someschema.tracked_deductibles;

live=# select *,'X'||tablename||'X' from pg_tables where schemaname = 'someschema' and tablename ilike '%tracked%';
 schemaname |        tablename        | tableowner | tablespace | hasindexes | hasrules | hastriggers |         ?column?
------------+-------------------------+------------+------------+------------+----------+-------------+---------------------------
 someschema | tracked_deductibles     | live       |            | t          | f        | t           | Xtracked_deductiblesX
 someschema | tracked_deductibles_log | live       |            | t          | f        | f           | Xtracked_deductibles_logX
(2 rows)

live=#\d
                                      List of relations
   Schema   |                            Name                             |   Type   | Owner
------------+-------------------------------------------------------------+----------+-------
<snip>
 someschema | tracked_deductibles                                         | table    | live
 someschema | tracked_deductibles_id_seq                                  | sequence | live
<snip>


В списке pgsql-general по дате отправления:

Предыдущее
От: Ramsey Gurley
Дата:
Сообщение: JDBC driver versions
Следующее
От: John R Pierce
Дата:
Сообщение: Re: JDBC driver versions