xy15app黄瓜在线观看

你的位置:xy15app黄瓜在线观看-白虎直播私密直播视频-xy19a > xy15app黄瓜在线观看 > PostgreSQl 12主从流复制及归档配置

PostgreSQl 12主从流复制及归档配置

发布日期:2022-01-13 13:24    点击次数:174
上一篇文章说道PostgreSQL 12 的源码安放,这边吾们说一下PostgreSQl 12的主从流复制和归档配置。 主从复制的两栽样式1) 基于文件的日志传送 创建一个高可用性(HA)集群配置可采用不息归档...

上一篇文章说道PostgreSQL 12 的源码安放,这边吾们说一下PostgreSQl 12的主从流复制和归档配置。

主从复制的两栽样式 1) 基于文件的日志传送

创建一个高可用性(HA)集群配置可采用不息归档,集群中主服务器做事在不息归档模式下,备服务器做事在不息恢复模式下(1台或多台可随时接管主服务器),备不息从主服务器读取WAL文件。不息归档不必要对数据库外做任何改动,可有效降矮管理支付,对主服务器的性能影响也相对较矮。直接从一个数据库服务器移动WAL记录到另一台服务器被称为日志传送,PostgreSQL经由过程一次一文件(WAL段)的WAL记录传输实现了基于文件的日志传送。日志传送所需的带宽取按照主服务器的事务率而转折;日志传送是异步的,即WAL记录是在事务挑交后才被传送,那么在一个窗口期内倘若主服务器发生不幸性的失效则会导致数据丢失,还异国被传送的事务将会被丢失;数据丢失窗口能够经由过程行使参数archive_timeout进走限定,能够矮至数秒,但同时会增补文件传送所需的带宽。archive_timeout强制N秒以后进走一次归档,若竖立太幼,很快就会超过wal_keep_segments 的值,导致数据遮盖丢失,所以不要盲现在竖立。

2)流复制

PostgreSQL在9.x之后引入了主从的流复制机制,所谓流复制,就是备服务器经由过程tcp流从主服务器中同步响答的数据,主服务器在WAL记录产生时即将它们以流式传送给备服务器,而不消等到WAL文件被填充。默认情况下贱复制是异步的,这栽情况下主服务器上挑交一个事务与该转折在备服务器上变得可见之间客不都雅上存在短暂的延长,但这栽延长相比基于文件的日志传送手段照样要幼得多,在备服务器的能力已足负载的前挑下延长清淡矮于一秒;在流复制中,备服务器比行使基于文件的日志传送具有更幼的数据丢失窗口,不必要采用archive_timeout来削减数据丢失窗口;PostgreSQL 12最先,在实走经由过程流复制来配置主备数据库的时候,不再必要配置额外配置recovery.conf文件了。取而代之的是在备库环境的$PGDATA路径下配置一个standby.signal文件,仔细该文件是一个清淡的文本文件,内容为空。理解首来就是,该文件是一个标识文件。倘若备库经由过程实走pg_ctl promote升迁为主库的话,那么该文件将自动消亡。

仔细:通盘操作都以postgres用户进走。

配置主从流复制和归档 1)两台机器做免密登录

吾们备份和还原过程中所用的archive_command和restore_command命令都以postgres用户运走,所以吾们必要针对postgres用户实现ssh无暗号登录。

