Обсуждение: Database size different on Primary and Standby?

Поиск
Список
Период
Сортировка

Database size different on Primary and Standby?

От
"Hilbert, Karin"
Дата:
I manage some PostgreSQL clusters on Linux.  We have a Primary & two Standby servers & for Production, there is also a DR server.  We use repmgr for our HA solution & the Standbys are cloned from the Primary using the repmgr standby clone command.

My manager asked for a report of all the user databases & their sizes for each server in the cluster.
I used the psql "\l+" command & then extracted the database name & the size from the output.
I expected the databases to be the same size on the Standbys as on the Primary, but I found that some of the databases were smaller on the Standby servers than on the Primary.

For example, the output on the Primary for one of the user databases showed as:  8997 kB, but on the Standbys, it was 8849 kB.

I even dropped the database on the Primary & then restored it from a backup.  Then checked the sizes again & they still showed the difference.

I also found that the template1 database on the Primary was 7821 kB, but on the Standbys, it was 7673 kB.
Is this normal?  Why would the sizes be different?

Thanks,
Karin Hilbert
Database Administration
Pennsylvania State University

Re: Database size different on Primary and Standby?

От
Erik Wienhold
Дата:
> On 19/01/2023 00:09 CET Hilbert, Karin <ioh1@psu.edu> wrote:
>
> I manage some PostgreSQL clusters on Linux. We have a Primary & two Standby
> servers & for Production, there is also a DR server. We use repmgr for our HA
> solution & the Standbys are cloned from the Primary using the repmgr standby
> clone command.
>
> My manager asked for a report of all the user databases & their sizes for each
> server in the cluster. I used the psql "\l+" command & then extracted the
> database name & the size from the output. I expected the databases to be the
> same size on the Standbys as on the Primary, but I found that some of the
> databases were smaller on the Standby servers than on the Primary.
>
> For example, the output on the Primary for one of the user databases showed
> as: 8997 kB, but on the Standbys, it was 8849 kB.

The standbys could be missing some indexes because schema changes are not
replicated and must be applied manually.

> I even dropped the database on the Primary & then restored it from a backup.
> Then checked the sizes again & they still showed the difference.
>
> I also found that the template1 database on the Primary was 7821 kB, but on
> the Standbys, it was 7673 kB. Is this normal? Why would the sizes be different?

Is template1 identical (schema and data) on primary and standby?

Could also be different page sizes. But that's a compilation option. What does
SHOW block_size say on those systems?

--
Erik



Re: Database size different on Primary and Standby?

От
Ian Lawrence Barwick
Дата:
2023年1月19日(木) 8:50 Erik Wienhold <ewie@ewie.name>:
>
> > On 19/01/2023 00:09 CET Hilbert, Karin <ioh1@psu.edu> wrote:
> >
> > I manage some PostgreSQL clusters on Linux. We have a Primary & two Standby
> > servers & for Production, there is also a DR server. We use repmgr for our HA
> > solution & the Standbys are cloned from the Primary using the repmgr standby
> > clone command.
> >
> > My manager asked for a report of all the user databases & their sizes for each
> > server in the cluster. I used the psql "\l+" command & then extracted the
> > database name & the size from the output. I expected the databases to be the
> > same size on the Standbys as on the Primary, but I found that some of the
> > databases were smaller on the Standby servers than on the Primary.
> >
> > For example, the output on the Primary for one of the user databases showed
> > as: 8997 kB, but on the Standbys, it was 8849 kB.
>
> The standbys could be missing some indexes because schema changes are not
> replicated and must be applied manually.

This is incorrect; with streaming replication all changes applied on the primary
are applied on the standby.

(...)
> Could also be different page sizes. But that's a compilation option. What does
> SHOW block_size say on those systems?

It is impossible to start a standby using binaries built with a
different block size to
the primary.

Regards

Ian Barwick



Re: Database size different on Primary and Standby?

От
Erik Wienhold
Дата:
> On 19/01/2023 01:23 CET Ian Lawrence Barwick <barwick@gmail.com> wrote:
>
> 2023年1月19日(木) 8:50 Erik Wienhold <ewie@ewie.name>:
> >
> > > On 19/01/2023 00:09 CET Hilbert, Karin <ioh1@psu.edu> wrote:
> > >
> > > I manage some PostgreSQL clusters on Linux. We have a Primary & two Standby
> > > servers & for Production, there is also a DR server. We use repmgr for our HA
> > > solution & the Standbys are cloned from the Primary using the repmgr standby
> > > clone command.
> > >
> > > My manager asked for a report of all the user databases & their sizes for each
> > > server in the cluster. I used the psql "\l+" command & then extracted the
> > > database name & the size from the output. I expected the databases to be the
> > > same size on the Standbys as on the Primary, but I found that some of the
> > > databases were smaller on the Standby servers than on the Primary.
> > >
> > > For example, the output on the Primary for one of the user databases showed
> > > as: 8997 kB, but on the Standbys, it was 8849 kB.
> >
> > The standbys could be missing some indexes because schema changes are not
> > replicated and must be applied manually.
>
> This is incorrect; with streaming replication all changes applied on the primary
> are applied on the standby.

Thanks. I was thinking about logical replication.

> (...)
> > Could also be different page sizes. But that's a compilation option. What does
> > SHOW block_size say on those systems?
>
> It is impossible to start a standby using binaries built with a
> different block size to
> the primary.

Makes sense for streaming replication.

--
Erik



Re: Database size different on Primary and Standby?

От
Tom Lane
Дата:
Erik Wienhold <ewie@ewie.name> writes:
> On 19/01/2023 01:23 CET Ian Lawrence Barwick <barwick@gmail.com> wrote:
>> This is incorrect; with streaming replication all changes applied on the primary
>> are applied on the standby.

> Thanks. I was thinking about logical replication.

It's not entirely clear whether the OP is talking about physical or
logical replication --- the discrepancy would sure be a lot easier
to explain if it is logical rep.  In physical rep the databases
*should* be pretty much physically identical.  I think though that
the amount of WAL that's being kept around could be different.

            regards, tom lane



Re: Database size different on Primary and Standby?

От
Ron
Дата:
On 1/18/23 17:09, Hilbert, Karin wrote:
P {margin-top:0;margin-bottom:0;}
I manage some PostgreSQL clusters on Linux.  We have a Primary & two Standby servers & for Production, there is also a DR server.  We use repmgr for our HA solution & the Standbys are cloned from the Primary using the repmgr standby clone command.

My manager asked for a report of all the user databases & their sizes for each server in the cluster.
I used the psql "\l+" command & then extracted the database name & the size from the output.
I expected the databases to be the same size on the Standbys as on the Primary, but I found that some of the databases were smaller on the Standby servers than on the Primary.

For example, the output on the Primary for one of the user databases showed as:  8997 kB, but on the Standbys, it was 8849 kB.

I even dropped the database on the Primary & then restored it from a backup.  Then checked the sizes again & they still showed the difference.

I also found that the template1 database on the Primary was 7821 kB, but on the Standbys, it was 7673 kB.
Is this normal?  Why would the sizes be different?

Maybe it is.  8997 - 8849 = 7821 - 7673 = 148.  That's right: both primaries are exatly 148KB larger.

This will tell you where the differences are: $ du -kc $PGDATA

--
Born in Arizona, moved to Babylonia.