POSTGRES 15 流复制搭建主备
创始人
2024-01-28 01:54:49

基于pg_basebackup的主备库搭建,pg_basebackup命令的使用方法如下:

pg_basebackup [option...]

此命令后可以跟多个选项,各选项的具体说明如下。

  • -D directory或–pgdata=directory:指定备份的目标目录,即备份到哪儿。如果这个目录或目录路径中的各级父目录不存在,pg_basebackup就会自动创建该目录。如果目录存在,但不为空,则会导致pg_basebackup执行失败。如果备份的输出是tar结果(指定-F tar ,后面会介绍此选项),而-D参后的目录名写成“-”(中划线),则备份会输出到标准输出,此项功能是为了方便通过管道与其他工具配合使用。
  • -F format或–format=format:指定输出的格式。目前支持两种格式,第一种格式是原样输出,即把主数据库中的各个数据文件、配置文件、目录结构都完全一样地写到备份目录中,这种情况下“format”指定为“p”或“plain”;第二种格式是tar格式,相当于把输出的备份文件打包到一个tar文件中,这种情况下“format”应为“t”或“tar”。
  • -r,–max-rate=RATE:限速参数,热备份会在主库产生较多的I/O和网络开销,可以用该参数限制速率。速率的默认单位是“kB/s”,当然也可以指定单位“k”或“M”。
  • -R,–write-recovery-conf:是否生成recovery.conf文件。
  • -x或–xlog:备份时会把备份中主库产生的WAL文件也自动备份出来,这样在恢复数据库时,做出的备份才能应用这些WAL文件把数据库推到一个一致点,然后才能打开备份的数据库。该选项与下面的选项“-X fetch”是完全一样的。使用该选项需要设置wal_keep_segments参数,以保证在备份过程中需要的WAL日志文件不会被覆盖。注意,该参数在PostgreSQL 10版本之后废弃,请用“-X fetch”替代。
  • -X method或–xlog-method=method:method可以取的值为“f”“fetch”“s”“stream”,“f” 与“fetch”相同,其含义与“-x”参数是一样的。“s”与“stream”表示的含义相同,均表示备份开始后,启动另一个流复制连接从主库接收WAL日志。这种方式避免了使用“-X f”时,主库上的WAL日志有可能被覆盖而导致失败的问题。但这种方式需要与主库建两个连接,因此使用这种方式时,主库的max_wal_senders参数要设置为大于或等于2的值。
  • -z或–gzip:仅能与tar输出模式配合使用,表明输出的tar备份包是经过gzip压缩的,相当于生成了一个*.tar.gz的备份包。
  • -Z level或–compress=level:指定gzip的压缩级别,可以选1~9的数字,与gzip命令中的压缩级别的含义是一样的,9表示最高压缩率,但也最耗CPU。
  • -c fast|spread或–checkpoint=fast|spread:设置Checkpoint的模式是fast还是spread。
  • -l label或–label=label:指定备份的一个标识,备份的标识是一个任意字符串,便于今后维护人员识别该备份,该标识就是手动做基础备份时运行“select pg_start_backup(‘lable’)”传递给pg_start_backup函数的参数。在备份集中有一个文件叫“backup_label”,这里面除了记录开始备份时起始的WAL日志的开始位置、Checkpoint的WAL日志位置、备份的开始时间,也记录了该标识串的信息。
  • -P或–progress:允许在备份过程中实时地打印备份的进度。当然,所打印的进度不是百分之百精确的,因为在备份过程中,数据库的数据还会发生变化,还会不断产生一些WAL日志。
  • -v或–verbose:详细模式,如当使用了-P参数时,还会打印出正在备份哪个具体文件的信息。
  • -V或–version:打印pg_basebackup的版本后退出。
  • -?或–help:显示帮助信息后退出。下面是控制连接数据库的参数的说明。
  • -h host或–host=host:指定连接的数据库的主机名或IP地址。
  • -p port或–port=port:指定连接的端口。
  • -s interval或–status-interval=interval:指定向服务器端周期反馈状态的秒数,如果服务器上配置了流复制的超时,当使用–xlog=stream选项时需要设置该参数,默认值为10秒
    。如果设置为“0”,表示不向服务器反馈状态。
  • -U username或–username=username:指定连接的用户名。
  • -w或–no-password:指定从来不提示输入密码。
  • -W或–password:强制让pg_basebackup出现输入密码的提示。

主库

修改pg_hba.conf

su - postgres
vi pg_hba.confhost    replication     all             0.0.0.0/0               md5

修改postgresql.conf

# 必须打开
full_page_writes = on
archive_mode = onlisten_addresses = '*'# 必须设置为非零值,且比备库数量多
max_wal_senders = 10
# 参数设置为“replica”或“logical”。
wal_level = replica
# 默认值太小,备库容易失效,增大该值
min_wal_size = 2GB

重新加载配置文件

创建流复制用户,避免超级用户权限

create user replicator replication login connection limit 5 password 'replicator';

备库

备份数据

pg_basebackup -h 10.10.100.54 -U replicator -F p -P -X stream -R -D /app/postgresql/data -l backup20221117

修改配置文件

hot_standby = on

启动备库

/app/postgresql/bin/pg_ctl -D /app/postgresql/data -l /app/postgresql/log/logfile start

注意事项

由于我是编译安装修改了数据库的块大小,所以必须保证两个库的编译参数完全一样,否则无法启动备库

./configure --prefix=/app/postgresql --with-perl --with-python --with-blocksize=32 --with-wal-blocksize=32 --with-segsize=10

主备切换

  1. 先停主库,再停备库

  2. 然后将原来备库参数加入主库配置文件

  3. 在主库创建文件standby.signal

  4. 并修改

     primary_conninfo = 'user=replicator password=replicator channel_binding=disable host=10.10.100.62 port=5432 sslmode=disable sslcompression=0 sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres target_session_attrs=any'
    
  5. 删除备库standby.signal

  6. 先起备库再起主库

相关内容

热门资讯

万的繁体字怎么写 繁体字怎么写... 一、繁体字大全简化偏旁讠[訁] 饣[飠] [昜] 纟[糹] [臤] 只[戠] 钅[釒] 呙[咼]A爱...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
桂林市属于哪个省 桂林为什么划... 桂林 [guì lín]广西壮族自治区下辖市桂林,简称桂,是世界著名风景游览城市、全国重要高新技术产...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...