资料下载网
首页 计算机 考试教辅
Postgresql架构性能验证详解 pdf电子书免费下载,百度云
首页 > 计算机 > 数据库技术 > Postgresql架构性能验证详解 pdf电子书免费下载,百度云

《Postgresql架构性能验证详解》pdf电子书免费下载


下载方式一:

百度网盘下载地址:https://pan.baidu.com/s/1FabLxmzhWSqijcBpAdTXyg
百度网盘密码:1111

下载方式二:

http://ziliaoshare.cn/Download/ae_123617_do_PostgresqlJGXNYZXJ.zip

 


Postgresql架构性能验证详解

作者:empty

出版社:empty

《Postgresql架构性能验证详解》介绍

第1章前言

由于“棱镜门”事件后,国家对于信息安全的需求再度攀升,并上升到国家战略高度。目前国内在线事务处理系统数据库大部分采用Oracle,机器采用小型机,存储采用统一存储,这些关键的设备技术都掌握在国外几个大公司中,无论基于安全以及成本考虑,国内的部分厂商都在考虑去”IOE”。国内最大的网络电商淘宝去IOE已经成功,这无疑更刺激了国内一些公司。作为后续技术储备,这里采用开源的postgresql数据库代替传统的oracle进行一些技术方案的验证,寻找后续去IOE过程的有效替代方案。

第2章背景

本次测试以营销真实数据为基础,从功能、性能、安全性、高可用性、可靠性、可维护性几个方面进行测试验证。

第3章Poc结论

§3.1高可用性

是通过复制技术,来实现双机或多机数据库之间的数据一致性,从而支持高可用性。当一台主机出现故障时,另一主机可立即接管,实现业务的不间断服务。

因此,从高可用性的角度讲,postgresql和其它别的数据库产品没有区别,能满足要求。

§3.2安全性

§3.3可靠性

§3.4性能

在小数据量,低并发量的场景下,Postgresql 数据库并不逊色于Oracle。在复杂SQL语句的处理方面,Postgresql确实没有Oracle 强大;统计函数在Postgresql里面效率要低一些。

§3.5功能

§3.6可维护性

第4章测试用例说明

§4.1高可用性测试

§4.1.1高可用性(流复制模式)

主要验证PG9.3+pgpool-II--之HA (Hot-Standby+Streaming Replication)

以下验证略去了pg9.3以及pgpool-II的安装以及初始配置。

§4.1.1.1结构

§4.1.1.2配置

上面结构不言自明,那接下来怎么配呢?先说机器配置,建议你都先创建好这些目录:

1./var/lib/pgsql/9.3/data6432 目录是master数据库的目录,端口为6432

2./var/lib/pgsql/9.3/data7432 目录是一台standy数据库的目录,端口为7432

3./var/lib/pgsql/9.3/data 目录是pgpool-II使用的SystemDB数据库的目录,端口为5432

4./etc/pgpool- II-3.2/ 是pgpool-II运行时放pid的目录

5./tmp/trigger 是主从切换时放trigger文件的目录

§4.1.1.3初始化数据库

1.initdb -D /var/lib/pgsql/9.3/data6432

2.initdb -D /var/lib/pgsql/9.3/data7432

3.打开postgresql.conf修改端口

§4.1.1.4安装函数

进入安装目录/usr/pgsql-9.3/share/extension

psql -f pgpool-recovery.sql postgres --port=6432

psql -f pgpool-regclass.sql postgres --port=6432

psql -f pgpool-recovery.sql postgres --port=7432

psql -f pgpool-regclass.sql postgres --port=7432

§4.1.1.5配置HA

首先是配置master和standby,二者的postgresql.conf一样一样滴:

wal_level = hot_standby

max_wal_senders = 1

hot_standby = on

二者pg_hba.conf也一样(若更复杂的请自行设置):

#host replication postgres ::1/128 trust

local replication postgres trust

在master的data目录下放上面介绍的文件basebackup.sh和这个让master远程启动standby的pgpool_remote_start.sh文件。

接着修改/usr/local/etc/pgpool.conf:

listen_addresses = '*'

backend_hostname0 = 'localhost'

backend_port0 = 6432

backend_weight0 = 1

backend_data_directory0 = '/var/lib/pgsql/9.3/data6432'

backend_flag0= 'ALLOW_TO_FAILOVER'

backend_hostname1 = 'localhost'

backend_port1 = 7432

backend_weight1 = 1

backend_data_directory1 = ' var/lib/pgsql/9.3/data7432a'

backend_flag1= 'ALLOW_TO_FAILOVER'