# 用postgres用户登录到主pgsql服务器 ssh-keygen -t rsa  # 一同回车 scp /home/postgres/.ssh/id_rsa.pub postgres@10.10.22.152:/home/postgres/.ssh/authorized_keys  或者拷贝id_rsa.pub文件到从pgsql上,然后到从上实走以下命令  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys    # 登录从pgsql服务器查望权限 chmod 700 /home/postgres/.ssh chmod 600 /home/postgres/.ssh/authorized_keys  # 测试登录 ssh postgres@10.10.22.152   # 从pgsql库 ssh-keygen -t rsa  # 一同回车 scp /home/postgres/.ssh/id_rsa.pub postgres@10.10.22.151:/home/postgres/.ssh/authorized_keys  # 登录从pgsql服务器查望权限 chmod 700 /home/postgres/.ssh chmod 600 /home/postgres/.ssh/authorized_keys  # 测试登录 ssh postgres@10.10.22.152 
2)主库配置
# 创建用户 ceate user replica with replication login password 'replication'; alter user replica with password 'replication';  # 修改pg_hba.conf host  replication  replica 10.10.0.0/16  md5   # 修改配置文件 $ vim /data/postgresql-12/data/postgresql.conf  # 监听一切IP listen_addresses = "0.0.0.0" # 最大连接数,据说从机必要大于或等于该值 max_connections = 200 # 竖立主pgsql为生成wal的主机,9.6最先异国hot_standby(炎备模式) wal_level = replica  # 开启不息归档 archive_mode = on #归档命令。-o "StrictHostKeyChecking no" 作用是作废第一次连接输入yes或者no archive_command = 'scp -o "StrictHostKeyChecking no" %p pgslave.ptcloud.t.home:/data/postgresql-12/archive/%f' # archive_command = 'test ! -f /data/postgresql-12/archive/%f && scp %p pgslave.ayunw.cn:/data/postgresql-12/archive/%f' archive_cleanup_command = '/usr/local/postgresql-12/bin/pg_archivecleanup -d /data/postgresql-12/data/pg_wal %r >> /data/postgresql-12/log/archive_cleanup.log 2>&1' # 最多有16个流复制连接。 max_wal_senders = 16 # 竖立流服务保留的最多wal(老版本叫xlog)文件个数 wal_keep_segments = 256 # 数据堆清算的最大进程 autovacuum_max_workers = 2 max_worker_processes = 16 max_logical_replication_workers = 10 # 日志竖立 log_destination = 'stderr' logging_collector = on log_directory = '/data/postgresql-12/log' log_filename = 'postgresql-%w.log' log_file_mode = 0600 log_truncate_on_rotation = on log_rotation_age = 1d log_rotation_size = 1GB  log_min_messages = error # 实走超过300ms的sql语句会记录到pgsql的日志文件,相通于慢日志 # 清淡竖立300ms就益,慢日志会打到pgsql日志文件,方便查题目 log_min_duration_statement = 300 log_checkpoints = on log_connections = on log_disconnections = on log_error_verbosity = verbose log_hostname = on log_line_prefix = '%m [%p] ' log_lock_waits = on  log_statement = 'ddl'  # 主库竖立完善后,必要root用户重启PG服务才能使以上配置奏效 systemctl daemon-reload systemctl restart postgresql   su - postgres psql  # 主库创建具有流复制权限的用户replica CREATE user replica login replication encrypted password 'replication';  postgres=# \du;                                    List of roles  Role name |                         Attributes                         | Member of -----------+------------------------------------------------------------+-----------  postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}  replica   | Replication                                                | {}   # 主库增补主从复制的信任访问(pg_hba.conf)  $ vim /data/postgresql-12/data/pg_hba.conf # replication privilege. host    replication     replica         10.10.0.0/16            trust   # 重启服务 systemctl daemon-reload systemctl restart postgresql systemctl status postgresql 
3)从库配置
# 停留从库,删除从pgsql数据现在录中的数据  # 备份数据现在录 mkdir -p /opt/pgsqldata_backup mv /data/postgresql-12/data/* /opt/pgsqldata_backup  pg_ctl -D /data/postgresql-12/data -l logfile stop rm -rf /data/postgresql-12/data/* 
4)从库做基础备份

从主服务器上copy数据到从服务器,这一步叫做“基础备份”

su - postgres  $ pg_basebackup -h 10.10.22.151 -p 5432 -U replica -W -R -Fp -Xs -Pv -D /data/postgresql-12/data/ Password: pg_basebackup: initiating base backup, waiting for checkpoint to complete pg_basebackup: checkpoint completed pg_basebackup: write-ahead log start point: 0/8000028 on timeline 1 pg_basebackup: starting background WAL receiver pg_basebackup: created temporary replication slot "pg_basebackup_13370" 31384/31384 kB (100%), 1/1 tablespace pg_basebackup: write-ahead log end point: 0/8000100 pg_basebackup: waiting for background process to finish streaming ... pg_basebackup: syncing data to disk ... pg_basebackup: base backup completed 

参数表明:

