一.组成部分

  • 1.walsender进程是用来发送WAL日志记录的
  • 2.walreceiver进程是用来接收WAL日志记录的
  • 3.startup进程是用来apply日志的

二.主库配置

  • 1.授权账号,用于远程连接复制,类似mysql的复制账号
CREATE ROLE replica login replication encrypted password 'replica';
  • 2.pg_hba.conf新增策略
host    replication     replica         172.16.10.0/24         md5
  • 3.postgresql修改主配置文件
wal_level = hot_standby   # 备用服务器上增加了运行只读查询所需的信息
max_wal_senders = 5 # 这个设置了可以最多有几个流复制连接,即几个slave
wal_keep_segments = 128 # 设置流复制保留的最多的xlog数目,默认每个16M,总大小128*16
wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间
  • 4.启动primary主库
pg_ctl start -D $PGDATA
pg_ctl start -D /data/pgsql_data
/etc/init.d/pgsqld start

三.slave配置

  • 1.复制主库的pgsql_data目录
pg_basebackup -D /data/pgsql_data -Fp -Xs -v -P -h 172.16.10.100 -U repl -p 5432
pg_basebackup -F p --progress -D /data/pgsql_data -h 172.16.10.100 -p 5432 -U repl --password
# 复制到本地的 /data/pgsql_data 目录
  • 2.修改slave的postgresql.conf
max_connections = 200      # 比主库稍大即可
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on
  • 3.在$PGDATA目录下创建recovery.conf文件
standby_mode = on  # 指定为从库
primary_conninfo = 'host=172.16.10.100 port=5432 user=repl password=repl' # 对应的主库信息
recovery_target_timeline = 'latest' # 这个说明这个流复制同步到最新的数据
  • 4.启动slave
pg_ctl start -D $PGDATA
pg_ctl start -D /data/pgsql_data
/etc/init.d/pgsqld start
  • 5.在主库上查询同步状态
postgres=# \x
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 1664
usesysid | 16426
usename | repl
application_name | walreceiver
client_addr | 172.16.10.142
client_hostname |
client_port | 48645
backend_start | 2018-11-27 13:22:53.316104+08
backend_xmin | 1854
state | streaming
sent_location | 0/12000138
write_location | 0/12000138
flush_location | 0/12000138
replay_location | 0/12000138
sync_priority | 0
sync_state | async
# 有三个值
async: 异步
sync: 同步
potential: 虽然现在是异步模式,但是有可能升级到同步模式 sent_location--发送wal的位置
write_location--备库接收到的wal的位置
flush_location—备库写wal日志到磁盘的位置
replay_location—备库应用日志的位置 查看备库落后主库多少字节
select pg_xlog_location_diff(pg_current_xlog_location(),replay_location)/1024/1024 as MB from pg_stat_replication;
select pg_xlog_location_diff(pg_current_xlog_location(),replay_location)/1024/1024/1024 as GB from pg_stat_replication;
  • 6.slave的log
[root@mycat01 pg_log]# cat postgresql-2018-11-27_132255.csv
2018-11-27 13:22:55.938 CST,,,29116,,5bfcd4af.71bc,1,,2018-11-27 13:22:55 CST,,0,LOG,00000,"ending log output to stderr",,"Future log output will go to log destination ""csvlog"".",,,,,,,""
2018-11-27 13:22:55.953 CST,,,29118,,5bfcd4af.71be,1,,2018-11-27 13:22:55 CST,,0,LOG,00000,"database system was interrupted; last known up at 2018-11-27 13:17:47 CST",,,,,,,,,""
2018-11-27 13:22:55.965 CST,,,29118,,5bfcd4af.71be,2,,2018-11-27 13:22:55 CST,,0,LOG,00000,"entering standby mode",,,,,,,,,""
2018-11-27 13:22:56.014 CST,,,29119,,5bfcd4b0.71bf,1,,2018-11-27 13:22:56 CST,,0,LOG,00000,"started streaming WAL from primary at 0/11000000 on timeline 1",,,,,,,,,""
2018-11-27 13:22:56.046 CST,,,29118,,5bfcd4af.71be,3,,2018-11-27 13:22:55 CST,1/0,0,LOG,00000,"redo starts at 0/11000028",,,,,,,,,""
2018-11-27 13:22:56.047 CST,,,29118,,5bfcd4af.71be,4,,2018-11-27 13:22:55 CST,1/0,0,LOG,00000,"consistent recovery state reached at 0/11000128",,,,,,,,,""
2018-11-27 13:22:56.047 CST,,,29116,,5bfcd4af.71bc,2,,2018-11-27 13:22:55 CST,,0,LOG,00000,"database system is ready to accept read only connections",,,,,,,,,""
  • 7.进程
