Chapter 22. ���ݺͻָ�

Table of Contents
22.1. SQL ת��
22.1.1. ��ת���лָ�
22.1.2. ʹ�� pg_dumpall
22.1.3. ��������ݿ�
22.1.4. ע��
22.2. �ļ�ϵͳ����ı���
22.3. ���߱����Լ���ʱ�ָ�(PITR)
22.3.1. ���� WAL �鵵
22.3.2. ����һ�λ�������
22.3.3. �����߱����лָ�
22.3.4. ʱ����
22.3.5. ע��
22.4. �ڲ�ͬ�汾֮��Ǩ��

���κΰ���������ݵĶ���һ����PostgreSQL ���ݿ�ҲӦ�þ������ݡ�������������൱�򵥣� �������ǻ���Ӧ���������������õ�һЩ���ɺͼ��衣

���� PostgreSQL ������������ȫ��ͬ�ķ�����

ÿ�ֱ��ݶ����Լ����ŵ��ȱ�㡣

22.1. SQL ת��

SQL ת���ķ������õ������Ǵ���һ���ı��ļ�������ı����涼�� SQL �����������ļ�������������ʱ�����ؽ���ת��ʱ״̬һ�������ݿ⡣ PostgreSQL Ϊ�����;�ṩ��Ӧ�ù��� pg_dump����������Ļ����÷��ǣ�

pg_dump dbname > outfile

������������pg_dump �ѽ���������׼����� ��������Ϳ��Կ�����������ʲô�ô���

pg_dump ��һ����ͨ�� PostgreSQL �ͻ���Ӧ�ã������Ǹ��൱�����Ķ������������ζ������Դ��κο��Է��ʸ����ݿ��Զ������������б��ݹ����� �������ס pg_dump �������κ�����Ȩ�����С�����˵���� ����������Ҫ�����뱸�ݵı�Ķ�Ȩ�ޣ���ˣ�ʵ�����㼸������Ҫ��Ϊ���ݿⳬ���û���

Ҫ���� pg_dump Ӧ�����ĸ��û���ݽ������ӣ�ʹ��������ѡ�� -h host �� -p port�� ȱʡ�����DZ�����������Ļ�������PGHOST������ֵ�� ���ƣ�ȱʡ�˿��ǻ�������PGPORT������������ڵĻ���������˵�ȱʡֵ�� ��������ͨ������ͬ��ȱʡ�����Ի��㷽�㡣��

���κ����� PostgreSQL �ͻ���Ӧ��һ���� pg_dump ȱʡʱ���뵱ǰ����ϵͳ�û���ͬ�������ݿ��û����������ӡ� Ҫ����������֣�Ҫô���� -U ѡ� Ҫô���û�������PGUSER�� ��ע�� pg_dump ������Ҳ����ͨ�ͻ�Ӧ��һ��Ҫͨ���ͻ���֤���ƣ��� Chapter 19����������

�� pg_dump �����ı������ڲ���һ�µģ� Ҳ����˵����pg_dump���е�ʱ������ݿ�ĸ��½����ᱻת���� pg_dump ������ʱ�򲢲����������Ķ����ݿ�IJ����� �����ǻ�������Щ��Ҫ�������IJ��������� VACUUM FULL����

Important: ���������ݿ�ṹ������ OID ������˵�������������ô�������� pg_dump �� OID Ҳ�������� Ҫ�� OID������ʹ�� -o ������ѡ� ȱʡʱҲ����ת��"�����"�������ʹ�ô������ο� pg_dump �������ֲ�ҳ��

22.1.1. ��ת���лָ�

pg_dump ���ɵ��ı��ļ������� psql �����ȡ�� ��ת���лָ��ij���������

psql dbname < infile

����� infile �������pg_dump����� outfile��������������ᴴ�����ݿ� dbname���������ִ��psql ǰ�Լ���template0������Ҳ����˵�������� createdb -T template0 dbname���� psql ֧������ pg_dump ��ѡ�����Կ������ݿ������λ�ú��û����� ���� psql ���ֲ��ȡ������Ϣ��

�ڿ�ʼ���лָ�֮ǰ��Ŀ����������ת�������Ŀ���ӵ�ж�����û��� �Լ�������ijЩ�����ϱ�����Ȩ�޵��û��������Ѿ����ڡ� �����Щ�����ڣ���ô�ָ���ʧ�ܣ���Ϊ�ָ������޷�����Щ����ָ���ԭ�е�����Ȩ��/��Ȩ�ޡ� ����ʱ����ϣ���ָ�Ȩ�ޣ�����ͨ���㲻��Ҫ��ô������

