做网站 百度推广,深圳外贸招聘,给我免费看播放片,wordpress特定用户#x1f4e2;#x1f4e2;#x1f4e2;#x1f4e3;#x1f4e3;#x1f4e3; 哈喽#xff01;大家好#xff0c;我是【IT邦德】#xff0c;江湖人称jeames007#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】#xff01;#x1f61c; 哈喽大家好我是【IT邦德】江湖人称jeames00710余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】 中国DBA联盟(ACDU)成员目前服务于工业互联网 擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发备份恢复安装迁移性能优化、故障应急处理等。 ✨ 如果有对【数据库】感兴趣的【小可爱】欢迎关注【IT邦德】 ❤️❤️❤️感谢各位大可爱小可爱❤️❤️❤️ 文章目录 1.PG归档优势 2.在线日志(pg_wal) 3.如何开归档 4.清理归档✨ 4.1 手动清理✨ 4.2 归档策略脚本 5.总结 PostgreSQL归档具有安全、高效、可靠的归档能力并具有跨平台、语言兼容,和社区支持的优势。 1.PG归档优势 PostgreSQL归档实现了数据库抽离提供完善的安全性和保护性并可提供归档数据的只读性能有效地避免归档数据造成的服务器资源浪费。另外PostgreSQL归档具有在原始数据库系统的接口上的便捷性及快速性归档过程不会出现过多处理延迟在生产环境来说这个优势是十分可观的。 PostgreSQL归档完全兼容多种操作系统可以在Windows、Mac、Linux、iPhone等等操作系统上使用归档后的数据也可以被多种形式的软件读取使企业更为便利的在网络环境中使用数据 2.在线日志(pg_wal) 在开启归档日志前我们先聊聊pg_wal日志 事务日志是数据库的重要组成部分存储了数据库系统中所有更改和操作的历史以确保数据库不会因为故障(例如掉电或其他导致服务器崩溃的故障)而丢失数据。在PostgreSQL中事务日志文件称为Write Ahead Log以下简称WAL相当于oracle中的redo日志。 ##切日志的方式
postgres# select pg_switch_wal();pg_switch_wal
---------------0/15679F0
(1 row)##pg_wal日志的位置
jmedb# select * from pg_ls_waldir();
位置在cd $PGDATA/pg_walpostgres# select name,setting from pg_settings where name in (max_wal_size,min_wal_size);name | setting
-----------------------max_wal_size | 1024min_wal_size | 80如果超过了max_wal_size那么就会删除不需要的wal。如果开启了归档那么归档成功了才会被清除所以这里注意一下
如果你开启了归档但是归档命令是失效的
那么wal目录会一直增长
不会自动删除WAL会使得此目录被撑爆。postgres# show archive_timeout;
在PostgreSQL.conf 文件中的参数archive_timeout
如果设置archive_timeout60s
意思是wal日志60s切换一次同时会触发日志归档。
注尽量不要把archive_timeout设置的很小
如果很小会很消耗归档存储
因为强制归档的日志即使没有写满
也会是默认的16M假设wal日志写满的大小为16M3.如何开归档
## 查看是否有归档默认是关闭的
postgres# show archive_mode;archive_mode
--------------off
(1 row)–配置归档 在数据库服务器上创建该路径 mkdir -p /postgresql/archive chown -R postgres.postgres /postgresql/archive –添加开启归档参数 cat /postgresql/pgdata/postgresql.conf “EOF” wal_level‘replica’ archive_mode‘on’ archive_command‘test ! -f /postgresql/archive/%f cp %p /postgresql/archive/%f’ restore_command‘cp /postgresql/archive/%f %p’ max_wal_senders10 wal_keep_size128M wal_sender_timeout60s EOF –参数说明 wal_level: 默认是replica这种模式支持复制和wal归档同时支持备库只读查询。 minimal除了实例crash恢复需要的记录其他不记录 logic在replica的基础上增加一些信息以支持逻辑解码 archive_command 当启用archive_mode时通过设置archive_command将已完成的WAL段发送到归档存储。 除了offdisable还有两种模式on,always。 在正常操作期间两种模式之间没有区别但是当设置为always的情况下, WAL archiver在存档恢复或待机模式下也被启用。 在always模式下从归档还原或流式复制流的所有文件都将被归档再次。 archive_mode和archive_command是单独的变量 因此可以在不更改存档模式的情况下更改archive_command。 此参数只能在服务器启动时设置。 当wal_level设置为minimal时无法启用archive_mode。 max_wal_senders 指定wal日志发送进程的最大并发连接数 wal_sender_timeout 中断那些停止活动超过指定毫秒数的复制连接 –重启PG数据库 pg_ctl restart pg_ctl status --切换归档
postgres# select * from pg_stat_get_archiver();
postgres# select pg_switch_wal();
SELECT * FROM pg_stat_archiver;4.清理归档 如果开启了归档那么归档成功了才会被清除所以这里注意一下如果你开启了归档但是归档命令是失效的那么wal目录会一直增长不会自动删除WAL会使得此目录被撑爆。 ✨ 4.1 手动清理 1)读取控制文件找到能清理的xlog范围 pg_controldata $PGDATA 表示000000010000000000000009之前的文件可以删除 2)通过pg_archivecleanup清理 pg_archivecleanup -d $PGDATA/pg_wal 000000010000000000000009 ✨ 4.2 归档策略脚本
这次分享的策略是使用一个shell脚本来管理归档
在postgres家目录下分别创建binlog目录。bin目录存放此脚本log则记录执行日志
归档策略是 在/data下的 archivedir中按日期为名归档日志保留20天。20天前的自动删除archive_command参数的配置为
archive_command /bin/bash /home/postgres/bin/pg_archive.sh %p %f--脚本内容
#!/bin/bash
source /home/postgres/.bash_profileDATEdate %Y%m%d
DIR/data/archivedir/$DATE
BACK/data/archivedir/date -d -20 day %Y%m%d
if [ -d $BACK ]; thenrm -rf $BACKecho success rm $BACK /home/postgres/logs/pg_archive_logs
elseecho the old backup file not exists! /home/postgres/logs/pg_archive_logs
fi(test -d $DIR || mkdir -p $DIR) cp $1 $DIR/$25.总结 PostgreSQL归档具有安全、高效、可靠的归档能力并具有跨平台、语言兼容,和社区支持的优势无论是个人开发用户还是企业用户可以根据自身的需要合理利用PostgreSQL来优化业务逻辑提升数据备份安全性以及归档时间弹性。