[root@mysql56 pgsql_data]# ps -ef |grep postgres
postgres 1621 1 0 13:14 ? 00:00:00 /usr/local/pgsql/bin/postmaster -D /data/pgsql_data
postgres 1622 1621 0 13:14 ? 00:00:00 postgres: logger process
postgres 1624 1621 0 13:14 ? 00:00:00 postgres: checkpointer process
postgres 1625 1621 0 13:14 ? 00:00:00 postgres: writer process
postgres 1626 1621 0 13:14 ? 00:00:00 postgres: wal writer process
postgres 1627 1621 0 13:14 ? 00:00:00 postgres: autovacuum launcher process
postgres 1628 1621 0 13:14 ? 00:00:00 postgres: archiver process last was 000000010000000000000011.00000028.backup
postgres 1629 1621 0 13:14 ? 00:00:00 postgres: stats collector process
postgres 1664 1621 0 13:22 ? 00:00:00 postgres: wal sender process repl 172.16.10.142(48645) streaming 0/12000570 #用于发送log
postgres 1669 1621 0 13:23 ? 00:00:00 postgres: postgres postgres [local] idle postgres 29116 1 0 13:22 pts/6 00:00:00 /usr/local/postgresql-9.4.7/bin/postgres -D /data/pgsql_data
postgres 29117 29116 0 13:22 ? 00:00:00 postgres: logger process
postgres 29118 29116 0 13:22 ? 00:00:00 postgres: startup process recovering 000000010000000000000012
postgres 29119 29116 0 13:22 ? 00:00:00 postgres: wal receiver process streaming 0/12000570
postgres 29120 29116 0 13:22 ? 00:00:00 postgres: checkpointer process
postgres 29121 29116 0 13:22 ? 00:00:00 postgres: writer process
postgres 29122 29116 0 13:22 ? 00:00:00 postgres: stats collector process

流复制-pg_basebackup (没有自定义表空间)的更多相关文章

  1. 流复制-pg_basebackup (有自定义表空间)

    一.组成部分 1.walsender进程是用来发送WAL日志记录的 2.walreceiver进程是用来接收WAL日志记录的 3.startup进程是用来apply日志的 二.主库配置 1.授权账号, ...

  2. 流复制-pg_start_backup(带自定义表空间)

    一.准备slave库 archive_mode = on ---开启归档模式 archive_command = 'test ! -f /mysqldata/pg/archive_active/%f ...

  3. 【HICP Gauss】数据库 数据库管理(连接方式 会话模式 存储表空间)-6

    数据库连接方式:驱动连接和客户端连接 驱动连接 : JDBC GSC ODBC 客户端连接 zsql工具 zsql / as sysdba -q #管理员身份登陆 zsql omm/ - #普通身份登 ...

  4. 【Oracle 】tablespace 表空间创建和管理

    1.表空间的概述 1. 表空间是数据库的逻辑组成部分. 2. 从物理上讲,数据库数据存放在数据文件中: 3. 从逻辑上讲,数据库是存放在表空间中,表空间由一个或者多个数据文件组成. 2.oracle的 ...

  5. 9. InnoDB通用表空间

    9. InnoDB通用表空间 通用表空间是InnoDB 使用CREATE TABLESPACE语法创建的共享表空间.本节中的以下主题描述了常规表空间功能和功能: 通用表空间功能 创建通用表空间 将表添 ...

  6. KingbaseES V8R3集群运维案例之---用户自定义表空间管理

    ​案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...

  7. 6. 将单独表空间(File-Per-Table Tablespaces)复制到另一个实例

    6. 将单独表空间复制到另一个实例 本节介绍如何将单独表空间从一个MySQL实例复制 到另一个MySQL实例,也称为可传输表空间功能. 将InnoDB单独表空间复制到其他实例的原因有很多: - 在不对 ...

  8. 数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

    热门资讯 1.Stackoverflow 2020年度报告出炉!开发者最喜爱的数据库是什么?[摘要]2020年2月,近6.5万名开发者参与了 Stackoverflow 的 2020 年度调查,这份报 ...

  9. 表迁移工具的选型-复制ibd的方法-传输表空间

    1.1. 场景 有的时候开放人员自己的库需要帮忙导一些数据,但是表的数据量又很大.虽然说使用mysqldump或mysqlpump也可以导.但是这耗时需要比较久. 记得之前建议开放人员可以直接使用na ...

