自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 数据库PostrageSQL-动态追踪

28.5. 动态追踪PostgreSQL提供了功能来支持数据库服务器的动态追踪。这样就允许在代码中的特 定点上调用外部工具来追踪执行过程。一些探针或追踪点已经被插入在源代码中。这些探针的目的是被数据库开发者和管理员使用。默认情况下,探针不被编译到PostgreSQL中;用户需要显式地告诉配置脚本使得探针可用。目前,在写本文当时DTrace1已被支持,它在 Solaris、macOS、FreeBSD、NetBSD 和 Oracle Linux 上可用。Linux 的SystemTap2项目提供了一种可用

2020-12-31 17:55:16 686 2

原创 数据库PostrageSQL-进度报告

28.4. 进度报告PostgreSQL有能力在命令执行期间报告特定命令的进度。当前,唯一一种支持进度报告的命令是VACUUM。这在未来可能会被扩充。28.4.1. VACUUM进度报告只要VACUUM正在运行,每一个当前正在清理的后端(包括autovacuum工作者进程)在pg_stat_progress_vacuum视图中都会有一行。下面的表描述了将被报告的信息并且提供了如何解释它们的信息。进度报告当前不支持VACUUM FULL,运行着VACUUM FULL的后端将不会在这个视图中列出。Tab

2020-12-28 21:01:33 386

原创 数据库PostrageSQL-查看锁

28.3. 查看锁监控数据库活动的另外一个有用的工具是pg_locks系统表。这样就允许数据库管理员查看在锁管理器里面未解决的锁的信息。例如,这个功能可以被用于:查看当前所有未解决的锁、在一个特定数据库中的关系上所有的锁、在一个特定关系上所有的锁,或者由一个特定PostgreSQL会话持有的所有的锁。判断当前数据库中带有最多未授予锁的关系(它很可能是数据库客户端的竞争源)。判断锁竞争给数据库总体性能带来的影响,以及锁竞争随着整个数据库流量的变化范围。pg_locks视图的细节在Section 5

2020-12-28 20:57:52 339

原创 数据库PostrageSQL-统计收集器

28.2. 统计收集器PostgreSQL的统计收集器是一个支持收集和报告服务器活动信息的子系统。 目前,这个收集器可以对表和索引的访问计数,计数可以按磁盘块和个体行来进行。它还跟踪每个表中的总行数、每个表的清理和分析动作的信息。它也统计调用用户定义函数的次数以及在每次调用中花费的总时间。PostgreSQL也支持报告有关系统正在干什么的 动态信息,例如当前正在被其他服务器进程执行的命令以及系统中存在哪些其他连接。 这个功能是独立于收集器进程存在的。28.2.1. 统计收集配置因为统计收集给查询执行

2020-12-28 20:56:25 848

原创 数据库PostrageSQL-监控数据库活动

Chapter 28. 监控数据库活动一个数据库管理员常常会疑惑,“系统现在正在做什么?”这一章会讨论如何搞清楚这个问题。一些工具可以用来监控数据库活动并且分析性能。这一章的大部分都致力于描述PostgreSQL的统计收集器,但是我们也不能忽视常规的 Unix 监控程序,如ps、top、iostat和vmstat。另外,一旦我们发现了一个性能差的查询,可能需要PostgreSQL的EXPLAIN命令来进行进一步的调查。Section 14.1会讨论EXPLAIN以及其他用来理解个体查询行为的方法。2

2020-12-28 20:25:50 301

原创 数据库PostrageSQL-后备服务器设置

27.3. 后备服务器设置standby_mode (boolean)指定是否将PostgreSQL服务器作为一个后备服务器启动。如果这个参数为on,当到达已归档 WAL 末尾时该服务器将不会停止恢复,但是将通过使用restore_command获得新的WAL 段以及/或者通过使用primary_conninfo设置连接到主服务器来尝试继续恢复。primary_conninfo (string)指定后备服务器用来连接主服务器的连接字符串。这个字符串的格式在Section 34.1.1中描述。如果在

