postgresql集群搭建笔记

1.启动pgpool

./configure --prefix=/opt/pgpool

pgpool    -f    /opt/pgpool/etc/pgpool.conf

2.连接pgpool

psql -h  (pgpool所在的ip地址)    -d    postgres   -p 9999   -U  postgres

3.流复制的主备切换的时候

pg_basebackup -F p -D $PGDATA -h 主节点IP -p 主节点端口 -U replica

主备切换的时候,最重要的就是不能进行sql操作,然后要把主库的recovery.done文件改成recovery.conf  ,然后被库上执行

pg_ctl   promote    -D   /usr/local/pgsql/data   ,启动以后。在去原来的主库上执行   pg_ctl   start   -D /url/local/pgsql/data启动,此时主备库切换完成。

 

4.配置两台数据库服务器之间的信任关系

su - postgres

ssh-keygen

ssh-copy-id pg93@备节点IP           主节点执行

ssh-copy-id pg93@主节点IP           备节点执行

 

6.配置pgpool-ii代理的归属权限

su - root

chown -R pg93:pg93 /opt/pgpool

mkdir /var/run/pgpool

cd /var/run/pgpool

vi pgpool.pid 添加内容123456

chown -R pg93:pg93 /var/run/pgpool
 

7.

通常会把访问pgpool的用户名和密码的MD5值记录在/opt/pgpool/etc/pool_passwd中

[postgres@localhost etc]$../bin/pg_md5 -m -p -u postgres pool_passwd

 

8.当pgpool两节点状态均显示standby时的解决方法

1)pgpool stop

2)pgpool -C -D

3)psql -p 9999

 

9.当主库挂掉以后,怎么切换备库为主库

1)首先这是主库挂掉了,但是被库还没有挂掉,此时首先修改主库的  data 目录下的recovery.done  为 recovery.conf.

2)然后再备库上执行  pg_ctl  promote   -D  /usr/local/pgsql/data     ,这条命令是将备库提升为主库

3)然后去到之前的主库上执行  pg_ctl  start   -D  /usr/local/pgsql/data  ,将之前的主库数据库启动起来,此时启动起来以后之前的主库就变成了备库。

4)此时如果通过pgpool-ll登录以后,还是之前的那种主备关系,但此时主备关系已经变化了,所以通过pgpool登录以后是不能进行插入操作,所以需要先将pgpool停掉,然后执行 pgpool  -C -D ,然后在通过 psql   -h 127.0.0.1   -p 9999 -U postgres,进入到数据库中以后执行  show   pool_nodes;查看主备关系。

 

5.postgresql.conf  开启日志要配置的配置项

1.logging_collector = on/off  ----  是否将日志重定向至文件中,默认是off(该配置修改后,需要重启DB服务)

2.log_directory = 'pg_log' ---- 日志文件目录,默认是PGDATA的相对路径,即{PGDATA}/pg_log,也可以改为绝对路径

3.log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' ---- 日志文件命名形式,使用默认即可

4. log_rotation_age = 1d ----  单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件

5. log_rotation_size = 10MB  ---- 单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件。

6.log_truncate_on_rotation = off ---- 当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。

7.log_lock_waits = off ---- 控制当一个会话等待时间超过deadlock_timeout而被锁时是否产生一个日志信息。在判断一个锁等待是否会影响性能时是有用的,缺省是off。

8.log_statement = 'none' # none, ddl, mod, all ---- 控制记录哪些SQL语句。none不记录,ddl记录所有数据定义命令,比如CREATE,ALTER,和DROP 语句。mod记录所有ddl语句,加上数据修改语句INSERT,UPDATE等,all记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句。

9.log_duration = off ---- 记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长。

10.log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements and their durations, > 0 logs only statements running at least this number of milliseconds

-1表示不可用,0将记录所有SQL语句和它们的耗时,>0只记录那些耗时超过(或等于)这个值(ms)的SQL语句。个 人更喜欢使用该配置来跟踪那些耗时较长,可能存在性能问题的SQL语句。虽然使用log_statement和log_duration也能够统计SQL 语句及耗时,但是SQL语句和耗时统计结果可能相差很多行,或在不同的文件中,但是log_min_duration_statement会将SQL语句 和耗时在同一行记录,更方便阅读。

11.log_connections = off ----是否记录连接日志

12.log_disconnections = off ---- 是否记录连接断开日志

13.log_line_prefix = '%m %p %u %d %r ' ---- 日志输出格式(%m,%p实际意义配置文件中有解释),可根据自己需要设置(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题)

14.log_timezone = 'Asia/Shanghai' ---- 日志时区,最好和服务器设置同一个时区,方便问题定位

服务器时区设置

[root@localhost ~]# cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

 

 

 

 

你可能感兴趣的:(postgresql集群搭建笔记)