随机推荐

  1. cocos2dx初体验

    我们创建工程后总会自带一个HelloWorld类,短短的几行代码就出来了一个游戏的雏形,请问我们真的理解它了吗?如果我们能早一点弄明白这几行代码,我们或许会比现在走得更远. 理解HelloWorld类 ...

  2. opencv-5-图像遍历与图像改变

    opencv-5-图像遍历与图像改变 opencvc++qt 目录 目录 开始 图像的像素点访问与遍历 opencv 座标定义 下标访问 指针访问 迭代器法访问 遍历访问时间对比 图像操作 图像叠加 ...

  3. SpringCloud系列之集成Dubbo应用篇

    目录 前言 项目版本 项目说明 集成Dubbo 2.6.x 新项目模块 老项目模块 集成Dubbo 2.7.x 新项目模块 老项目模块 参考资料 系列文章 前言 SpringCloud系列开篇文章就说 ...

  4. 记django从1.11.7升级到2.0.1

    第一步:升级django之后记录下django等其他相关依赖包的版本号. 在terminal中输入 pip freeze, 获取所有包的版本号.为了在升级不成功后可以回到低版本. 第二步:卸载再重装d ...

  5. innobackupex 出现Unrecognized character \x01; marked by

    centos 7.2 mysql 5.7.16 innobackupex version 2.4.6 [root@Devops-mysql-150-115 sh]# innobackupex --de ...

  6. 在独立的 Root 和 Home 硬盘驱动器上安装 Ubuntu

    安装 Linux 系统时,可以有两种不同的方式.第一种方式是在一个超快的固态硬盘上进行安装,这样可以保证迅速开机和高速访问数据.第二种方式是在一个较慢但很强大的普通硬盘驱动器上安装,这样的硬盘转速快并 ...

  7. 自定义fastjson对枚举类型的序列化及反序列化过程

    通常,fastjson在序列化及反序列化枚举时,一般以下几种策略: 1).根据枚举的name值序列化及反序列化(默认) 2).根据枚举的ordinal序列化及反序列化 3).根据枚举的toString ...

  8. 第七周CorelDRAW课总结

    1.这节课学到了什么知识? "交互式透明工具""交互式阴影工具"以及"交互式调和工具"制作水晶表情包. 2.有什么心得体会? 无 3.存在的 ...

  9. H3C配置Web登陆

    为什么80%的码农都做不了架构师?>>>   1.开启http服务. [H3C]ip http enable 2.创建web登陆的用户. [H3C]local-user king / ...

  10. 数组输出黑科技----fwrite()

    fwrite(const void*buffer,size_t size,size_t count,FILE*stream); (1)buffer:是一个指针,对fwrite来说,是要输出数据的地址. ...