-h 启动的主库数据库地址 -p 主库数据库端口 -U 流复制用户 -W 行使暗号验证,要用replica的暗号 -Fp 备份输出平常的数据库现在录 -Xs 行使流复制的手段进走复制 -Pv 输出复制过程的详细新闻 -R 为备库创建recovery.conf文件。但是pgsql 10以后的新版本的pgsql不必要这个文件了。 -D 指定创建的备库的数据库现在录 5) 配置从库的配置文件

仔细:这时候,从库数据现在录下的postgresql.conf文件是刚才从主的pgsql上同步过来的,并不是pgsql的配置文件,你必要将原先老的从库上的配置文件拿过来用。

$ cd /data/postgresql-12/data/ $ mv postgres.conf  postgres.conf_master.bak  $ cp /opt/pgsqldata_backup/postgres.conf postgres.conf  $ vim /data/postgresql-12/data/postgres.conf  # 监听一切IP listen_addresses = "0.0.0.0"  # 最大连接数,从pgsql必要大于或等于主的值 max_connections = 300  restore_command = 'cp /data/postgresql-12/archive/%f %p' archive_cleanup_command = '/usr/local/postgresql-12/bin/pg_archivecleanup -d /data/postgresql-12/data/pg_wal %r && /usr/local/postgresql-12/bin/pg_archivecleanup -d /data/postgresql-12/archive %r >> /data/postgresql-12/log/archive_cleanup.log 2>&1'  # 9.6最先异国hot_standby(炎备模式) wal_level = replica # 最多有16个流复制连接。 max_wal_senders = 16  # 竖立比主库大,能够竖立为2倍的数值 wal_keep_segments = 512 max_logical_replication_workers = 10  autovacuum_max_workers = 2 # 和主的值保持相反即可 max_worker_processes = 16  # 表明这台机器不光用于数据归档,还能够用于数据查询 hot_standby = on #流备份的最大延长时间 max_standby_streaming_delay = 30s  # 向主机汇报本机状态的阻隔时间 wal_receiver_status_interval = 10s  # 展现舛讹复制,向主机逆馈 hot_standby_feedback = on   # 日志竖立 log_destination = 'stderr' logging_collector = on log_directory = '/data/postgresql-12/log' log_filename = 'postgresql-%w.log' log_file_mode = 0600 log_truncate_on_rotation = on log_rotation_age = 1d log_rotation_size = 1GB  log_min_messages = error # 实走超过300ms的sql语句会被记录到pgsql的日志文件中 log_min_duration_statement = 300 log_checkpoints = on log_connections = on log_disconnections = on log_error_verbosity = verbose log_hostname = on log_line_prefix = '%m [%p] ' log_lock_waits = on  log_statement = 'ddl' 
6) 重启从库

要保证从库的数据现在录是postgres属主和属组,且权限为0700

su - postgres pg_ctl -D /data/postgresql-12/data restart 
验证pgsql主从
# 登录主库 su - postgres  postgres=# psql  postgres=# select client_addr,sync_state from pg_stat_replication;  client_addr  | sync_state --------------+------------  10.10.22.152 | async (1 row)   select pid, usename, application_name, client_addr,        backend_start, client_port, state, sync_state from pg_stat_replication;    pid  | usename | application_name | client_addr |         backend_start         | client_port |   state   | sync_state -------+---------+------------------+-------------+-------------------------------+-------------+-----------+------------  28356 | repl    | walreceiver      | 10.10.22.152 | 2021-12-30 17:00:59.357653+08 |       48660 | streaming | async (1 row) 

以上表明10.10.22.152服务器是从节点,在授与异步流复制

到这边,主流复制和归档配置完善。

本文转载自微信公多号「运维开发故事」

【编辑选举】

鸿蒙官方战略配相符共建——HarmonyOS技术社区 迅速晓畅 “幼字端” 和 “大字端” 及 Go 说话中的行使 又一个“无人造厂”诞生,剩下的工人干什么? 比 netstat 益用?Linux 网络状态工具 ss 详解 Spring Boot 五栽炎安放手段,极速开发就是生产力! 开源的勾引——数据库篇

上一篇:围剿慢SQL,工走MySQL研发管控和治理实践
下一篇:查询MySQL字段诠释的五栽手段!
TOP