
正文
postgresql设置双机热备的简单介绍
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
技术文档 - PostgreSQL 性能优化之 fsync 参数
目 录
总 结
PostgreSQL 通过调用系统 fsync() 或者其他使得事务内容写入到物理磁盘,这样可以保证操作系统或者数据库出现宕机后,仍然可以恢复到某一个一致性的状态。理论上讲 PostgreSQL 的 fsync 功能关闭,可以实现性能的提升,但是带来的影响就是需要承担数据的丢失,因为出现系统宕机或者数据库崩溃的时候有一些数据是没有落盘的。
本文将验证 fsync 参数的性能影响,以及参数关闭时数据库宕机后的影响。
数据量:1000W
fsync 参数:on
初始化表:user_info
pgbench 压测
pgbench 结果
pgbench 压测
pgbench 结果
数据量:1000W
fsync 参数:off
初始化表:user_info
pgbench 压测
pgbench 结果
pgbench 压测
pgbench 结果
通过对比发现,将 fsync 改为 off,对于读 TPS,参数 fsync 的影响不大,对于写 TPS,性能有一定提升。
现在验证参数关闭时数据库宕机后的影响
首先,使用将数据库性能跑起来
然后,模拟服务器断电
之后,启动数据库
提示信息:比致命错误还过分的错误。
结果:数据库无法启动,原因就是因为无法找到一个有效的 checkpoint 记录,这就是因为 fsync 设置为 off,由于数据库异常宕机导致。可以通过使用 pg_resetxlog 恢复数据库,但是会造成部分数据无法找回,数据丢失;也可以通过备份恢复,同样也会丢失部分数据。
fsync 参数对于读 TPS 的性能影响不大,对于写 TPS 的性能有一些影响,设置为 off,写 TPS 性能有一定提升,但是存在数据库宕机后无法正常启动,即使恢复后启动数据库,也会有数据丢失的很大风险。因此生产环境非必要时,不要将此参数设置为 off,还是使用默认的 on 比较稳妥。
相关问答
Q1: 请教Postgresql是否可以实现双机热备,自动切换
可以,用集群软件,加集群逻辑。老套数据库公用相同数据文件。
Q2: centos6.3装配postgresq 3种方式怎么解决
一、简介
PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。
二、系统环境
系统平台:CentOS release 6.3 (Final)
PostgreSQL 版本:PostgreSQL 9.2.4
防火墙已关闭/iptables: Firewall is not running.
SELINUX=disabled
三、安装方式
A. RPM包安装
B. yum 安装
C. 源码包安装
四、安装过程
A. RPM包安装
1. 检查PostgreSQL 是否已经安装
# rpm -qa|grep postgres
若已经安装,则使用rpm -e 命令卸载。
2. 下载RPM包
#wget
#wget
#wget
#wget
3. 安装PostgreSQL,注意安装顺序
# rpm -ivh postgresql92-libs-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-server-9.2.4-1PGDG.rhel6.i686.rpm
# rpm -ivh postgresql92-contrib-9.2.4-1PGDG.rhel6.i686.rpm
4. 初始化PostgreSQL 数据库
PostgreSQL 服务初次启动的时候会提示初始化。
初始化数据库
# service postgresql-9.2 initdb
5. 启动服务
# service postgresql-9.2 start
6. 把PostgreSQL 服务加入到启动列表
# chkconfig postgresql-9.2 on
# chkconfig --list|grep postgres
7. 修改PostgreSQL 数据库用户postgres的密码(注意不是linux系统帐号)
PostgreSQL 数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,我们需要修改为指定的密码,这里设定为’postgres’。
# su - postgres
$ psql
# ALTER USER postgres WITH PASSWORD 'postgres';
# select * from pg_shadow ;
8. 测试数据库
8.1 创建测试数据库
# create database david;
8.2 切换到david 数据库
# \c david
8.3 创建测试表
david=# create table test (id integer, name text);
8.4 插入测试数据
david=# insert into test values (1,'david');
INSERT 0 1
david=#
8.5 选择数据
david=# select * from test ;
id | name
----+-------
1 | david
(1 row)
david=#
测试完成,RPM包安装成功。
9. 修改linux 系统用户postgres 的密码
PostgreSQL 数据库默认会创建一个linux 系统用户postgres,通过passwd 命令设置系统用户的密码为post123。
# passwd postgres
10. 修改PostgresSQL 数据库配置实现远程访问
10.1 修改postgresql.conf 文件
# vi /var/lib/pgsql/9.2/data/postgresql.conf
如果想让PostgreSQL 监听整个网络的话,将listen_addresses 前的#去掉,并将 listen_addresses = 'localhost' 改成 listen_addresses = '*'
10.2 修改客户端认证配置文件pg_hba.conf
将需要远程访问数据库的IP地址或地址段加入该文件。
# vi /var/lib/pgsql/9.2/data/pg_hba.conf
11. 重启服务以使设置生效
# service postgresql-9.2 restart
12. 远程测试连接
连接成功。
B. yum 安装
1. 将刚才安装的PostgreSQL 卸载
//停止PostgreSQL服务
# /etc/init.d/postgresql-9.2 stop
//查看已安装的包
# rpm -qa|grep postgres
//卸载
# rpm -e postgresql92-server-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-contrib-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-9.2.4-1PGDG.rhel6.i686
# rpm -e postgresql92-libs-9.2.4-1PGDG.rhel6.i686
2. yum 安装
如果是默认yum 安装的话,会安装较低版本的PostgreSQL 8.4,这不符合我们的要求。
我们使用PostgreSQL Yum Repository 来安装最新版本的PostgreSQL。
2.1 安装PostgreSQL yum repository
# rpm -i
2.2 安装新版本PostgreSQL
# yum install postgresql92-server postgresql92-contrib
2.3 查看安装
3. 初始化并启动数据库
4. 测试
其他步骤如A方式。
C. 源码包安装
1. 下载PostgreSQL 源码包
# wget
2. 解压源码包
# tar xjf postgresql-9.2.4.tar.bz2
3. 进入解压后的目录
# cd postgresql-9.2.4
4. 查看INSTALL 文件
INSTALL 文件中Short Version 部分解释了如何安装PostgreSQL 的命令,Requirements 部分描述了安装PostgreSQL 所依赖的lib,比较长,先configure 试一下,如果出现error,那么需要检查是否满足了Requirements 的要求。
5. 开始编译安装PostgreSQL 数据库。
[root@TS-DEV postgresql-9.2.4]# ./configure
configure 成功,无错误。
6. 执行gmake
[root@TS-DEV postgresql-9.2.4]# gmake
gmake 成功,Ready to install.
7. 执行gmake install
[root@TS-DEV postgresql-9.2.4]# gmake install
gmake install 成功,到这一步,PostgreSQL 源码编译安装完成,下面开始配置PostgreSQL.
8. 设置环境变量
# vi .bash_profile
把 PATH=$PATH:$HOME/bin
改成 PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
保存退出。
让环境变量生效:
# source .bash_profile
9. 添加用户postgres
# adduser postgres
* 更改用户目录(可选操作)
# vi /etc/passwd
把 postgres:x:528:528::/home/postgres:/bin/bash
改成 postgres:x:528:528::/usr/local/pgsql:/bin/bash
将.bash_profile 移动到新的用户目录并修改权限
# cp /home/postgres/.bash_profile /usr/local/pgsql/
# chown postgres.postgres .bash_profile
删除用户目录:
[root@TS-DEV home]# rm -rf postgres/
10. 初始化数据库
10.1 新建数据目录
# mkdir /usr/local/pgsql/data
10.2 更改权限
# chown postgres /usr/local/pgsql/data
10.3 切换到postgres 用户
# su - postgres
10.4 init db
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
到这里数据的初始化就完成了。
11. 系统服务
11.1 回到root 用户
$ exit
11.2 复制安装目录下的linux文件到/etc/init.d/
进入postgresql 的安装目录(即刚刚使用tar命令解压的目录)
# cd postgresql-9.2.4
# cp contrib/start-scripts/linux /etc/init.d/postgresql
11.3 添加执行权限
# chmod +x /etc/init.d/postgresql
11.4 启动数据库
11.5 让数据库开机启动
# chkconfig --add postgresql
# chkconfig postgresql on
11.6 创建数据库操作的历史记录文件
12. 测试使用
# su - postgres
$ createdb test
$ psql test
test=# create table test(id int);
源码编译安装成功。
Q3: 如何设置PostgreSQL允许被远程访问
postgresql默认情况下,远程访问不能成功,如果需要允许远程访问,需要修改两个配置文件,说明如下:
1.postgresql.conf
将该文件中的listen_addresses项值设定为“*”,在9.0 Windows版中,该项配置已经是“*”无需修改。
2.pg_hba.conf
在该配置文件的host all all 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置
host all all 0.0.0.0/0 md5
如果不希望允许所有IP远程访问,则可以将上述配置项中的0.0.0.0设定为特定的IP值。
Q4: rose ha 可以基于linux对postgres进行双机热备吗
你好,wp酷七知道团队为你解答:我说下安装装双机热备软件RoseMirrorHa的过程中遇到的问题及解决方案,1.安装双机热备RoseMirrorHa因为核心不匹配不成功解决方案:修改MirrorHa的配置文件,在MirrorHa的安装目录下/drv的目录下有一个*.ko的文件,把这个文件的名字中的内核名字改成AXS3,然后重新启动mirroha服务就可以了,命令如下:mirrorhastart。2.安装双机热备RoseMirrorHa时序列号的问题解决方案:首先要注意的是申请序列号一定要安装完RoseMirrorHa之后,由软件产生两个hostid号,然后提交给rose公司才可以3.安装双机热备RoseMirrorHa时oracle绑定数据解决方案:双机热备软件RoseMirrorHa提供了oracle数据库的服务,在设置oracle需要绑定哪些数据源时,一定要仔细斟酌,大概包括密码文件、控制文件、数据文件等,如果不确定的话可以联系rose公司确定需要绑定哪些文件,切记!绑定之前一定要先把这些文件做一下备份。希望可以帮到你
Q5: postgresql 高可用集群搭建资料
多种方案,含zookeeper方案 : PostgreSQL 流行 HA 方案
有实例 有讲解! postgresql 高可用集群搭建 : PostgreSQL_HA_with_primary_standby_2vip
pgpool+Keepalived 实现postgresql 高可用集群: PostgreSQL+pgpooll+Keepalived双机HA方案
利用pgpool 实现postgresql 高可用集群 : POSTGRESQL主备部署模式
看起来不错 : 双机热备技术:使用pgpool搭建高可用PostgreSQL HA的步骤
PostgreSQL 流复制 + Pgpool-II 实现高可用 HA
推荐使用pgpool原因: PostgreSQL的集群技术比较
很好的要看corosync+pacemaker: 基于Pacemaker的PostgreSQL一主多从读负载均衡集群搭
可能复杂 : Pacemaker+corosync搭建PostgreSQL共享存储HA
corosync+pacemaker 有实例 : postgresql双机热备、高可用方案(采用pacemaker+corosync实现)
需求讲得好 : PostgresSQL HA高可用架构实战
PostgresSQL HA高可用架构实战
流复制HA(pgpool) :较简单、易实现
共享存储HA(corosync+pacemaker):功能完备、学习成本高、复杂
postgresql设置双机热备的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、postgresql设置双机热备的信息别忘了在本站进行查找喔。