2020-12-28 20:20:23 321 1

原创 数据库PostrageSQL-恢复目标设置

27.2. 恢复目标设置默认情况下,恢复将会一直恢复到 WAL 日志的末尾。下面的参数可以被用来指定一个更早的停止点。在recovery_target、recovery_target_lsn、recovery_target_name、recovery_target_time recovery_target_xid中,最多只能使用一个,如果在配置文件中使用了多个,将使用最后一个。recovery_target = 'immediate’这个参数指定恢复应该在达到一个一致状态后尽快结束,即尽早结束。在

2020-12-24 21:18:55 411

原创 数据库PostrageSQL-恢复配置

Chapter 27. 恢复配置这一章描述recovery.conf文件中可用的设置。它们只应用于恢复期。对于你希望执行的任意后续恢复,它们必须被重置。一旦恢复已经开始,它们就不能被更改。recovery.conf中的设置以name = 'value'形式指定。每一行指定一个参数。井号(#)表示行的剩余部分是一段注释。要在一个参数值中嵌入一个单引号,将其双写(’’)。作为一个例子文件,share/recovery.conf.sample被放置在安装的share/目录中。27.1. 归档恢复设置res

2020-12-24 21:14:46 306

原创 数据库PostrageSQL-热备

26.5. 热备术语热备用来描述处于归档恢复或后备模式中的服务器连接到服务器并运行只读查询的能力。这有助于复制目的以及以高精度恢复一个备份到一个期望的状态。术语热备也指服务器从恢复转移到正常操作而用户能继续运行查询并且保持其连接打开的能力。在热备模式中运行查询与正常查询操作相似,尽管如下所述存在一些用法和管理上的区别。26.5.1. 用户概览当hot_standby参数在一台后备服务器上被设置为真时,一旦恢复将系统带到一个一致的状态它将开始接受连接。所有这些连接都被限制为只读,甚至临时表都不能被写入。

2020-12-24 21:10:47 597

原创 数据库PostrageSQL-故障转移

26.3. 故障转移如果主服务器失效,则后备服务器应该开始故障转移过程。如果后备服务器失效,则不会有故障转移发生。如果后备服务器可以被重启(即使晚一点),由于可重启恢复的优势,那么恢复处理也能被立即重启。如果后备服务器不能被重启,则一个全新的后备服务器实例应该被创建。如果主服务器失效并且后备服务器成为了新的主服务器,那么接下来旧的主服务器重启后,你必须有一种机制来通知旧的主服务器不再成为主服务器。有些时候这被称为STONITH(Shoot The Other Node In The Head,关闭其他节

2020-12-23 21:04:14 309

原创 数据库PostrageSQL-日志传送的替代方法

26.4. 日志传送的替代方法前一节描述的内建后备模式的一种替代方案是使用一个轮询归档位置的restore_command。这是版本 8.4 及以下版本中唯一可用的选项。在这种设置中,设置standby_mode为关闭,因为你要自行实现后备操作所需的轮询。关于这种实现的一个参考请见pg_standby模块。注意在这种模式中,服务器将一次应用一整个文件的 WAL,因此如果你使用后备服务器来查询(见热备),那么主服务器上的一个动作和后备服务器上该动作变得可见之间会有一个延迟,该延迟对应着填满 WAL 文件的时

2020-12-23 21:03:33 320

原创 数据库PostrageSQL-日志传送后备服务器

26.2. 日志传送后备服务器连续归档可以被用来创建一个高可用性(HA)集群配置,其中有一个或多个后备服务器随时准备在主服务器失效时接管操作。这种能力被广泛地称为温备或日志传送。主服务器和后备服务器一起工作来提供这种能力,但这些服务器只是松散地组织在一起。主服务器在连续归档模式下操作,而每一个后备服务器在连续恢复模式下操作并且持续从主服务器读取 WAL 文件。要启用这种能力不需要对数据库表做任何改动,因此它相对于其他复制方案降低了管理开销。这种配置对主服务器的性能影响也相对较低。直接从一个数据库服务器

2020-12-22 22:49:33 467

原创 数据库PostrageSQL-高可用、负载均衡和复制

Chapter 26. 高可用、负载均衡和复制数据库服务器可以一起工作,这样如果主要的服务器失效则允许一个第二服务器快速接手它的任务(高可用性),或者可以允许多个计算机提供相同的数据(负载均衡)。理想情况下,数据库服务器能够无缝地一起工作。提供静态网页服务的网页服务器可以非常容易地通过把网页请求均衡到多个机器来组合。事实上,只读的数据库服务器也可以相对容易地组合起来。不幸的是,大部分数据库服务器收到的请求是读/写混合的,并且读/写服务器更难于组合。这是因为尽管只读数据只需要在每台服务器上放置一次,但对于任

2020-12-22 22:27:51 360 2

原创 数据库PostrageSQL-连续归档和时间点恢复(PITR)

25.3. 连续归档和时间点恢复(PITR)在任何时间,PostgreSQL在数据集簇目录的pg_wal/子目录下都保持有一个预写式日志(WAL)。这个日志存在的目的是为了保证崩溃后的安全:如果系统崩溃,可以“重放”从最后一次检查点以来的日志项来恢复数据库的一致性。该日志的存在也使得第三种备份数据库的策略变得可能:我们可以把一个文件系统级别的备份和WAL文件的备份结合起来。当需要恢复时,我们先恢复文件系统备份,然后从备份的WAL文件中重放来把系统带到一个当前状态。这种方法比之前的方法管理起来要更复杂,但是

2020-12-18 23:06:12 579 1

原创 数据库PostrageSQL-文件系统级别备份

25.2. 文件系统级别备份另外一种备份策略是直接复制PostgreSQL用于存储数据库中数据的文件,Section 18.2解释了这些文件的位置。你可以采用任何你喜欢的方式进行文件系统备份,例如:tar -cf backup.tar /usr/local/pgsql/data但是这种方法有两个限制,使得这种方法不实用,或者说至少比pg_dump方法差:为了得到一个可用的备份,数据库服务器必须被关闭。例如阻止所有连接的半路措施是不起作用的(部分原因是tar和类似工具无法得到文件系统状态的一个原

2020-12-18 22:42:21 302 1

原创 数据库PostrageSQL-备份和恢复

Chapter 25. 备份和恢复由于包含着有价值的数据,PostgreSQL数据库应当被定期地备份。虽然过程相当简单,但清晰地理解其底层技术和假设是非常重要的。有三种不同的基本方法来备份PostgreSQL数据:SQL转储文件系统级备份连续归档每一种都有其优缺点,在下面的小节中将分别讨论。25.1. SQL转储SQL 转储方法的思想是创建一个由SQL命令组成的文件,当把这个文件回馈给服务器时,服务器将利用其中的SQL命令重建与转储时状态一样的数据库。 PostgreSQL为此提供了工具

2020-12-18 22:39:16 893 1

原创 数据库PostrageSQL-日志文件维护

24.3. 日志文件维护把数据库服务器的日志输出保存在一个地方是个好主意, 而不是仅仅通过/dev/null丢弃它们。 在进行问题诊断的时候,日志输出是非常宝贵的。不过,日志输出可能很庞大(特别是在比较高的调试级别上), 因此你不会希望无休止地保存它们。你需要轮转日志文件,这样在一段合理的时间后会开始新的日志文件并且移除旧的。如果你简单地把postgres的stderr定向到一个文件中,你会得到日志输出, 但是截断该日志文件的唯一方法是停止并重起服务器。这样做对于开发环境中使用的PostgreSQL可能

2020-12-18 22:23:07 261 1

原创 数据库PostrageSQL-日常重建索引

24.2. 日常重建索引在某些情况下值得周期性地使用REINDEX命令或一系列独立重构步骤来重建索引。已经完全变成空的B树索引页面被收回重用。但是,还是有一种低效的空间利用的可能性:如果一个页面上除少量索引键之外的全部键被删除,该页面仍然被分配。因此,在这种每个范围中大部分但不是全部键最终被删除的使用模式中,可以看到空间的使用是很差的。对于这样的使用模式,推荐使用定期重索引。对于非B树索引可能的膨胀还没有很好地定量分析。在使用非B树索引时定期监控索引的物理尺寸是个好主意。还有,对于B树索引,一个

2020-12-18 22:21:44 353 1

原创 数据库PostrageSQL-日常数据库维护工作

Chapter 24. 日常数据库维护工作和任何数据库软件一样,PostgreSQL需要定期执行特定的任务来达到最优的性能。这里讨论的任务是必需的,但它们本质上是重复性的并且可以很容易使用cron脚本或Windows的任务计划程序等标准工具来自动进行。建立合适的脚本并检查它们是否成功运行是数据库管理员的职责。一个显而易见的维护任务是定期创建数据的后备拷贝。如果没有一个最近的备份,你就不可能在灾难(磁盘失败、或在、错误地删除一个关键表等)后进行恢复。PostgreSQL中的备份和恢复机制在Chapter

2020-12-15 23:13:03 524

原创 数据库PostrageSQL-字符集支持

23.3. 字符集支持PostgreSQL里面的字符集支持你能够以各种字符集存储文本,包括单字节字符集,比如 ISO 8859 系列,以及多字节字符集 ,比如EUC(扩展 Unix 编码 Extended Unix Code)、UTF-8 和 Mule 内部编码。所有被支持的字符集都可以被客户端透明地使用,但少数只能在服务器上使用(即作为一种服务器方编码)。默认的字符集是在使用 initdb初始化你的PostgreSQL数据库集簇时选择的。在你创建一个数据库时可以重载它,因此你可能会有多个数据库并且每

2020-12-14 23:02:44 925

原创 数据库PostrageSQL-排序规则支持

23.2. 排序规则支持排序规则特性允许指定每一列甚至每一个操作的数据的排序顺序和字符分类行为。这放松了数据库的LC_COLLATE和LC_CTYPE设置自创建以后就不能更改这一限制。23.2.1. 概念在概念上,一种可排序数据类型的每一种表达式都有一个排序规则(内建的可排序数据类型是text、varchar和char。用户定义的基础类型也可以被标记为可排序的,并且在一种可排序数据类型上的域也是可排序的)。如果该表达式是一个列引用,该表达式的排序规则就是列所定义的排序规则。如果该表达式是一个常量,排序

2020-12-14 22:49:52 1643

原创 数据库PostrageSQL-本地化

Chapter 23. 本地化本章从管理员的角度描述可用的本地化特性。PostgreSQL支持两种本地化方法:利用操作系统的区域(locale)特性,提供对区域相关的排序顺序、数字格式、 翻译过的信息和其它方面。这种方法在Section 23.1和Section 23.2中。提供一些不同的字符集来支持存储所有种类语言的文本,并提供在客户端和服务器之间的字符集转换。这种方法在Section 23.3中。23.1. 区域支持区域支持指的是应用遵守文化偏好的问题,包括字母表、排序、数字格式等。Pos

2020-12-12 16:46:37 438

原创 数据库PostrageSQL-表空间

22.6. 表空间PostgreSQL中的表空间允许数据库管理员在文件系统中定义用来存放表示数据库对象的文件的位置。一旦被创建,表空间就可以在创建数据库对象时通过名称引用。通过使用表空间,管理员可以控制一个PostgreSQL安装的磁盘布局。 这么做至少有两个用处。首先,如果初始化集簇所在的分区或者卷用光了空间,而又不能在逻辑上扩展或者做别的什么操作,那么表空间可以被创建在一个不同的分区上,直到系统可以被重新配置。其次,表空间允许管理员根据数据库对象的使用模式来优化性能。例如,一个很频繁使用的索引可以

2020-12-12 16:27:09 310

原创 数据库PostrageSQL-销毁一个数据库

22.5. 销毁一个数据库数据库用DROP DATABASE命令删除:DROP DATABASE name;只有数据库的拥有者或者超级用户才可以删除数据库。删除数据库会移除其中包括的所有对象。数据库的删除不能被撤销。你不能在与目标数据库连接时执行DROP DATABASE命令。不过,你可以连接到任何其它数据库,包括 template1数据库。template1也是你删除一个给定集簇中最后一个用户数据库的唯一选项。为了方便,有一个在 shell 程序可以删除数据库,dropdb:dropdb d

2020-12-12 16:20:32 388

原创 数据库PostrageSQL-数据库配置

22.4. 数据库配置回顾一下Chapter 19,PostgreSQL服务器提供了大量的运行时配置变量。你可以为其中的许多设置数据库相关的默认值。例如,如果由于某种原因,你想禁用指定数据库上的GEQO优化器,正常情况下你不得不对所有数据库禁用它,或者确保每个连接的客户端小心地发出了SET geqo TO off。要令这个设置在一个特定数据库中成为默认值,你可以执行下面的命令:ALTER DATABASE mydb SET geqo TO off;这样将保存该设置(但不是立即设置它)。在后续建立

2020-12-12 16:19:00 350

原创 数据库PostrageSQL-模板数据库

22.3. 模板数据库CREATE DATABASE实际上通过拷贝一个已有数据库进行工作。默认情况下,它拷贝名为template1的标准系统数据库。所以该数据库是创建新数据库的“模板”。 如果你为template1数据库增加对象,这些对象将被拷贝到后续创建的用户数据库中。 这种行为允许对数据库中标准对象集合的站点本地修改。例如,如果你把过程语言PL/Perl安装到 template1中,那么你在创建用户数据库后不需要额外的操作就可以使用该语言。系统里还有名为template0的第二个标准系统数据库。这个

2020-12-12 16:17:08 550

原创 数据库PostrageSQL-管理数据库

Chapter 22. 管理数据库每个正在运行的PostgreSQL服务器实例都管理着一个或多个数据库。因此,在组织SQL对象(“数据库对象”)的层次中,数据库位于最顶层。本章描述数据库的属性,以及如何创建、管理、删除它们。22.1. 概述一个数据库是一些SQL对象(“数据库对象”)的命名集合。通常每个数据库对象(表、函数等) 属于并且只属于一个数据库(不过有几个系统表如pg_database属于整个集簇并且对集簇中的每个数据库都是可访问的)。更准确地说,一个数据库是一个模式的集合, 而模式包含表、函

2020-12-11 21:47:35 601

原创 数据库PostrageSQL-函数和触发器安全性

21.6. 函数和触发器安全性函数、触发器以及行级安全性策略允许用户在后端服务器中插入代码,其他用户不会注意到这些代码的执行。因此,这些机制允许用户相对容易地为其他人设置“特洛伊木马”。最强的保护是严格控制哪些人能定义对象。如果做不到,则编写查询时应该只引用具有可信任拥有者的对象。可以从search_path中去除public方案以及任何其他允许不可信用户创建对象的方案。在后端服务器进程中运行的函数带有数据库服务器守护进程的操作系统权限。如果用于函数的编程语言允许非检查的内存访问,它就可能改变服务器的内

2020-12-08 17:54:46 278

原创 数据库PostrageSQL-默认角色

21.5. 默认角色PostgreSQL提供了一组默认角色,它们提供对特定的、通常需要的、需要特权的功能和信息的访问。管理员可以把这些角色GRANT给其环境中的用户或者其他角色,让这些用户能够访问指定的功能和信息。Table 21.1中描述了默认的角色。注意由于额外功能的增加,每一种默认角色相关的权限可能会在未来被改变。管理员应该关注发行注记中提到的这方面的变化。Table 21.1. 默认角色pg_read_server_files、pg_write_server_files以及pg_execu

2020-12-08 17:41:26 481

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除