pid_file_name = '/var/run/pgpool/pgpool.pid'

logdir = '/var/run/postgres/pgpool'

master_slave_mode = on

master_slave_sub_mode = 'stream'

health_check_user = 'apache'

health_check_password = ''

failover_command = '/usr/local/etc/failover.sh %d %h %p %D %m %M %H %P'

failback_command = '/bin/rm -f /home/postgres/var/log/pgpool/trigger/'

recovery_user = 'postgres'

recovery_password = 'postgres'

recovery_1st_stage_command = 'basebackup.sh'

recovery_2nd_stage_command = ''

pgpool_remote_start.sh

#! /bin/sh

# Start PostgreSQL on the recovery target node

if [ $# -ne 2 ]

then

echo pgpool_remote_start remote_host remote_datadir

exit 1

fi

DEST=$1

DESTDIR=$2

PGCTL=/usr/pgsql-9.3/bin//pg_ctl

#$PGCTL -w -D $DESTDIR start 2>/dev/null 1>/dev/null /dev/null &

$PGCTL -w -D $DESTDIR start/null 1>/dev/null /dev/null &

$PGCTL -w -D $DESTDIR start

basebackup.sh

#/bin/sh -x

PRIMARY_PORT=6432

STANDBY_PORT=7432

PRIMARY=/var/lib/pgsql/9.3/data6432

STANDBY=/var/lib/pgsql/9.3/data7432

master_db_cluster=$1

recovery_node_host_name=$2

recovery_db_cluster=$3

if [ $master_db_cluster = $PRIMARY ];then

PORT=$PRIMARY_PORT

SOURCE_CLUSTER=$PRIMARY

DEST_CLUSTER=$STANDBY

else

PORT=$STANDBY_PORT

SOURCE_CLUSTER=$STANDBY

DEST_CLUSTER=$PRIMARY

fi

psql -p $PORT -c SELECT pg_start_backup('file_based_log_shipping', true) postgres

rsync -C -a -c --delete --exclude postgresql.conf --exclude postmaster.pid

--exclude postmaster.opts --exclude pg_log

--exclude recovery.conf --exclude recovery.done

--exclude pg_xlog

$SOURCE_CLUSTER/ $DEST_CLUSTER/

mkdir $DEST_CLUSTER/pg_xlog

chmod 700 $DEST_CLUSTER/pg_xlog

rm $DEST_CLUSTER/recovery.done

cat > $DEST_CLUSTER/recovery.conf EOF

standby_mode = on

primary_conninfo = 'port=$PORT user=postgres'

trigger_file = '/tmp/trigger/pgsql.recovery.trigger'

EOF

psql -p $PORT -c SELECT pg_stop_backup() postgres

failover.sh

#!/bin/sh

# Execute command by failover.

# special values: %d = node id

# %h = host name

# %p = port number

# %D = database cluster path

# %m = new master node id

# %M = old master node id

# %H = new master node host name

# %P = old primary node id

# %% = '%' character

failed_node_id=$1

failed_host_name=$2

failed_port=$3

failed_db_cluster=$4

new_master_id=$5

old_master_id=$6

new_master_host_name=$7

old_primary_node_id=$8

trigger=/tmp/trigger/pgsql.recovery.trigger

if [ $failed_node_id = $old_primary_node_id ];then# master failed

touch $trigger# let standby take over

fi

§4.1.1.6测试

依次启动master,pgpool,然后进入psql 进行测试,插入数据,分别查找没有问题。进入http://10.4.56.201/pgpoolAdmin/使用pgpool的管理页面。

通过pg_ctl stop -D ../data6432/ 模拟数据库当机,然 后点promote,成功了。

§4.1.1.7小结

由于用pgpool-II的Master-Slave模式来做HA的话,配置相对注意的事情比较多,应多次反复练习配置,理解其 内涵,以避免在各种情况下可能出现的问题。还有再配置过程中需要编写大量的操作系统的SHELL脚本,脚本是否能自动执行,是能成功切换的关键。

§4.1.2高可用性(Keepalived)

Postgresql提供了主从(Master/Slave)复制功能,可以配置为一主一从方式或一主多从方式。目前Postgresql自动故障切换功能通过Pgpool已经比较完善,不过实际运用时可以采用keepalived实现Postgresql的自动故障切换。

Postgresql的典型高可用配置如图所示:


《Postgresql架构性能验证详解》目录

计算机


python
AI人工智能
javascript
计算机网络/服务器
数据库技术
计算机F

考试教辅


考研考博
英语四六级

沪ICP备18046276号-5