修改有风险,谨慎行事。
PostgreSQL11以前改变wal-segsize(WAL段大小)必须在编译时通过–with-wal-segsize参数确定,编译后不可更改.
#PostgreSQL11之前的版本 #数据块按8K划分(--with-blocksize,单位为K,默认为8K) #WAL块尺寸按8k划分(--with-wal-blocksize,单位为K,默认为8K) #数据文件按1G一个分解(--with-segsize,单位为G,默认为1G) #WAL段尺寸按16MB划分(--with-wal-segsize,单位为K,默认为16MB) ./configure --with-blocksize=8--with-wal-blocksize=8--with-segsize=1 --with-wal-segsize=16
PostgreSQL11取消了编译参数–with-wal-segsize.使用pg_resetwal(–wal-segsize)更改WAL段大小.
#PostgreSQL11先编译程序 #数据块按8K划分(--with-blocksize,单位为K,默认为8K) #WAL块尺寸按8k划分(--with-wal-blocksize,单位为K,默认为8K) #数据文件按1G一个分解(--with-segsize,单位为G,默认为1G) ./configure --with-blocksize=8--with-wal-blocksize=8--with-segsize=1
编译完成并初始化后使用pg_resetwal修改wal-segsize
#首先停止PostgreSQL服务 pg_ctl -D /data/pgdata stop -m fast #修改wal-segsize段大小,默认单位是MB,值必须是2的幂并且在1到1024MB之间 pg_resetwal --wal-segsize=32 /data/pgdata;
查看
show block_size; show wal_block_size; show segment_size; show wal_segment_size; ls /data/pgdata/pg_wal -lh
补充:PostgreSQL 11 新特性解读 : Initdb/Pg_resetwal支持修改WAL文件大小
PostgreSQL 11 版本的一个重要调整是支持 initdb 和 pg_resetwal 修改 WAL 文件大小,而 11 版本之前只能在编译安装 PostgreSQL 时设置 WAL 文件大小。这一特性能够方便 WAL 文件的管理。
Release 的说明
Allow the WAL file size to be set via initdb (Beena Emerson)
Previously the 16MB default could only be changed at compile time.
下面分别演示通过 initdb 和 pg_resetwal 修改 WAL 文件大小。
使用 initdb 调整WAL文件大小
initdb 命令关于修改 WAL 文件大小选项,如下:
--wal-segsize=size
Set the WAL segment size, in megabytes. This is the size of each individual file in the WAL log. The default size is 16 megabytes. The value must be a power of 2 between 1 and 1024 (megabytes). This option can only be set during initialization, and cannot be changed later.
It may be useful to adjust this size to control the granularity of WAL log shipping or archiving. Also, in databases with a high volume of WAL, the sheer number of WAL files per directory can become a performance and management problem. Increasing the WAL file size will reduce the number of WAL files.
WAL 日志文件大小默认为16MB,该值必须是1到1024之间的2的次方,增大WAL文件大小能够减少WAL日志文件的产生。
初始化一个新的 PostgreSQL 数据库实例,指定WAL文件大小64MB,如下:
[pg11@pghost2 ~]$ initdb -E UTF8 --locale=C --wal-segsize=64 -D /home/pg11/data01 -U postgres -W The files belonging to this database system will be owned by user "pg11". This user must also own the server process. The database cluster will be initialized with locale "C". The default text search configuration will be set to "english". Data page checksums are disabled. Enter new superuser password: Enter it again: creating directory /home/pg11/data01 ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting dynamic shared memory implementation ... posix creating configuration files ... ok running bootstrap script ... ok performing post-bootstrap initialization ... ok syncing data to disk ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using: pg_ctl -D /home/pg11/data01 -l logfile start
修改 postgresql.conf 相关配置,之后启动数据库。
[pg11@pghost2 data01]$ pg_ctl start -D /home/pg11/data01 waiting for server to start....2018-10-16 15:58:16.714 CST [10583] LOG: listening on IPv6 address "::1", port 1950 2018-10-16 15:58:16.714 CST [10583] LOG: listening on IPv4 address "127.0.0.1", port 1950 2018-10-16 15:58:16.731 CST [10583] LOG: listening on Unix socket "/tmp/.s.PGSQL.1950" 2018-10-16 15:58:16.762 CST [10584] LOG: database system was shut down at 2018-10-16 15:56:46 CST 2018-10-16 15:58:16.782 CST [10583] LOG: database system is ready to accept connections done server started
验证WAL文件大小,如下:
[pg11@pghost2 ~]$ ll /home/pg11/data01/pg_wal total 65M -rw------- 1 pg11 pg11 64M Oct 16 16:03 000000010000000000000001 drwx------ 2 pg11 pg11 4.0K Oct 16 15:56 archive_status
可见WAL文件大小为64MB。
使用 pg_resetwal 调整WAL文件大小
pg_resetwal 用来重置WAL日志和一些控制信息,常用于数据库恢复场景,不到万不得已不轻易使用,以下演示使用pg_resetwal命令调整WAL日志文件大小,仅供测试参考,生产环境慎用。
pg_resetwal 命令关于调整WAL文件大小的选项,如下:
--wal-segsize=wal_segment_size
Set the new WAL segment size, in megabytes. The value must be set to a power of 2 between 1 and 1024 (megabytes). See the same option of initdb for more information.
以下演示在已有PostgreSQL实例基础上调整WAL日志文件大小。
查看当前数据库的 pg_wal 目录,如下:
[pg11@pghost2 pg_wal]$ ll /database/pg11/pg_root/pg_wal/ total 2.3G -rw------- 1 pg11 pg11 16M Sep 30 14:45 000000010000001700000013 -rw------- 1 pg11 pg11 16M Sep 30 14:45 000000010000001700000014 -rw------- 1 pg11 pg11 16M Sep 30 14:45 000000010000001700000015 -rw------- 1 pg11 pg11 16M Sep 30 14:45 000000010000001700000016 -rw------- 1 pg11 pg11 16M Sep 30 14:45 000000010000001700000017 -rw------- 1 pg11 pg11 16M Sep 30 14:45 000000010000001700000018 -rw------- 1 pg11 pg11 16M Sep 30 14:45 000000010000001700000019 -rw------- 1 pg11 pg11 16M Sep 30 14:45 00000001000000170000001A -rw------- 1 pg11 pg11 16M Sep 30 14:45 00000001000000170000001B ... 省略 drwx------ 2 pg11 pg11 16K Oct 16 08:38 archive_status
pg_wal 目录中已有大量WAL日志文件,WAL文件大小为16MB,计划将WAL日志文件调整成64MB。
pg_resetwal 操作时需要关闭数据库,如下。
[pg11@pghost2 ~]$ pg_ctl stop -m fast waiting for server to shut down.... done server stopped pg_resetwal 命令调整WAL日志文件大小为 64MB: [pg11@pghost2 ~]$ pg_resetwal --wal-segsize=64 -D /database/pg11/pg_root Write-ahead log reset
验证WAL文件大小,如下:
[pg11@pghost2 ~]$ ll /database/pg11/pg_root/pg_wal/ total 65M -rw------- 1 pg11 pg11 64M Oct 16 08:55 000000010000001700000029 drwx------ 2 pg11 pg11 16K Oct 16 08:55 archive_status
发现 pg_wal 目录中原有的WAL日志被清理,同时生成了大小为64MB新的WAL文件。
启动数据库提示 min_wal_size 参数至少需设置成 wal_segment_size 大小为 2 倍。
[pg11@pghost2 ~]$ pg_ctl start waiting for server to start....2018-10-16 09:01:26.096 CST [24318] FATAL: "min_wal_size" must be at least twice "wal_segment_size". 2018-10-16 09:01:26.096 CST [24318] LOG: database system is shut down stopped waiting pg_ctl: could not start server Examine the log output.
根据提示调整 postgresql.conf,设置如下:
min_wal_size = 128MB
启动数据库正常,如下:
[pg11@pghost2 ~]$ pg_ctl start waiting for server to start....2018-10-16 09:02:45.680 CST [24614] LOG: listening on IPv4 address "0.0.0.0", port 1930 2018-10-16 09:02:45.680 CST [24614] LOG: listening on IPv6 address "::", port 1930 2018-10-16 09:02:45.687 CST [24614] LOG: listening on Unix socket "/tmp/.s.PGSQL.1930" 2018-10-16 09:02:45.715 CST [24614] LOG: redirecting log output to logging collector process 2018-10-16 09:02:45.715 CST [24614] HINT: Future log output will appear in directory "log".
总结
以上演示了 11 版本通过 initdb 和 pg_resetwal 调整WAL文件大小。
pg_resetwal 会清除pg_wal目录的WAL文件,本博客的测试样例仅供参考,生产环境使用需慎重。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]