һ����ɻָ�����ÿ�����ݿ������� ANALYZE �����ǵľٶ��� �����Ż����������õ�ͳ�������ˡ������ǿ������� vacuumdb -a -z �� VACUUM ANALYZE �������ݿ⣻�����Ч���ֹ����� VACUUM ANALYZE��

pg_dump �� psql ����ͨ���ܵ���д�� �������ǾͿ��ܴ�һ̨�����Ͻ����ݿ�Ŀ¼ת������һ̨�����ϣ�����

pg_dump -h host1 dbname | psql -h host2 dbname

Important: pg_dump���ɵ�ת������������template0�ġ������ζ���κ� ���뵽template1�����ԣ����̵ȶ��ᾭ�� pg_dump ת��������ǣ��ڻָ���ʱ�������ʹ�õ��ǿͻ�����template1�� ��ô������template0�д����յ����ݿ⣬�����������������������

�й������Ч���� PostgreSQL ��װ�ش������ݵĽ��飬 ��ο� Section 13.4��

22.1.2. ʹ�� pg_dumpall

����ķ����ڱ����������ݿ⼯Ⱥ��ʱ��Ƚ��鷳���Ҳ����㡣��������ṩ�� pg_dumpall ���� pg_dumpall ����һ�������ļ�Ⱥ�е�ÿ�����ݿ⣬ͬʱ��ȷ���������û�����������ȫ������״̬�� �������Ļ����÷��ǣ�

pg_dumpall > outfile

���ɵ�ת�������� psql �ָ���

psql template1 < infile

��ʵ���ϣ�����������������е����ݿ�������ӣ��������������һ���յ����ݿ�װ�أ���ô template1 ����Ψһ��ѡ�񡣣� �ָ�pg_dumpall��ת����ʱ��ͨ����Ҫ���ݿⳬ���û�Ȩ�ޣ���Ϊ������Ҫ�����ָ��û�������Ϣ��

22.1.3. ��������ݿ�

��Ϊ PostgreSQL �����Ĵ�С�������ϵͳ���������ļ���С�� ���ܰѱ�ת����һ���ļ��������⣬��Ϊ���ɵ��ļ��ܿ��ܱ����ϵͳ���������ļ��� ��Ϊ pg_dump �������׼�����������ñ�׼�� Unix �����ƿ�������⣺

ʹ��ѹ����ת��. ʹ������Ϥ��ѹ�����򣬱���˵ gzip��

pg_dump dbname | gzip > filename.gz

����������ָ���

createdb dbname
gunzip -c filename.gz | psql dbname

����

cat filename.gz | gunzip | psql dbname

ʹ�� split��. split ���������� ��������ķ���������ֽ�ɲ���ϵͳ���Խ��ܵĴ�С�� ���磬��ÿ�����СΪ 1 ���ֽڣ�

pg_dump dbname | split -b 1m - filename

����������ָ���

createdb dbname
cat filename* | psql dbname

ʹ�ÿͻ���ת����ʽ. ���PostgreSQL����һ����װ��zlib ѹ�����ϵͳ�������ģ� ��ô�ͻ���ת����ʽ����д������ļ���ʱ��ѹ�����ݡ� �������ɺ�ʹ�� gzip ���ƴ�С��ת���ļ��� ���ǻ�������һ���ŵ㣺�������ѡ��ػָ����еı� ����������ÿͻ���ת����ʽת��һ�����ݿ⣺

pg_dump -Fc dbname > filename

�ͻ�����ʽ��ת�����ǽű����������� psql�� ������Ҫʹ�� pg_restore ת���� ��ο� pg_dump �� pg_restore ���ֲ��ȡϸ�ڡ�

22.1.4. ע��

�������¼��ݵĿ��ǣ�ȱʡ��ʱ�� pg_dump ����ת������� Ҫת������������ʹ�ÿͻ������� tar �����ʽ�� ������ pg_dump ��ʹ��-bѡ� ���� pg_dump �ֲ��ȡ��ϸ��Ϣ�� �� PostgreSQL Դ������ contrib/pg_dumplo ·����Ҳ����һ������ת�������ij���

����Ϥһ�� pg_dump ���ֲ�ҳ��