关键字:wal日志归档 搭建从库 restore_command
|
master
|
194.1
|
|
slave
|
194.4
|
|
wal归档目录
|
/backup/pgsql/pg_arch/
|
|
xlog目录
|
/var/lib/pgsql/9.5/data/pg_xlog
|
我们知道pg的从库的搭建是通过基础备份和完整的wal日志完成的,那么如果主库的wal日志已经被归档或异常丢失,如果通过备份进行搭建从库呢?
我们可以通过restore_command命令把wal归档拷贝回xlog目录完成。具体的操作如下:
一、模拟xlog目录的wal日志丢失或已经被归档,0000000800000000000000D8该wal日志丢失
mater
wal归档目录
[root@db-hx-194-1 1941]# pwd
/backup/pgsql/pg_arch/1941
[root@db-hx-194-1 1941]# ll 0000000800000000000000D8
-rw------- 1 postgres postgres 16777216 Mar 14 12:18 0000000800000000000000D8
xlog目录
cd /var/lib/pgsql/9.5/data/pg_xlog
-rw------- 1 postgres postgres 16777216 Mar 14 12:09 0000000800000000000000D7
-rw------- 1 postgres postgres 316 Mar 14 12:09 0000000800000000000000D7.00000028.backup
-rw------- 1 postgres postgres 16777216 Mar 14 12:18 0000000800000000000000D8
drwx------ 2 postgres postgres 4096 Mar 14 12:18 archive_status
-rw------- 1 postgres postgres 16777216 Mar 14 12:18 0000000800000000000000D9
$ mv 0000000800000000000000D8 /tmp/
\
在从库的归档目录下准备好
slave
/bin/mount -t nfs 10.40.194.1:/backup /backup3
[root@oracle-hx-194-4 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_root-lv_root 51606140 3640460 45344240 8% /
tmpfs 49474596 12 49474584 1% /dev/shm
/dev/sdb1 5858145720 11671396 5553476080 1% /backup
/dev/sda1 99150 29857 64173 32% /boot
/dev/mapper/vg_root-lv_opt 178956928 139412400 39544528 78% /opt
/dev/mapper/vg_root-lv_tmp 51606140 209408 48775292 1% /tmp
/dev/fioa 1220670356 32992 1220637364 1% /database
10.40.194.1:/backup 5858146304 18405376 5546742784 1% /backup3
cp /backup3/pgsql/pg_arch/1941/* /backup/pgsql/pg_arch/1941/
[root@oracle-hx-194-4 pg_xlog]# cd /backup/pgsql/pg_arch/1941/
[root@oracle-hx-194-4 1941]# ll
total 131080
-rw------- 1 postgres postgres 16777216 Mar 14 13:40 0000000800000000000000D1
-rw------- 1 postgres postgres 16777216 Mar 14 13:40 0000000800000000000000D2
-rw------- 1 postgres postgres 16777216 Mar 14 13:40 0000000800000000000000D3
-rw------- 1 postgres postgres 16777216 Mar 14 13:40 0000000800000000000000D4
-rw------- 1 postgres postgres 16777216 Mar 14 13:40 0000000800000000000000D5
-rw------- 1 postgres postgres 316 Mar 14 13:40 0000000800000000000000D5.00000028.backup
-rw------- 1 postgres postgres 16777216 Mar 14 13:40 0000000800000000000000D6
-rw------- 1 postgres postgres 16777216 Mar 14 13:40 0000000800000000000000D7
-rw------- 1 postgres postgres 316 Mar 14 13:40 0000000800000000000000D7.00000028.backup
-rw------- 1 postgres postgres 16777216 Mar 14 13:40 0000000800000000000000D8
二、搭建基础备份
master
/opt/pgdata/digoal/1921/data04/pg93backup/20180313/data
scp -rp * root@10.40.194.4:/opt/tuniu/pgsql9.5/data
slave
chown -R postgres.postgres /opt/tuniu/pgsql9.5/data
/opt/tuniu/pgsql9.5/data/pg_xlog
rm -rf *
/opt/tuniu/pgsql9.5/data/pg_tblspc
mv 41002/* /opt/pgsql-9.5/tbs
rm -rf 41002
ln -s /opt/pgsql-9.5/tbs ./41002
mv 41037/* /opt/pgsql-9.5/bi_erp_itf_tbs
rm -rf 41037
ln -s /opt/pgsql-9.5/bi_erp_itf_tbs ./41037
三、恢复配置准备
[postgres@oracle-hx-194-4 data]$ cat recovery.conf
standby_mode = on
trigger_file = '/opt/tuniu/pgsql9.5/pg.trigger'
primary_conninfo = 'host=10.40.194.1 port=5432 user=rep password=rep'
restore_command = 'cp /backup/pgsql/pg_arch/1941/%f %p'
启动数据库,查看进程
[root@oracle-hx-194-4 pg_log]# ps aux|grep post
postgres 110488 0.0 0.3 10924720 306044 pts/4 S 15:28 0:00 /opt/tuniu/pgsql9.5/bin/postgres -D /opt/tuniu/pgsql9.5/data
postgres 110490 0.0 0.0 10924788 2924 ? Ss 15:28 0:00 postgres: startup process recovering 0000000800000000000000D9
postgres 110500 0.0 0.0 10929172 1944 ? Ss 15:28 0:00 postgres: wal receiver process streaming 0/D9019B80
查看日志
# more postgresql-2018-03-14_152851.log
LOG: database system was interrupted; last known up at 2018-03-13 17:19:01 CST
LOG: creating missing WAL directory "pg_xlog/archive_status"
LOG: entering standby mode
cp: cannot stat `/backup/pgsql/pg_arch/1941/00000008.history': No such file or directory
LOG: restored log file "0000000800000000000000D5" from archive
LOG: redo starts at 0/D5000028
LOG: consistent recovery state reached at 0/D50000F8
LOG: database system is ready to accept read only connections
LOG: restored log file "0000000800000000000000D6" from archive
LOG: restored log file "0000000800000000000000D7" from archive
LOG: restored log file "0000000800000000000000D8" from archive
cp: cannot stat `/backup/pgsql/pg_arch/1941/0000000800000000000000D9': No such file or directory
LOG: fetching timeline history file for timeline 8 from primary server
LOG: started streaming WAL from primary at 0/D9000000 on timeline 8
归档中找不到的WAL段可以在pg_xlog/中看到,这使得可以使用最近未归档的段。但是,在归档中可用的段将会被优先于pg_xlog/中的文件被使用。
通常,恢复将会处理完所有可用的WAL段,从而将数据库恢复到当前时间点(或者尽可能接近给定的可 用WAL段)。因此,一个正常的恢复将会以一个"文件未找到"消息结束,错误消息的准确文 本取决于你选择的restore_command。你也可能在恢复的开始看到一个针对名称类 似于00000001.history文件的错误消息。这也是正常的并且不表示在简单恢复情 况中的问题,对此的讨论见第 24.3.5 节。---节选自PG中文文档备份恢复章节
[root@oracle-hx-194-4 pg_xlog]# ll
total 81924
-rw------- 1 postgres postgres 16777216 Mar 14 15:28 0000000800000000000000D5
-rw------- 1 postgres postgres 16777216 Mar 14 15:28 0000000800000000000000D6
-rw------- 1 postgres postgres 16777216 Mar 14 15:28 0000000800000000000000D7
-rw------- 1 postgres postgres 16777216 Mar 14 15:28 0000000800000000000000D8
-rw------- 1 postgres postgres 16777216 Mar 14 15:39 0000000800000000000000D9
-rw------- 1 postgres postgres 304 Mar 14 15:28 00000008.history
drwx------ 2 postgres postgres 150 Mar 14 15:28 archive_status
- KingbaseES V8R6 集群环境wal日志清理
案例说明: 1.对于集群中的wal日志,除了需要在备库执行recovery外,在集群主备切换(switchover或failover)时,sys_rewind都要读取wal日志,将数据库恢复到一致性状 ...
- postgresql如何维护WAL日志/归档日志
WAL日志介绍 wal全称是write ahead log,是postgresql中的online redo log,是为了保证数据库中数据的一致性和事务的完整性.而在PostgreSQL 7中引入的 ...
- PgSQL · 追根究底 · WAL日志空间的意外增长
问题出现 我们在线上巡检中发现,一个实例的pg_xlog目录,增长到4G,很是疑惑.刚开始怀疑是日志归档过慢,日志堆积在pg_xlog目录下面,未被清除导致.于是检查归档目录下的文件,内容如下.但发现 ...
- PostgreSQL归档日志 手动触发归档 select pg_switch_xlog()
(转,做记录) 一 环境信息--1.1 PostgreSQL 版本 9.3.0 --1.2 postgresql.conf wal_level = hot_standbyarchive_mode = ...
- WAL日志文件名称格式详解
转自:http://blog.osdba.net/534.html WAL日志文件名称格式详解 PostgreSQL的WAL日志文件在pg_xlog目录下,一般情况下,每个文件为16M大小: osdb ...
- KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析
案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...
- Oracle归档日志与非归档日志的切换及路径设置
--==================== -- Oracle 归档日志 --==================== Oracle可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的 ...
- PostgreSQL日志号LSN和wal日志文件简记
弄明白日志号的原理之后,一段时间又有点忘记了,干脆整理一遍: (一)wal文件命名规则 1)在$PGDATA目录下面的pg_xlog目录中存放着xlog日志文件(10.1之后变为了pg_wal): t ...
- PostgreSQL WAL日志详解
wal日志即write ahead log预写式日志,简称wal日志.wal日志可以说是PostgreSQL中十分重要的部分,相当于oracle中的redo日志. 当数据库中数据发生变更时:chang ...
随机推荐
- WordUtil java导出word工具类
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedWriter ...
- Java经典编程题50道之四十四
求0~7所能组成的奇数个数.分析:组成1位数是4个,组成2位数是7*4个,组成3位数是7*8*4个,组成4位数是7*8*8*4个…… public class Example44 { publi ...
- 在Ubuntu上安装PHPStudy组件
phpStudy for Linux (lnmp+lamp一键安装包) phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS ...
- BloomFilter(布隆过滤器)
原文链接:http://blog.csdn.net/qq_38646470/article/details/79431659 1.概念: 如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保 ...
- Android动态加载技术(插件化技术)
No1: 插件化技术的好处: 1)减轻应用的内存和CPU占用 2)实现热插拔,即在不发布新版本的情况下更新某些模块 No2: 插件化方案必须要解决三个基础性问题:资源访问.Activity生命周期的管 ...
- HDU - 1175 bfs
思路:d[x][y][z]表示以z方向走到(x, y)的转弯次数. 如果用优先队列会超时,因为加入队列的节点太多,无用的节点不能及时出队,会造成MLE,用单调队列即可. AC代码 #include & ...
- nyoj 取石子(七) 环形博弈
手推前几个可以知道规律:n>2时是P态,n<=2时是N态. 注意:石子拿去后,剩下的石子是分散的. AC代码 #include <cstdio> #include <cm ...
- HDU - 1043 A* + 康托 [kuangbin带你飞]专题二
这题我第一次用的bfs + ELFhash,直接TLE,又换成bfs + 康托还是TLE,5000ms都过不了!!我一直调试,还是TLE,我才发觉应该是方法的问题. 今天早上起床怒学了一波A*算法,因 ...
- TCP/IP读书笔记(4) IPv4和IPv6 路由选择
TCP/IP读书笔记(4) IPv4和IPv6 路由选择 网络层是位于链路层之上,TCP/IP模型中网络层的核心协议是IP协议(Internet protocol). 目前主流的IP协议是IPv4(I ...
- [微信JSSDK] 解决SDK注入权限验证 安卓正常,IOS出现config fail
实测有效 解决微信游览器和企业微信游览器JSSDK注入权限验证 安卓正常,IOS出现config fail 一开始我们想到的是可能微信这边的Bug,但细想一下应该不是.因为可能涉及到了IOS的底层原理 ...