PostgreSQL数据库备份与恢复技术比较
尽管 WAL 归档允许恢复任何对PostgreSQL数据库的数据做的修改,在最初的基础备份之后,它不会恢复对配置文件的修改(也就是说,p
备份 PostgreSQL 数据有三种完全不同的方法:
一、 SQL 转储
SQL转储是使用pg_dump应用工具将当前的数据块导出为SQL文件;当数据库需要重建时,将该SQL文件回馈给服务器,恢复数据库为重建时的数据库状态。
当备份整个数据库集群的时候可以使用pg_dumpall程序, pg_dumpall 备份给出的集群中的每个数据库,同时还确保保留象用户和组这样的全局数据状态。
当数据库中表的大小大于系统允许的最大文件大小时,需要使用标准的UNIX工具解决该问题。
不足:
要获得数据库的超级用户权限,在数据库恢复时仍然要求这些权限的存在。
在pg_dump运行的时候对数据库的更新将不会被转储。
二、 文件系统级别的备份
直接拷贝PostgreSQL数据库中用于存放数据库数据的文件。
方式:
“一致快照方式”
使用rsync执行文件系统备份
不足:
在进行备份时必须关闭数据库
数据库分布在多个文件系统上时,只有关闭数据库足够长的时间才能完整备份
转储后的文件较大
三、在线备份以及即时恢复
这种方式组合了系统备份与WAL文件的备份,当需要恢复时,会先恢复文件备份然后重放WAL文件。
优点:
初始时并不需要完美的一致备份,因此不需要使用快照功能,tar或类似归档工具即可实现备份;
可以通过连续的备份WAL文件归档来实现连续的数据库备份;
可以将数据库恢复到开始备份以来的任意时刻的状态;
要求:
只支持整个数据库集群的恢复;
要求大量的归档存储;
操作:
1、设置WAL归档
1)创建 WAL备份目录,比如:d:\pg_xlog_archive
2)修改 postgresql.conf中的 archive_command 设置,比如:
archive_command = 'copy "%p" d:\\pg_xlog_archive\\%f'
注:%p要用双引号括起来处理安装目录中有空格的情况。
archive_mode = on
wal_level='archive'
在postgresql.conf文件里用archive_command 声明shell命令用于将一个完整的段文件拷贝到指定位置,在该shell命令中需要用%p表示要归档的文件的绝对路径, %f表示文件名。
eg:archive_command = 'cp -i %p /mnt/server/archivedir/%f /null'
归档命令要在运行PostgreSQL服务器的同一个用户的权限下执行。另外,当且仅当归档命令运行成功时它才返回0。
注意:尽管 WAL 归档允许恢复任何对PostgreSQL数据库的数据做的修改,在最初的基础备份之后,它不会恢复对配置文件的修改(也就是说,postgresql.conf,,pg_hba.conf和 pg_ident.conf),因为这些文件都是手工编辑的,而不是通过 SQL操作来编辑的。所以你可能会需要把你的配置文件放在一个日常文件系统备份过程即可处理到的地方。
2、进行基础备份
1)确保 WAL归档打开并且可以运转。
2)以数据库超级用户身份连接到数据库,发出命令 SELECT pg_start_backup('label');
这里的 label 是任意你想使用的这次备份操作的唯一标识。(一个好习惯是使用你想把备份转储文件放置的目的地的全路径。) pg_start_backup用你的备份的信息,在你的集群目录里,创建一个备份标签文件,叫做 backup_label。
3)执行备份,使用任何方便的文件系统工具,比如 tar或者 cpio。这些操作过程中既不需要关闭数据库,也不希望关闭数据库的操作。
4)再次以数据库超级用户身份连接数据库,然后发出命令 SELECT pg_stop_backup();
5)只要在备份过程中使用的 WAL段文件作为正常数据库活动的一部分备份完毕,你的备份工作就完成了。
注意:要保证你的备份转储包括所有数据库集群目录里的文件(比如,/usr/local/pgsql/data)以及表空间。
------------------------------------华丽丽的分割线------------------------------------
CentOS 6.3环境下yum安装PostgreSQL 9.3
PostgreSQL缓存详述
Windows平台编译 PostgreSQL
Ubuntu下LAPP(Linux+Apache+PostgreSQL+PHP)环境的配置与安装
Ubuntu上的phppgAdmin安装及配置
CentOS平台下安装PostgreSQL9.3
PostgreSQL配置Streaming Replication集群
如何在CentOS 7/6.5/6.4 下安装PostgreSQL 9.3 与 phpPgAdmin
------------------------------------华丽丽的分割线------------------------------------
PostgreSQL 的详细介绍:请点这里
PostgreSQL 的下载地址:请点这里
本文永久更新链接地址:

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Full table scanning may be faster in MySQL than using indexes. Specific cases include: 1) the data volume is small; 2) when the query returns a large amount of data; 3) when the index column is not highly selective; 4) when the complex query. By analyzing query plans, optimizing indexes, avoiding over-index and regularly maintaining tables, you can make the best choices in practical applications.

Yes, MySQL can be installed on Windows 7, and although Microsoft has stopped supporting Windows 7, MySQL is still compatible with it. However, the following points should be noted during the installation process: Download the MySQL installer for Windows. Select the appropriate version of MySQL (community or enterprise). Select the appropriate installation directory and character set during the installation process. Set the root user password and keep it properly. Connect to the database for testing. Note the compatibility and security issues on Windows 7, and it is recommended to upgrade to a supported operating system.

InnoDB's full-text search capabilities are very powerful, which can significantly improve database query efficiency and ability to process large amounts of text data. 1) InnoDB implements full-text search through inverted indexing, supporting basic and advanced search queries. 2) Use MATCH and AGAINST keywords to search, support Boolean mode and phrase search. 3) Optimization methods include using word segmentation technology, periodic rebuilding of indexes and adjusting cache size to improve performance and accuracy.

The difference between clustered index and non-clustered index is: 1. Clustered index stores data rows in the index structure, which is suitable for querying by primary key and range. 2. The non-clustered index stores index key values and pointers to data rows, and is suitable for non-primary key column queries.

MySQL is an open source relational database management system. 1) Create database and tables: Use the CREATEDATABASE and CREATETABLE commands. 2) Basic operations: INSERT, UPDATE, DELETE and SELECT. 3) Advanced operations: JOIN, subquery and transaction processing. 4) Debugging skills: Check syntax, data type and permissions. 5) Optimization suggestions: Use indexes, avoid SELECT* and use transactions.

MySQL and MariaDB can coexist, but need to be configured with caution. The key is to allocate different port numbers and data directories to each database, and adjust parameters such as memory allocation and cache size. Connection pooling, application configuration, and version differences also need to be considered and need to be carefully tested and planned to avoid pitfalls. Running two databases simultaneously can cause performance problems in situations where resources are limited.

In MySQL database, the relationship between the user and the database is defined by permissions and tables. The user has a username and password to access the database. Permissions are granted through the GRANT command, while the table is created by the CREATE TABLE command. To establish a relationship between a user and a database, you need to create a database, create a user, and then grant permissions.

MySQL supports four index types: B-Tree, Hash, Full-text, and Spatial. 1.B-Tree index is suitable for equal value search, range query and sorting. 2. Hash index is suitable for equal value searches, but does not support range query and sorting. 3. Full-text index is used for full-text search and is suitable for processing large amounts of text data. 4. Spatial index is used for geospatial data query and is suitable for GIS applications.
