云备份 CBR PostgreSQL 备份恢复用户指南
1.1 简介
本文档是PostgreSQL定时备份恢复用户指南文档,主要描述了如何正确地使用CBR对PostgreSQL数据库进行数据备份与数据恢复的方法,包括部署前后的注意事项和典型部署方案。
1.2 任务介绍
【任务名称命名规则】:中文、大小写字母、数字、“-”、“_”、“.”、“@”组成,长度为3~255个字符,全局不可重复;
【备注信息规范】:文本类型无限制,长度0~50个字符;当用户输入的字数达到最大值时,将不再显示超过的文字。
1.3 功能介绍
1.3.1 PostgreSQL 数据备份
完全备份
将选定的数据源完全备份到指定目的地的备份集中。每次执行时,它不会根据最新的变动进行备份,而是直接将所有的数据备份到备份存储中,并产生一个时间点,用于记录备份的内容。
增量备份
基于上一次成功的备份,备份数据内容有变动以及变化的日志到备份存储中,同时产生相应的时间点。在尚未进行完全备份的情况下,进行增量备份时,会自动转为完全备份。
1.3.2 PostgreSQL 数据恢复
普通恢复
在PostgreSQL数据库被损坏或者数据丢失时,使用之前的备份集来实现PostgreSQL数据库数据的还原。可勾选数据库联机将数据库进行完全恢复或不完全恢复,恢复目标可选择恢复至原机和异机。
1.3.3 PostgreSQL 数据清理
数据清理
可以清理所管辖的全部备份数据或者单个副本。
1.4 PostgreSQL限制性列表
1.4.1 备份
l 不支持删除非当前归档路径下的归档日志(若归档日志更改过路径,请手动删除旧归档路径下的归档日志)。
l 不支持归档路径与数据路径在同一个路径。
l 如果手动删除了归档路径下的日志,发起增量备份,可能会有日志缺失。若手动删除过日志,请手动发起完全备份。
l 不支持对备份任务的实例路径下重新初始化的实例继续发起增量备份,如果需要备份,请手动发起完全备份或者删除任务重建。
l 不支持多个实例归档日志在同一个路径下,可能会造成日志错乱,备份数据错误。
l 不支持对更改过端口号的实例继续备份。
l 不支持同一个生产机上两个集群实例备份。
l 科特迪瓦双机环境不支持IPv6网络下的备份恢复。
l PostgreSQL9.6之前的版本不支持从机备份,集群备份只能从主节点发起。
l openGauss 3.0.5版本可支持压缩表备份,其他版本不支持存在开启压缩的表实例备份。
l 不支持存在开启加密的表的实例备份。
l 暂时仅支持数据路径下pg_xlog/pg_wal路径为软链接的实例备份恢复。
1.4.2 恢复
l 不支持备份数据恢复到只读目录下。
l 不支持恢复到异用户。
l 不支持多个任务同时恢复同一路径,可能会导致数据丢失。
l 不支持跨数据库版本恢复(版本必须完全一致)。
l 不支持跨操作系统平台恢复(如:Linux平台与Windows平台间的恢复)。
l 不支持集群环境下的实例恢复到最新状态,恢复的数据只能回滚到备份时间点的状态。
l 不支持上个增备到下个完备区间内时间点不完全恢复。
1.5 PostgreSQL定时备份恢复支持功能
表1-1 PostgreSQL定时数据保护支持功能
功能 |
子功能 |
支持 |
备注 |
备份 |
完全备份 |
√ |
- |
增量备份 |
√ |
- |
|
备份粒度 |
√ |
单个实例 |
|
数据保留策略 |
按时间保留 |
√ |
- |
按副本数保留 |
√ |
- |
|
按备份策略的备份周期设置副本保留策略 |
√ |
- |
|
删除归档日志 |
- |
√ |
- |
传输与存储加密 |
- |
√ |
- |
数据压缩 |
- |
√ |
- |
流量控制 |
- |
√ |
- |
重复数据删除 |
- |
√ |
- |
重删高级配置 |
- |
√ |
- |
自定义脚本 |
- |
√ |
双机/集群备份不支持 |
多通道 |
- |
√ |
通道数为1~8 |
备份自动重试 |
- |
√ |
- |
强制数据保留 |
- |
√ |
- |
备份数据一致性校验 |
- |
√ |
- |
恢复 |
原机原位置恢复 |
√ |
- |
原机异位置恢复 |
√ |
- |
|
异机原位置/异位置恢复 |
√ |
- |
|
开启覆盖现有数据库 |
√ |
- |
|
自定义脚本 |
√ |
- |
|
不完全恢复 |
√ |
支持指定时间点与指定Xid恢复 |
|
开启自动联机 |
√ |
- |
|
多通道 |
√ |
通道数为1~8 |
|
日志 |
- |
√ |
- |
告警 |
- |
√ |
- |
远程复制 |
- |
√ |
- |
反向复制 |
- |
√ |
- |
内外网 |
- |
√ |
- |
2 环境前置检查
2.1 客户端安装及配置
2.1.1 客户端安装部署
首先需要安装客户端,请参照《云备份 CBR客户端软件安装卸载用户指南》。
2.2 备份前置准备
2.2.1 PostgreSQL 单机环境前置检查
步骤 1 检查实例状态是否运行。
在进行PostgreSQL数据库备份时,要求实例必须处在开启状态。
若已经配置好环境变量,检查方法为登录Linux系统后台,在PostgreSQL数据库用户下执行以下命令查看实例状态,若显示running,则代表实例正在运行。
pg_ctl -D /PG/pgsql-9.2.2/data status ---查看cluster server状态
pg_ctl -D /var/lib/pgsql/data start ---启动cluster server
pg_ctl -D /var/lib/pgsql/data stop ---关闭 cluster server
psql ---连接系统自带数据库postgres
若未配置环境变量,在PostgreSQL数据库用户下进入到数据库安装时的bin目录下,然后以脚本方式执行以下命令。
./ pg_ctl -D /PG/pgsql-9.2.2/data status ---查看cluster server状态
./pg_ctl -D /var/lib/pgsql/data start ---启动cluster server
./pg_ctl -D /var/lib/pgsql/data stop ---关闭 cluster server
./psql ---连接系统自带数据库postgres
如果数据库实例服务处于停止状态,请协调用户系统管理员,将数据库实例服务开启至正在运行后再进行备份,对于正常提供生产业务的数据库来说,数据库实例服务肯定是运行状态,否则无法提供业务。
步骤 2 检查实例端口号是否配置,默认端口号为5432。设置实例端口号,进入实例数据目录(通过ps -ef | grep postgresql查找示例数据目录),编辑postgresql.conf文件,设置实例端口号与监听。
listen_addresses = '*' ---表示监听所有地址
port = 5432 ---表示监听5432端口,可设置成其他端口号
max_connections = 100 ---表示最大连接数为100。
步骤 3 设置开启归档日志与指定归档日志路径。
wal_level = archive #除minimal不支持,其余可以根据实际场景设置
archive_mode = on #可配置为on,always
archive_command = 'cp %p /home/postgres/backups/archived_log/%f'
其中/home/postgres/backups/archived_log/表示要存放归档日志(WAL日志)的路径,该路径必须存在,且postgres用户有读写权限。
| 修改完postgresql.conf配置文件,需要重新启动数据库服务。
步骤 4 若需要开启实例登录密码验证,则编辑data目录下的pg_hba.conf文件,将METHOD的值改为md5。
l 修改完配置文件,需要重新启动数据库服务;
l 此选项可选,不是必须要修改的;
l 默认METHOD值为trust,数据库实例授权时,不会验证用户名、密码正确性,即使使用错误的用户名密码,授权状态为成功,不会有错误提示。
----结束
2.2.2 双机/集群环境前置检查
步骤 1 检查实例状态是否运行。参考2.2.1 PostgreSQL单机的检查方法。
步骤 2 检查实例端口号是否配置,默认端口号为5432。参考2.2.1 PostgreSQL单机的检查方法。
步骤 3 检查是否开启归档日志与指定归档日志路径。
wal_level = archive/hot_standby #除minimal不支持,其余可以根据实际场景设置
archive_mode = on #可配置为on,always
archive_command = 'cp %p /home/postgres/backups/archived_log/%f'
其中/home/postgres/backups/archived_log/表示要存放归档日志(WAL日志)的路径,该路径必须存在,且postgres用户有读写权限。
| 修改完postgresql.conf配置文件,需要重新启动数据库服务。
步骤 4 若需要开启实例登录密码验证,则编辑data目录下的pg_hba.conf文件,将METHOD的值改为md5。参考2.2.1 PostgreSQL单机的设置方法。
----结束
3 PostgreSQL 客户端管理
3.1 PostgreSQL 数据库实例授权
步骤 1 使用操作员或租户登录管理控制台,单击左侧导航栏选择【资源】→ 【客户端】,进入客户端管理页面,选择需要备份的主机,单击【权限配置】,选择PostgreSQL数据库图标,选择用户。
步骤 2 选择用户后,展开数据源单击【添加实例】或者列表已经展示的实例右侧的【未授权按钮】,输入用户名与密码,给实例授权。若是添加实例,还需要输入实例名,实例名格式为数据库用户: PostgreSQL_端口号, 如postgres:PostgreSQL_5432。
步骤 3 授权前,检查数据库用户权限:
l 数据库用户为超级用户,直接授权即可;
l 数据库用户为普通用户,按照以下步骤操作,赋予用户权限:
1. 创建用户,若已创建可跳过:CREATE USER testuser WITH PASSWORD 'testuser';
2. 授权数据库权限:GRANT ALL PRIVILEGES ON DATABASE postgres TO testuser;
3. 连接postgres数据库,以下sql语句必须在所要操作的数据库里执行:\c postgres;
4. 授权所有表权限:GRANT ALL PRIVILEGES ON all tables in schema public TO testuser;
5. 授权开始备份函数权限:GRANT ALL PRIVILEGES on function pg_start_backup to testuser;
6. 授权结束备份函数权限:GRANT ALL PRIVILEGES on function pg_stop_backup() to testuser;
7. 授权查看配置权限:GRANT pg_read_all_settings to testuser;
8. 授权切换日志函数权限:
高版本:GRANT ALL PRIVILEGES on function pg_switch_wal() to testuser;
低版本:GRANT ALL PRIVILEGES on function pg_switch_xlog() to testuser;
9. 授权应用日志恢复函数权限:
高版本:GRANT ALL PRIVILEGES on function pg_wal_replay_resume() to testuser;
低版本:GRANT ALL PRIVILEGES on function pg_ xlog _replay_resume() to testuser;
步骤 4 实例授权成功。
l 若客户端未安装netstat或者数据库用户(如postgres)下没有netstat没有执行权限时,在授权时,展开数据源不会自动发现实例,需要手动进行添加;可在客户端数据库用户下(postgres)直接执行netstat命令查看是否拥有此命令以及执行权限。
l 若配置了密码验证,用户名密码必须填写正确,否则授权失败;
l 普通用户可以授权成功,但需要配置权限,否则执行备份任务会失败。
l 请确保实例下存在默认的postgres的数据库,否则会连接数据库失败。若不存在,请手动创建数据库postgres。
l MongDB | openGauss数据库授权需要用具有Sysadmin权限的用户进行授权。授权用户不需要是系统用户。
----结束
3.2 新建PostgreSQL 虚拟客户端
步骤 1 使用操作员或租户登录管理控制台,单击左侧导航栏选择【资源】→ 【客户端】,进入客户端管理页面,单击【新建虚拟客户端】,选择【PostgreSQL集群虚拟客户端】。
步骤 2 在新建虚拟客户端页面,填写虚拟客户端名称,勾选集群下的物理客户端,单击【创建】。
步骤 4 删除虚拟集群客户端。选择创建好的虚拟集群客户端,单击【删除】,在文本框输入“YES”,单击【确定】。
步骤 5 给虚拟集群客户端下的所有物理客户端授权,参考3.1 PostgreSQL数据库实例授权。
----结束
3.3 授权 FAQs
l Q1:数据源授权时,展开实例时,界面报错:检测时实例失败。
【问题原因】:
1、生产机不存在netstat工具或者netstat工具没有执行权限。
2、所选用户下没有运行中的PostgreSQL实例。
【解决方案】:
1、单击添加实例按钮,参照用户指南,手动添加实例即可。若存在netstat命令,执行命令chmod +s /bin/netstat。
2、按照用户指南,检查实例状态是否为运行中。
l Q2:数据源授权时,展开实例时,界面报错:展开数据源失败。
【问题原因】:未安装PostgreSQL数据库,导致无法发现实例。
【解决方案】:检查环境是否已经安装了PostgreSQL数据库。
l Q3:数据源授权时,输入用户名密码后单击【授权】,报错授权实例失败,原因是:授权实例失败,请检查用户名或密码是否正确。
【问题原因】:
1、实例未成功运行,或在授权时被关闭。
2、用户名或者密码填写不正确,导致授权失败。
【解决方案】:
1、按照用户指南,检查实例状态是否为运行中。
2、检查填写的用户名与密码是否正确。
4 PostgreSQL 数据备份
4.1 PostgreSQL 备份用户指南
4.1.1 单机备份任务创建
步骤 1 使用操作员或租户登录管理控制台,单击标签栏【定时数据保护】→【数据备份】→【任务】→【数据级备份任务】选项卡,在操作界面,单击【新建】→【数据级备份任务】,选择相应的客户端,其应用类型自动显示在右侧,选择【PostgreSQL数据库】。
步骤 2 单击【下一步】,展开数据源层级,勾选需要保护的数据源,此处只可勾选单个实例。
步骤 3 备份介质与备份选项,备份介质默认选中OFS,备份选项按需要配置,各选项功能再下方有说明,按需要配置之后,单击【下一步】。
【LAN-Free】默认为不开启,开启该选项备份链路为光纤链路,具体配置可参考《云备份 CBR LAN-Free备份恢复用户指南》;
【归档日志删除策略】默认不开启,开启之后按照设置的时间删除已备份过的归档日志。可选择按时间删除归档日志或删除全部已备份归档日志。 数值范围:0~999小时,0~999天,0~999周,0~999月,0~99年;
【传输和存储加密】默认不开启,开启该选项后默认启用启ES256加密算法,可选择启用SM4加密算法,该功能可以和【重复数据删除选项】同时开启;
【重复数据删除】默认为不开启,开启该选项可以启用源端重复数据删除的功能,具体配置可参考《云备份 CBR定时数据保护重复数据删除用户指南》;
【重删高级配置】默认不开启;开启重复数据删除选项后方可开启该选项,可参阅《云备份 CBR定时数据保护重复数据删除用户指南》;
【流量控制】默认不开启,开启之后支持分时段限速,限速范围0~1024MiB/s。可添加多条限速计划,计划时段不允许冲突。
【自定义脚本】默认不开启。开启之后可设置备份前,备份成功,备份失败后执行脚本。
【备份自动重试】默认不开启。开启之后任务失败之后,按照设定的时间间隔与次数重新触发任务执行。
【通道数】默认不开启。可开启1~8个通道。不开启时,通道数为1。默认每个通道分配内存256MiB,请结合生产机实际内存合理配置通道数。
【数据压缩】默认不开启;开启后默认启用快速压缩,可选择启用强力压缩;
【强制数据保留】默认不开启;开启后,则保留时常内的数据无法被清理,同时该策略在编辑时,保留时长只能增加不能减少,也无法关闭该选项。
【备份数据一致性校验】默认不开启;该功能不可以和【重复数据删除选项】同时开启;开启此选项,任务可以创建数据校验任务。
步骤 4 单击【下一步】,填写备份任务名称和备注,单击【完成】,任务创建成功。
步骤 5 单击【完成】,弹出信息确认框,确认录入信息。
l 勾选【任务生成后立即执行】,单击【确定】,任务立即发起。
l 不勾选【任务生成后立即执行】,单击【确定】,任务新建成功后不会自动发起。
步骤 6 新建成功的备份任务信息展示。
----结束
4.1.2 双机/集群备份任务创建
步骤 1 使用操作员或租户登录管理控制台,单击标签栏【定时数据保护】→【数据备份】→【任务】→【数据级备份任务】选项卡,在操作界面,单击【新建】→【数据级备份任务】,选择相应的客户端,其应用类型自动显示在右侧,选择【PostgreSQL数据库】。
步骤 2 单击【下一步】,展开数据源层级,勾选需要保护的数据源,此处每个主机只可勾选单个实例。Pgpool-II双机主从复制环境建议勾选所有节点下的实例。
步骤 3 备份介质与备份选项,备份介质默认选中OFS,备份选项按需要配置,各选项功能再下方有说明,按需要配置之后,单击【下一步】。
【LAN-Free】默认为不开启,开启该选项备份链路为光纤链路,具体配置可参考《云备份 CBR LAN-Free备份恢复用户指南》;
【归档日志删除策略】默认不开启,开启之后按照设置的时间删除已备份过的归档日志。可选择按时间删除归档日志或删除全部已备份归档日志。 数值范围:0~999小时,0~999天,0~999周,0~999月,0~99年;
【传输和存储加密】默认不开启,开启该选项后默认启用启ES256加密算法,可选择启用SM4加密算法,该功能可以和【重复数据删除选项】同时开启;
【重复数据删除】默认为不开启,开启该选项可以启用源端重复数据删除的功能,具体配置可参考《云备份 CBR定时数据保护重复数据删除用户指南》;
【重删高级配置】默认不开启;开启重复数据删除选项后方可开启该选项,可参阅《云备份 CBR定时数据保护重复数据删除用户指南》;
【流量控制】默认不开启,开启之后支持分时段限速,限速范围0~1024MiB/s。可添加多条限速计划,计划时段不允许冲突。
【数据压缩】默认不开启;开启后默认启用快速压缩,可选择启用强力压缩;
【备份自动重试】默认不开启。开启之后任务失败之后,按照设定的时间间隔与次数重新触发任务执行。
【通道数】默认不开启。可开启1~8个通道。不开启时,通道数为1。默认每个通道分配内存256MiB,请结合生产机实际内存合理配置通道数。
【强制数据保留】默认不开启;开启后,则保留时常内的数据无法被清理,同时该策略在编辑时,保留时长只能增加不能减少,也无法关闭该选项。
【备份数据一致性校验】默认不开启;该功能不可以和【重复数据删除选项】同时开启;开启此选项,任务可以创建数据校验任务。
步骤 4 单击【下一步】,填写备份任务名称和备注,单击【完成】,任务创建成功。
步骤 5 单击【完成】,弹出信息确认框,确认录入信息。
l 勾选【任务生成后立即执行】,单击【确定】,任务立即发起。
l 不勾选【任务生成后立即执行】,单击【确定】,任务新建成功后不会自动发起。
步骤 6 新建成功的备份任务信息展示。
----结束
4.1.3 备份策略管理
步骤 1 使用操作员或租户登录管理控制台,单击【定时数据保护】→【策略】→【新建】→【策略名称】,根据需要选择【备份周期】→【确定】。
【策略名称】:中文、大小写字母、数字、"-"、"_"、"."、"@"组成,长度为3-30个字符,不可重复。
【备份周期】:可选单位:天、周、月。默认:每1天,范围:1~365天;选中“周”时,出现周几的多选控件,默认:选中周日,范围:周一至周日,可多选;选中“月”时,出现选择每月几号的下拉多选控件, 默认:选中每月1日,范围:1-31可多选,未选几号时需提示必填。若当月无选定日期则在最后一天触发,例如九月份无31号,但是日期选中了31号,则默认在9月30号即九月最后一天触发任务。
【重复发起】:默认关闭。若开启,则出现“持续时间”和“频率”设置;意义为:在一定的【持续时间】内,依【频率】发起多次备份。【持续时间】范围:1~59分钟,1~24小时,默认值24小时【频率】范围:1~59分钟,1~24小时,默认值1小时【频率】不可超过【持续时间】。
在策略页面,选中策略可以查看策略的内容和该策略关联的任务。
步骤 2 在备份任务页面,勾选创建成功的任务,单击【策略】,在弹出的对话框中选择【添加】,再选择【备份方式】和【发起时间】,单击【确定】弹出【设置策略成功】即设置成功。
【备份方式】:分为完全备份、增量备份。
【发起时间】:必选项,发起计划的具体时间格式:YYYY-MM-DD HH:MM,精确到分钟,默认显示:当前时间,设置时间不可早于当前时间。
步骤 3 可以对策略任务进行编辑、禁用与启用,删除。
l 添加每月策略任务的时候,尽量避免选择31号、30号、29号进行定时备份,考虑到有的月份特殊,可选择28号及其之前的任何一个日期进行备份,这样可以保证每月都有任务执行;
l 在设置【开始时间】时,建议您尽量在服务器空闲时进行备份操作;另外,在设置【最大保存完全副本数】时,可在综合考虑您的存储空间和数据需求等因素后进行合理的设置(保留副本数策略:保留n个副本数,至少需要n+1个副本的空间)。
l 在设置策略时,请务必不要使用一个完全后续全是增量备份的方式;一个月必须要进行至少一次的完全备份,以保护数据安全。
----结束
4.1.4 数据保留策略管理
步骤 1 使用操作员或租户登录管理控制台,单击【定时数据保护】→【策略】→【备份数据保留策略】,单击【新建】按钮,新建数据保留策略。
1. 名称:输入数据保留策略的名称。数据保留策略名称由中文、大小写字母、数字、“-”、“_”、“.”、“@”组成,长度为3~30个字符。
2. 数据保留策略:默认关闭,须开启后才能继续配置。
a. 数据保留期限:默认保留 1 年的备份副本,即从使用该策略开始到 1 年后,这期间产生的副本将被保留,超过 1 年的副本将被自动清理。可开启【严格保留】选项。
数据保留期限配置参数范围为 1~999;可以选择年、月、周、天为单位。
b. 保留副本个数:默认保留 2 个副本,即同一备份任务的副本超过 2 个后,最旧的副本将被自动清理。保留副本个数配置参数范围为 1~1024。
c. 按备份策略的备份周期设置副本保留策略:
n 如果备份策略是按天设置,则默认保留 30 个副本。
n 如果备份策略是按周设置,则默认保留 24 个副本。
n 如果备份策略是按月设置,则默认保留 12 个副本。
n 如果备份策略是按年设置,则默认保留 4 个副本。
n 按照备份策略的备份周期所有参数配置范围均为 1~99999。
n 支持复选,且当任务使用对应备份周期的备份策略后,才限制发起的副本总数。
n 未勾选复选框,则默认保留所有副本。
n 勾选复选框,但任务没有使用此备份周期的备份策略,则保留自动发起的所有副本。
例如:启用 “按年备份策略”,但任务使用的备份策略没有年度备份策略,则保留所有备份策略自动产生的全部副本。
n 如果某一个备份周期的备份策略存在多个,则保留副本数为此类备份周期的所有备份策略产生的副本累加。
例如:任务关联了 4 个年度备份策略,则最终将保留 1 年内的 4 个副本。
3. 完整副本保留:开启后不会触发备份数据自动清理。
步骤 2 给备份任务添加数据保留策略。
步骤 3 在数据备份页面中,选中任务,单击【策略】->【添加数据保留策略模板】。
移除数据保留策略。在数据备份页面中,选中任务,单击【策略】→【移除数据保留策略】,单击确定,成功移除模板。
----结束
4.1.5 备份任务编辑
步骤 1 使用操作员或租户登录管理控制台,单击标签栏【定时数据保护】→【数据备份】→【任务】选项卡,选中需要编辑的备份任务,单击【编辑】。
步骤 2 进入主机选择界面,需要保护的主机不能编辑修改,单击【下一步】。
步骤 3 进入数据源选择界面,数据源不支持编辑,单击“下一步”。
步骤 4 进入备份介质与备份选项页面,备份介质不支持修改,备份选项中【传输与存储加密】和【重复数据删除】和【重删高级配置】和【备份数据一致性校验】不支持修改,其余选项可修改。按照需要修改备份选项后,单击【下一步】。
步骤 5 进入任务名称及备注界面,任务名称不支持编辑修改,备注可修改,单击【完成】。
----结束
4.1.6 备份任务执行
步骤 1 使用操作员或租户登录管理控制台,单击标签栏【定时数据保护】→【数据备份】→【任务】选项卡,选择已创建的备份任务,选择【启动】,弹出启动确认弹窗,选择备份方式后,单击【启动】,发起任务。
步骤 2 启动任务后,在【监控】页面选中任务,单击【详情】,可在执行中查看执行概要及执行输出信息。
步骤 3 任务执行结束,可在历史记录中查看执行结果。单击【详情】,可查看执行概要及执行输出信息。
----结束
4.1.7 备份任务删除
步骤 1 使用操作员或租户登录管理控制台,单击标签栏【定时数据保护】→【数据备份】→【任务】选项卡,选择已创建的备份任务,选择【删除】,弹出删除确认弹窗,输入“YES”,单击删除,删除任务。
l 未开启归档日志,备份任务会失败;
l 设置的归档路径不存在或者设置的归档日志格式不正确,备份任务会失败;
l 归档日志路径权限不正确时,备份任务会执行失败;
l 手动删除过归档日志路径下的日志或者手动备份设置删除过归档日志,请发起一次完全备份,否则之后增量备份时间点日志不全,不能正常使用;
l 当归档日志路径与实例数据路径在同一个路径,或者归档日志路径是数据路径的子路径,备份任务会执行失败,请重新设置归档路径;
l 若更改过归档日志路径,备份任务不会删除之前旧的归档日志路径下的归档日志。若确认此部分日志不需要保存,请手动进行删除;
l 更改过归档日志路径或者更改过数据路径,下次发起增量备份时,会自动转为完全备份,以保证数据一致性;
l 归档日志路径空间不足时,备份任务会执行失败;
l 实例的端口号更改后,备份任务会找不到实例,备份失败;
l 若有其他任务发起恢复至某备份任务的实例的数据路径,请对此备份任务发起一次完备,否则会导致之后的增量备份数据不可用;
l 恢复之后的数据库首次完全备份在备份完归档日志之后如果失败,需要手动发起一次完备,否则之后的增备时间点不可用;
l 恢复过后的实例,默认关闭归档日志。若需要发起此实例的备份,请手动开启归档日志。
l 备份任务执行过程中,对数据库进行删除操作,备份任务执行过程中可能会出现警告,那是因为数据的删除操作删除了备份任务开始时记录的需要备份的文件,此时任务会出现警告,可忽略。备份时间点可正常恢复。
l 删除任务并不会删除数据,若需要清理数据,请至数据清理清理数据。
l Pgpool主从流复制双机环境下,若双机的实例端口不同,用户不同,或者实例密码不同,在备份任务只勾选了主节点的情况下,故障转移后备份会失败。若只勾选了备节点,任务发起就会失败。建议Pgpool主从流复制双机环境新建任务时,勾选所有节点下的实例。
l Pgpool主从流复制双机环境只支持单个集群实例备份。
l Pgpool主从流复制双机环境下新建集群任务test1若只选择集群其中一个节点下的实例A,再次选择另一节点的实例A新建备份任务test2,备份任务test1与test2可能会存在问题。
l PostgreSQL备份实例如果存在大量事务提交,发起备份任务时,在通知数据库开始备份时可能会有卡顿,属正常现象。
----结束
4.1.8 备份 FAQs
l Q1:备份任务执行失败,报错:没有权限。
【问题原因】:1、备份任务实例授权后密码被更改,导致备份时登录数据库失败。
【解决方案】:1、重新授权实例,再次发起备份。
l Q2:备份任务失败,报错:归档命令未配置。
【问题原因】:未配置归档相关信息或者未填写归档路径。
【解决方案】:按照用户指南步骤,开启实例归档以及设置归档路径。
l Q3:备份失败,报错:归档路径不存在。
【问题原因】:设置的归档路径实际不存在或者设置的归档路径格式不正确。
【解决方案】:检查归档日志配置是否按照用户指南中的步骤设置准确,且设置的归档日志路径是否真实存在。
l Q4:备份失败,报错实例未配置。
【问题原因】:备份实例未授权。
【解决方案】:给需要备份的实例授权。
l Q5:备份失败,报错:归档路径与数据路径相同。
【问题原因】:备份实例设置的归档路径为数据路径或者是数据路径的子路径。
【解决方案】:修改归档路径为非数据路径且不属于数据路径下的子路径的其它已存在路径。
l Q6:备份失败,报错:数据库未启动。
【问题原因】:备份实例被关闭了或者配置文件中的端口号被修改为其它端口。
【解决方案】:检查备份实例状态是否为运行中,且实例端口号为备份任务新建时的实例端口号。
l Q7:备份失败,报错:连接存储服务失败。
【问题原因】:备份节点未创建元数据卷。
【解决方案】:登录admin账户,进入节点管理,创建元数据卷。
l Q8:备份失败,报错:尚未配置传输IP。
【问题原因】:未配置数据传输IP。
【解决方案】:登录admin账户,进入节点管理,配置数据传输IP。
l Q9:备份失败,报错:分配存储空间失败。
【问题原因】:未配置OFS卷或者OFS卷空间不足。
【解决方案】:检查是否创建了OFS卷以及OFS卷空间是否足够用来存储备份数据,若没有创建OFS卷,创建OFS卷;若OFS卷空间不足,增大OFS卷空间或者清理不需要保留的数据。
l Q10:备份过程中实例停止,报错:指定的备份路径不存在;连接数据库失败;执行数据库命令失败。
【问题原因】:备份过程中实例被异常关闭。
【解决方案】:检查实例状态是否正常运行,若实例未开启,开启实例,待实例正常运行后再次发起备份任务。
l Q11:备份失败,报错:执行数据库命令show data_directory;失败。
【问题原因】:普通用户授权下的实例进行备份。
【解决方案】:参照用户指南对普通用户赋权,或者使用superuser授权实例,然后进行备份。
l Q12:备份失败,报错:执行数据库命令失败 select PG_START_BACKUP(‘XX_XX_XXX’)。
【问题原因】:上一次备份任务异常停止,导致数据库pg_stop_backup未成功执行。
【解决方案】:登录数据库,手动执行select pg_stop_backup();
l Q13:备份失败,报错: 打开文件(目录),可能原因:目标文件或目录被占用。
【问题原因】:备份实例异常,可能是实例异常关闭或者无法连接。
【解决方案】:查看实例状态是否正常运行。
l Q14:备份任务处于准备中状态无法流转,且没有任何输出。
【问题原因】:前置任务检测控制台异常(如断电断网)导致任务无法正常中止。
【解决方案】:在控制台后台使用停止工具停止任务。进入控制台安装目录,执行./stoptask_delpolicy_Tool.sh工具。
l Q15:集群备份失败,报错找不到主节点。
【问题原因】:备份任务中的虚拟客户端均找不到正在运行的集群实例。
【解决方案】:登录生产机,查看集群主节点实例是否正常运行。
5 PostgreSQL 数据恢复
5.1 恢复注意事项
l 恢复的目的地若已有实例再运行,需要先关闭实例,否则恢复失败。见2.2.1数据库状态检查。
l 恢复路径为700权限,路径需要有备份实例相同用户的属主权限。
l 异机恢复时,必须保证异机已安装相同版本的PostgreSQL数据库。
l 恢复时,若恢复路径非空,需要开启覆盖现有数据库,否则恢复失败。
l 恢复之后的实例,默认归档日志关闭,若需要开启归档,请手动设置开启归档日志与归档路径,建议设置一个新的空归档路径,否则可能会有环境上现有实例冲突,导致日志错乱。
l 若恢复目的地存在同端口实例运行,且恢复任务开启联机启动实例,这时恢复任务启动实例会失败,可通过手动更改恢复实例端口号或者关闭已有相同端口的实例后,再去启动恢复的实例。
l 恢复目的地空间不足,恢复失败。
l 恢复路径下不应存在其他实例数据路径,否则开启覆盖会删除其他实例的数据。
l 不要同时向同一个路径发起恢复任务,这样可能会造成数据丢失。
l 恢复之后的数据库首次完全备份在备份完归档日志之后如果失败,需要手动发起一次完备,否则下次增备时间点不可用。
l 若备份实例存在软链接文件,恢复目的端需要存在相同的软链接指向路径且路径拥有备份实例的数据库用户权限。
l 双机备份任务恢复,无法回滚到最新的状态,只能回滚到备份时的状态。
l 恢复到原机或者异机后的实例A启动后,实例A设置的归档路径与存在备份任务的实例B归档路径为同一个,可能会导致备份任务实例B的日志错乱,增量备份数据无效,无法恢复。
l 若恢复路径已存在postgresql.conf或者postgresql.auto.conf或者pg_hba.conf文件,恢复默认使用路径下已有的原配置文件;若恢复路径不存在postgresql.conf或者postgresql.auto.conf或者pg_hba.conf文件(即恢复路径为空,不为空时需要开启覆盖),则使用备份任务备份时的配置文件。
l 恢复路径仅存在postgresql.conf或者postgresql.auto.conf或者pg_hba.conf文件,恢复不开启覆盖,恢复任务可以执行成功。
5.2 恢复步骤
双机与单机的恢复步骤一致,均是恢复成单机,不做分开叙述。若需要扩展成集群模式,请参考第8~9章。
步骤 1 检查要恢复的位置实例是否关闭,若正在运行,请先关闭实例。
步骤 2 若需要指定恢复路径,请检查恢复路径权限是否正确,路径需要拥有700权限以及备份实例数据库用户的属组权限。
步骤 3 使用操作员或租户登录管理控制台,单击【定时数据保护】→【数据恢复】→【恢复备份数据】,单击【新建】,进入新建恢复任务页面第一页。
步骤 4 选择要恢复的备份任务。
步骤 5 单击【下一步】,选择备份时间点,展开数据源列表,勾选实例。
步骤 6 选择客户端和数据库用户以及恢复路径,设置恢复选项。恢复选项说明如下。
【Lan-Free】默认不开启。启该选项备份链路为光纤链路,具体配置可参考《云备份 CBR LAN-Free备份恢复用户指南》;
【覆盖现有数据库】默认不开启,开启之后恢复任务会覆盖目的地现有数据。原机原位置恢复需要开启此选项。
【不完全恢复】默认不开启。只有增量备份时间点才支持不完全恢复。开启之后可设置指定时间点恢复或指定Xid恢复。
【通道数】默认不开启。可开启1~8个通道。不开启时,通道数为1。默认每个通道分配内存256MiB,请结合生产机实际内存合理配置通道数。
【恢复后使数据库联机】默认开启。开启之后任务执行后会自动启动实例,否则实例不启动。
【自定义脚本】默认不开启。开启之后可设置恢复前,恢复成功,恢复失败后执行脚本。
步骤 7 单击【下一步】,填写任务名称和备注。
步骤 8 单击【完成】,弹出信息确认框。
步骤 9 单击【确定】,任务开始执行,可查看任务执行记录。
步骤 10 选中任务,单击【详情】,可查看任务执行详情与执行输出。
----结束
5.3 恢复 FAQs
l Q1:恢复失败,报错:实例正在运行。
【问题原因】:恢复的路径下实例处于运行状态。
【解决方案】:关闭要恢复至的路径下的实例或者恢复至新的路径下。
l Q2:恢复失败,报错:恢复路径非空。
【问题原因】:恢复任务未开启覆盖选项恢复至一个非空目录。
【解决方案】:恢复任务开启覆盖现有数据库,或者恢复至一个空的目录。
l Q3:恢复失败,报错:访问文件被拒。
【问题原因】:路径读写权限不足。
【解决方案】:检查路径是否具有700权限,没有的话修改权限为700。
l Q4:异位置恢复实例后启动失败抛出警告如下,不影响实例正常运行。
【问题原因】:数据库启动实例时会产生一部分日志,而这部分日志没有归档,导致启动实例时存在警告。
【解决方案】:不需要做处理,异位置恢复实例启动日志正常告警,数据是成功恢复的。
l Q5:恢复任务失败,报错访问目录被拒。
【问题原因】:恢复路径没有恢复所选的数据库用户属主权限。
【解决方案】:检查恢复路径的属主是否是恢复任务所选的数据库用户,若不是,授予数据库用户权限。
l Q6:恢复任务失败,报错删除恢复路径下的目录或文件失败。
【问题原因】:恢复时,后台操作用户为数据库用户(如postgres用户,不具备root权限),当存在一些无效链接或者文件时,无法成功删除恢复路径下的文件或者目录。
【解决方案】:手动清空要恢复至的目录下的文件或者子目录,再次发起恢复。
l Q7:恢复任务失败,报错恢复路径空间不足或者非默认表空间或者自建软链接目标路径不存在。
【问题原因】:
4. 恢复路径空间不足以恢复备份数据。
5. 非默认表空间或者自建的软链接目标路径不存在。
【解决方案】:
1. 加大恢复目标端恢复路径的空间,再次发起恢复。
2. 检查备份实例是否存在软链接文件,如果有,在恢复的目标端创建相同用户权限的路径用以恢复。
l Q8:未开启恢复后使数据库联机选项,恢复任务结束之后,手动启动实例时输出警告:Execute pg_wal_replay_resume() to continue。
【问题原因】:恢复时未开启使数据库联机,恢复之后未回滚日志。
【解决方案】:连接上数据库,手动执行select pg_wal_replay_resume();
l Q9:恢复之后连接数据库报错 :could not connect to server。
【问题原因】:实例相关的套接字文件与连接时使用的路径不一致。
【解决方案】:取消unix_socket_directories的注释,重启实例连接;
6 PostgreSQL 数据清理
6.1 数据清理
步骤 1 使用操作员或租户登录管理控制台,单击标签栏【定时数据保护】→【数据清理】→【清理备份数据】,在数据清理界面单击【新建】按钮,新建数据清理任务。
步骤 2 选择需要进行数据清理的任务,单击【下一步】。
步骤 3 请选择要清理的副本,默认清理全部副本。可以选择清理指定副本。
步骤 4 单击【下一步】,弹出任务确认界面,单击完成。
步骤 5 弹出数据清理信息确认界面,输入YES。此处区分大小写,必须填大写半角英文字。
步骤 6 数据清理完成之后,可用管理员用户登录查看OFS卷空间是否相应的发生变化。
l 数据清理需要一定的执行时间,请延迟一段时间查看准确数据;
l 在清理全部时间点的选项下,最新时间点可以被清理。选择清理部分时间点时,最新时间点置灰,不能清理;
l 正在执行备份或恢复的任务无法清理数据,此类任务在新建清理任务时,数据状态显示占用。
----结束
7 postgresqlEnv.Config 配置文件说明
客户端安装目录下../etc/ClientService/AggregateApp的postgresqlEnv.Config文件,为PostgreSQL可配置项,现加以说明,可按照需要进行配置。
ArchiveSize:判断归档日志剩余空间是否不足的最小值。当归档路径空间低于此值时,备份任务失败报错。修改此参数可修改备份任务判断归档日志路径空间是否不足的边界值,最小为2097152KiB(2GiB),最大值为9223372036854775807KiB,配置单位为KiB。
DoSwitchXlog:是否切换归档日志。默认为1,切换归档;配置0,代码不切换归档日志。
DonotCheckBackupType:不转完备选项。默认为0,会做日志连续性检查;配置为1,不进行检查,即使在归档日志不连续情况下,发起增备不会再转完全备份,可能存在数据丢失风险。
PostgreSQLControlProgramPath:PostgreSQL数据库安装路径,安装客户端时填写。
postgresPostgreSQLClusterDataPath:集群实例所在的数据路径,安装客户端时填写。
BackupThreadNum:多通道选项。当备份多通道数量需要配置为大于8时,可通过修改postgresqlEnv.config中的BackupThreadNum配置项配置备份任务多通道数量,格式参考BackupThreadNum=8。默认每个通道需要256MiB内存,可根据实际生产环境内存适当调整。
ValidatePage:与ValidateUncompressedPage配套使用。配置为0,则压缩与非压缩文件均不校验。当ValidatePage配置为1,ValidateUncompressedPage配置为0时,不校验非压缩文件,ValidateUncompressedPage配置为1,校验非压缩文件。
ValidateUncompressedPage:与ValidatePage配套使用。
CheckStatusTime:备份任务前置检查实例是否运行的检测时间。默认30s。
CheckStatusIntervals:备份任务前置检查实例是否运行的检测次数。默认30次,与checkStatusTime一起生效,共计检测时间为30*30s。
8 扩展成 Pgpool-II 集群
8.1 注意事项说明
本章节为补充说明,目的是将恢复出来的单机实例拓展成Pgpool-II集群。本章节只做简单步骤指导。
8.2 配置主从流复制环境
8.2.1 前期环境准备配置
步骤 1 查看恢复到的单机路径下的数据,这里以/res为例。若要将单机扩展成集群,请确保配置的从节点与主节点数据库版本一致。此章节步骤只做简单指导,实际各项参数请按需要进行配置。
步骤 2 在每个节点上配置/etc/hosts文件。按照实际需要修改命令中的IP与hostname。
echo -e "10.0.0.11 master\n10.0.0.12 slave " >> /etc/hosts
# 执行一次即可
步骤 3 配置免密登录。每个节点执行。
su - postgres
ssh-keygen -t rsa -f /home/postgres/.ssh/id_rsa -P ""
cd ~/.ssh/
ssh-copy-id postgres@master # 三台主机执行,master为主节点hostname
scp authorized_keys postgres@slave:~/.ssh # 只在master主机执行
----结束
8.2.2 PostgreSQL 流复制结构配置
步骤 1 主节点 (master)修改恢复之后的实例postgresql.conf文件配置。这里只对部分参数做解释,其余参数请按照实际需要进行配置。
设置max_wal_senders,在主节点(master)设置,是从机连接到master的并发连接数之和。按照实际需要设置即可。该值不能超过系统的最大连接数(max_connections),可以允许超过实际的流复制用户数。
wal_level = hot_standby #这里只是举例,请按照需要设置参数值
若需要开启归档,请创建新的归档路径,作为恢复实例的归档路径。开启归档,非必须操作。
archive_mode = on
archive_command = 'cp %p /resarch/%f' #/resarch为归档路径,按实际路径配置即可
删除或者重命名recovery.done文件。这个文件是做数据恢复时保存的文件。
步骤 2 配置pg_hba.conf文件。按实际需要添加流复制用户权限。
步骤 3 登录主库,在主库中创建流复制用户与pgpool用户。用户名与密码按照实际需要设置。your_password设置自己的密码。
CREATE USER stream_replication replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD 'your_password';
CREATE USER srcheck replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD 'your_password';
步骤 4 从节点(slave)执行流复制命令,将主库数据复制到备库。
pg_basebackup -D $PGDATA --format=p -h masterhostname/ip -p port -U stream_replication -W
其中,$PGDATA是从节点数据路径;masterhostname/ip填写主节点的ip或者hostname(前提是配置了hosts文件),port填写主节点实例端口,stream_replication是流复制用户。
步骤 5 从节点(slave)配置recovery.conf文件。若不存在,添加这个文件。内容为:
standby_mode='on'
primary_conninfo = 'host=master port=5432 user=stream_replication password=your_password'
restore_command = ''
recovery_target_timeline = 'latest'
其中,master可填写主节点ip或者hostname(前提是配置了hosts文件),5432为主库端口号,stream_replication为流复制用户,your_password'为流复制用户密码。
步骤 6 启动从节点实例,备节点启动后为只读模式。可通过如下命令查看主从环境同步状态。
select pg_is_in_recovery(); #主库上执行命令返回f,备库上返回t。
select txid_current_snapshot(); #执行命令查看快照,它返回主库记录点、备库记录点;主库每增加一条写入,记录点的值就会加1。
select * from pg_stat_replication; #令可以查看主备同步状态。字段state显示的同步状态有:startup(连接中)、catchup(同步中)、streaming(同步);字段sync_state显示的模式有:async(异步)、sync(同步)、potential。
或者通过查看postgres进程确定主从状态。
主节点进程含有wal sender process的进程。
从节点进程含有wal receiver process的进程。
----结束
8.3 配置 Pgpool-II
8.3.1 下载安装 Pgpool-II
步骤 1 按照需要的版本安装Pgpool-II,可采用yum直接安装,也可取压缩包解压安装。这里不做详细叙述,可参考网上教程安装。
以下采用yum安装方式,将pgpool安装在主节点(master):
yum install -y http://www.pgpool.net/yum/rpms/3.6/redhat/rhel-7-x86_64/pgpool-II-release-3.6-1.noarch.rpm
yum -y install pgpool-II-pg96 pgpool-II-pg96-debuginfo pgpool-II-pg96-devel pgpool-II-pg96-extensions
systemctl enable pgpool.service #开启自动启动
步骤 2 给相关路径添加数据库用户(如postgres)权限。
chown -R postgres.postgres /etc/pgpool-II
chown -R postgres.postgres /var/run/pgpool/
----结束
8.3.2 配置 Pgpool-II
步骤 1 配置pool_hba.conf
cp /etc/pgpool-II/pool_hba.conf{,.bak}
vi /etc/pgpool-II/pool_hba.conf
增加如下内容:
host all all 0.0.0.0/0 md5
步骤 2 配置pcp.conf。数据库中运行如下命令,然后添加至pcp.conf文件中。
postgres=# select rolname,rolpassword from pg_authid;
步骤 3 配置pgpool.conf。此配置文件按照自己的需要进行配置,这里只做简单步骤介绍。所填参数只是模拟环境的参数,请按需填写。
# CONNECTIONS
listen_addresses = '*'
port = 54321 #pgpool连接端口,确保端口没有被占用
socket_dir = '/var/run/pgpool'
pcp_listen_addresses = '*'
pcp_port = 9898
pcp_socket_dir = '/var/run/pgpool'
# - Backend Connection Settings -
backend_hostname0 = 'master' # master为主节点ip或者hostname
backend_port0 = 5432 #5432为主实例实际端口号
backend_weight0 = 1
backend_data_directory0 = '/res' #/res为主实例实际数据路径
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_hostname1 = 'slave' # slave为从节点ip或者hostname
backend_port1 = 5432 #5432为从实例实际端口号
backend_weight1 = 1
backend_data_directory1 = '/res' #/res为从实例实际数据路径
backend_flag1 = 'ALLOW_TO_FAILOVER'
# - Authentication -
enable_pool_hba = on
pool_passwd = 'pool_passwd'
# FILE LOCATIONS
pid_file_name = '/var/run/pgpool/pgpool.pid'
logdir = '/var/run/pgpool '
replication_mode = off
load_balance_mode = on
master_slave_mode = on
master_slave_sub_mode = 'stream'
sr_check_period = 5
sr_check_user = 'srcheck' #请根据实际用户填写
sr_check_password = '123456' #请根据实际密码填写
sr_check_database = 'postgres'
# HEALTH CHECK 健康检查
health_check_period = 10
health_check_timeout = 20
health_check_user = 'srcheck' #请根据实际用户填写
health_check_password = '123456' #请根据实际密码填写
health_check_database = 'postgres'
# FAILOVER AND FAILBACK
failover_command = '/pg/failover_stream.sh %H' #按照实际需要设置脚本,文中只做简单说明
步骤 4 设置failover_stream.sh脚本。
vim /pg/failover_stream.sh
chmod 777 /pg/failover_stream.sh
chmod u+s /sbin/ifconfig
chmod u+s /usr/sbin
pgpool -n -d -D > /var/run/pgpool/pgpool.log 2>&1 & ## 启动
pgpool -m fast stop ## 关闭
脚本内容:
#! /bin/sh
# Failover command for streaming replication.
# Arguments: $1: new master hostname.
new_master=$1 #设置成实际的备节点ip或者hostname
trigger_command="$PGHOME/bin/pg_ctl promote -D $PGDATA"
# Prompte standby database.
/usr/bin/ssh -T $new_master $trigger_command
exit 0;
其中$PGHOME为数据库安装路径,$PGDATA为数据路径,按实际需要填写即可。
步骤 5 在数据库用户(如postgres)用户下运行如下命令后可登录查看集群状态:
pgpool -n -d -D > /var/run/pgpool /pgpool.log 2>&1 &
步骤 6 查看集群状态。
[postgres@master]$ psql -p 54321 -h mater -U srcheck -d postgres
postgres=# show pool_nodes;
----结束
9 恢复成 Pacemaker 集群(DS_PPS)
9.1 注意事项说明
本章节为补充说明,目的是将恢复之后的实例拓展成DS_PPS集群。由于DS_PPS集群环境为特定提供镜像环境(科特迪瓦提供的特定镜像)搭建完成,因此恢复成DS_PPS集群也是恢复至原有镜像搭建环境。下文中脚本在镜像安装之后环境自带,不做补充说明。本章节只做简单步骤指导。
9.2 恢复成DS_PPS集群
9.2.1 前期环境准备配置
步骤 1 利用原生产镜像搭建一个节点(DS_PPS三号机)作为灾备节点,通过root用户,执行命令初始化一个空实例A:
/root/script/postgresql96-setup_initdb.sh
步骤 2 按照第五章的恢复步骤,恢复数据库数据至DS_PPS三号机空实例A的数据路径下,覆盖空实例A下的数据;编辑postgresql.auto.conf文件取消以下两个参数的注释,并重启实例。
步骤 3 按照原双机环境搭建两个节点:DS_PPS一号机与DS_PPS二号机,部署好Pacemaker集群;
步骤 4 执行pcs status查看主用数据库所在机器(DS_PPS一号机),在DS_PPS一号机上,通过root用户,执行命令初始化一个空实例:
/root/script/postgresql96-setup_initdb.sh
步骤 5 在DS_PPS二号机上,通过root用户,执行命令/root/script/ds_pps_addnode.sh
步骤 6 节点添加完毕后,请先等待5分钟,然后通过root用户,执行命令:pcs status
此时Pacemaker集群已在DS_PPS二号机上启动。
----结束
9.2.2 部署灾备数据库
步骤 1 通过root用户,执行命令:shutdown -h now,关闭DS_PPS数据库二号机。
步骤 2 在DS_PPS数据库一号机上,通过postgres用户,执行命令:/home/postgres/1.pg_create_standby_db.sh
步骤 3 在部署灾备库(DS_PPS数据库一号机)的交互界面中,输入主用数据库IP地址:DS_PPS数据库三号机的IP地址。
步骤 4 此时,DS_PPS数据库一号机, 已降级为DS_PPS数据库三号机的灾备库。
步骤 5 在DS_PPS数据库一号机上,通过postgres用户,执行命令:/home/postgres/2.pg_sync_status.sh,查看数据同步状态,确保已正常实时同步DS_PPS数据库三号机的数据。
步骤 6 在DS_PPS数据库一号机上,通过root用户,查看DS_PPS集群状态:
步骤 7 在DS_PPS数据库一号机上,通过root用户,查看PostgreSQL状态:
[root@svr-dsdb01 ~]# systemctl status postgresql-9.6.service
----结束
9.2.3 主备切换
步骤 1 在DS_PPS数据库一号机上,通过postgres用户,执行命令:/home/postgres/3.pg_failover.sh
步骤 2 此时,DS_PPS数据库一号机已经升级为主库;
步骤 3 将DS_PPS数据库二号机开机;
步骤 4 DS_PPS数据库二号机启动后,DS_PPS集群的主库会自动切换到DS_PPS数据库二号机。
步骤 5 在DS_PPS数据库二号机上,通过root用户,查看DS_PPS集群状态,集群恢复完成:
[root@svr-dsdb02 ~]# pcs status
----结束
- 点赞
- 收藏
- 关注作者
评论(0)