范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

将本地PostgreSQL集群迁移到GoogleCloud

  作者:MeshCloud脉时云公有云架构师周宽
  本文介绍了如何将本地 PostgreSQL 集群迁移到 Google Cloud。此方法使用 PgBouncer 作为连接池程序,这可以最大限度地减少应用停机时间,并有助于设置用于监控结果的工具。本文的目标受众是在 Linux 环境中工作的 PostgreSQL 管理员和系统管理员。
  在下图中,PgBouncer 实例位于本地主实例的前面。
  有了连接池,客户端便会在故障切换到 Google Cloud 时路由到替代节点,而无需重新部署应用配置或进行应用级更改。
  下图演示了迁移过程。
  如需执行迁移,请关停当前主实例,然后将从属 Google Cloud 副本提升为主实例。PgBouncer 会将流量重新路由到 Google Cloud 上的新主节点。一、目标在 Google Cloud 中设置 PostgreSQL。在 Compute Engine 上设置复制功能。将数据播种 (seed) 至新实例。在 Google Cloud 上设置 PostgreSQL 集群。切换到新服务器。实现监控功能。二、准备工作登录您的 Google Cloud 帐号。选择或创建一个Google Cloud 项目。确保项目已启用结算功能。启用 Compute Engine API。Google Cloud 控制台启动 Cloud Shell。
  本教程使用 gcloud 和 gsutil 命令,您可以在通过 Google Cloud 控制台启动的 Cloud Shell 实例中运行这些命令。如果要在本地工作站上使用 gcloud 和 gsutil,请安装 Google Cloud CLI。三、设置环境
  首先执行以下任务:在 Google Cloud 中设置 PostgreSQL。在 Compute Engine 上设置复制功能。
  然后,在开始复制主实例之前,将数据播种到新实例。3.1 在 Google Cloud 中设置 PostgreSQL
  请按照如何设置 PostgreSQL 以通过热备用模式实现高可用性和复制功能中所述的步骤操作,只需几分钟即可在 Google Cloud 上设置好 PostgreSQL。您可在 Compute Engine 上的 Ubuntu 虚拟机实例中配置 PostgreSQL。3.2 在 Compute Engine 上设置复制功能
  请按照如何在 Google Compute Engine 上设置 PostgreSQL 中所述的步骤配置 PostgreSQL,使其在 Compute Engine 上以热备用模式运行。您需要使用两个 Compute Engine 实例。一个实例用于运行主 PostgreSQL 服务器,另一个实例用于运行备用服务器。
  尽管用于配置 PostgreSQL 的属性在主实例和从属实例之间有所不同,但属性文件应当相同,以便实现无缝故障切换。
  PostgreSQL 集群中的从属实例通过 recovery.conf 文件的存在来表示。
  在大多数情况下,都有必要分离数据库的数据目录与启动磁盘。在本例中,数据库文件存储在 /database 处装载的目录中。
  如需修改主实例上的 postgresql.conf 文件以设置复制功能,请使用以下命令:wal_level = "hot_standby" archive_mode = on archive_command = "test ! -f /postgresql/archivedir/%f && cp %p /postgresql/archivedir/%f" max_wal_senders = 3 listen_addresses = "*" wal_keep_segments = 8
  如需修改副本上的 postgresql.conf 文件,请使用以下命令:hot_standby = on standby_mode = on primary_conninfo = "host=${PRIMARY_IP} port=5432 user=repuser"
  向副本发送 Read 请求可以减轻主实例的负载。3.3 播种数据
  由于主数据库有事务日志限额,因此大多数 PostgreSQL 迁移都需要将数据种子设定为新实例,然后才能开始复制主实例。可通过以下某种方式播种数据:使用 Pg_dump 将单个数据库转储为一个脚本或归档文件。使用 Pg_basebackup 获取正在运行的数据库集群的二进制副本。使用 rsync 将数据文件夹复制到副本。将旧备份恢复到副本。
  在上述方式中,推荐的方式是将旧备份恢复到副本。采用这种解决方案时,系统性能不会因传输数据量大而受到影响,并且当前集群仍能够继续正常运行。
  在数据库的初始种子设定完成之后,您可以使用 rsync 命令将更改馈送到执行备份后生成的副本;该命令会同步两个实例之间的数据目录。如果备份比主实例滞后太多,无法通过正常复制与之同步,那么这步操作非常重要。四、在 Google Cloud 上设置 PostgreSQL 集群
  您可以使用级联复制功能创建 PostgreSQL 集群。首先迁移数据库,如下图所示。
  4.1 迁移数据库从正在运行的主服务器获取完整备份(label 可以是任何标签):echo "select pg_start_backup("label",true);" |sudo su - postgres -c psql sudo tar cvfz postgresql_AAAAMMDD.tar.gz $PGDATA
  $PGDATA 是 PostgreSQL 的主数据目录。在 Google Cloud 项目中创建一个名为 gs://pg-repo/ 的存储分区。将备份转移到刚刚创建的存储分区:master$ gsutil cp postgresql_AAAAMMDD.tar.gz gs://pg-repo/将备份文件转移到 Google Cloud 主实例:new_master$ gsutil cp gs://pg-repo/postgresql_AAAAMMDD.tar.gz将备份文件恢复到 Google Cloud 主实例:new_master$ (cd / ; tar xvf postgresql_AAAAMMDD.tar.gz)在 $PG_DATA 目录中创建一个包含以下内容的 recovery.conf 文件:standby_mode     = "on" primary_conninfo = "port=5432 host=${running_master_ip} user=${replication_user} application_name=cloud_master" trigger_file     = "/tmp/failover.postgresql.5432"
  注意  :  trigger_file   值可以采用任何名称,并且可以放在您指定的任何目录中。为便于记忆,此示例使用名称   failover.postgresql.5432  ,该文件旨在对端口 5432 上运行的 PostgreSQL 强制进行故障切换。  启动 PostgreSQL 服务:sudo service postgresql start等待 Google Cloud 主服务器与正在运行的主实例同步。在日志中,您可以看到如下所示的内容:tail -f /var/log/postgresql/postgresql*log ... 2018-09-22 17:59:54 UTC LOG:  consistent recovery state reached at 0/230000F0 2018-09-22 17:59:54 UTC LOG:  database system is ready to accept read only connections ...
  注意  :  0/230000F0   是   pg_xlog   ID。您的 ID 会有所不同。
  此外,您可以搜索 master pg_stat_replication 来确定新的从属实例(称为 cloud_master)是否已连接:postgres=# x Expanded display is on. postgres=# select * from pg_stat_replication where application_name="cloud_master"; -[ RECORD 1 ]----+------------------------------ pid              | 16940 usesysid         | 16402 usename          | repmgr application_name | cloud_master ...4.2 创建从属数据库关停数据库和服务器:sudo service postgresql stop sudo shutdown -h now如需验证服务已经停止,请运行以下命令:gcloud compute instances describe master-instance-name | grep status
  在输出中,实例的状态将显示为 TERMINATED:status: TERMINATED
  接下来,创建数据磁盘的快照以帮助创建新的从属实例。在 Google Cloud Console 中,转到快照页面。基于 PostgreSQL 磁盘新建一个快照。启动 Google Cloud 主服务器。转到虚拟机实例页面,点击 master-instance-name,然后点击启动。
  PostgreSQL 服务即会自动启动。如需检查这一点,请运行以下命令:ps ax | grep postgres
  结果应该类似如下所示: 1398 ?     S   0:00 /usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf  1454 ?     Ss  0:00 postgres: checkpointer process  1455 ?     Ss  0:00 postgres: writer process  1456 ?     Ss  0:00 postgres: wal writer process  1457 ?     Ss  0:00 postgres: stats collector process在 Google Cloud 控制台中,转到虚拟机实例页面,然后点击创建实例。对于启动磁盘,选择 Ubuntu 14.04。点击管理、磁盘、网络、SSH 密钥,然后根据您之前创建的快照添加新的磁盘。启动新服务器并装载该磁盘:sudo mkdir /database && sudo mount /dev/sdb1 /database安装 PostgreSQL:sudo apt-get install postgresql && sudo service postgresql stop配置数据目录和复制值。从 Google Cloud 主实例中复制 postgresql.conf 文件和 pg_hba.conf 文件,然后修改 recovery.conf 文件以包含以下内容:standby_mode = "on" primary_conninfo = "port=5432 host=${cloud_master_ip} user=${replication_user} application_name=cloud_slave_${identifier}" recovery_target_timeline = "latest"使用新的配置文件启动 PostgreSQL 服务,使其指向 Google Cloud 主实例:sudo service postgresql restart验证服务正在运行:ps ax | grep postgres使用以下查询检查 Google Cloud 主服务器:postgres=# x Expanded display is on. postgres=# select * from pg_stat_replication where application_name like "cloud_slave%"; -[ RECORD 1 ]----+----------------------------- pid              | 2466 usesysid         | 16402 usename          | repmgr application_name | cloud_slave_1 ...重复上述步骤来创建更多从属实例。五、切换到新服务器将 PgBouncer 中的配置文件更改为指向新的 Google Cloud 主服务器。在 PgBouncer 实例中,关停 PgBouncer,使用 failover.postgresql.5432 触发器文件提升新的主实例,然后重启 PgBouncer:service pgbouncer stop ; ssh ${cloud_master_ip} "touch /tmp/failover.postgresql.5432" ; service pgbouncer start六、查询示例
  检查服务器上的所有并发连接数: select * from pg_stat_activity;
  (主实例)检查复制状态:select * from pg_stat_replication;
  (主实例)检查副本应用数据的延迟情况:select pg_xlog_location_diff(write_location, replay_location) from pg_stat_replication;
  (主实例)检查复制的字节延迟情况:select client_hostname, client_addr, pg_xlog_location_diff(pg_stat_replication.sent_location,   pg_stat_replication.replay_location)AS byte_lag from pg_stat_replication;
  (从属实例)检查数据库是否为副本:select pg_is_in_recovery();
  (从属实例)检查上次从主实例接收的数据:select pg_last_xlog_receive_location();
  (从属实例)检查上次从主实例应用的数据:select pg_last_xlog_replay_location();
  (从属实例)检查复制延迟时间(以秒为单位):select now() - pg_last_xact_replay_timestamp();

1换9!詹姆斯休战湖人弊端暴露,浓眉若去独行侠可双赢今年休赛期,为了避免重蹈覆辙,也为保住自己的职位,佩林卡推动了多笔签约和交易,得到了朗尼沃克这样的年轻即战力,这使得湖人的阵容不在老迈,但结果依旧是与上赛季一样,甚至不如上赛季的阵卡塔尔世界杯倒计时一周,大家对各支球队有何期待?再过一周,首次在北半球冬季举办的卡塔尔世界杯将如期开幕,又是充满话题性和未知的一次大赛,梅西和C罗的最后独舞,还是姆巴佩带领法国豪华战舰卫冕?五星巴西不再星光熠熠,阿根廷没有了灵气黄牛被苹果逼上绝路?黄牛被苹果逼上绝路这事实在太诡异了,明明苹果手机销量火热一夜之间吸引了全国大批黄牛集结,准备摩拳擦掌大干一场的,结果短短一周时间苹果市场风云突变,无数黄牛惨遭狠狠打脸,哭诉着赔钱甩特斯拉失控狂奔两公里连撞多车致2死3伤,交警原因有待鉴定极目新闻记者张万军刘楒睿李贤诚日前,广东潮州饶平县一男子称驾驶特斯拉小车准备停车时,车辆突然失控高速狂奔2公里,接连撞上两辆摩托车和两辆自行车,造成2死3伤的严重后果。11月13日特斯拉失控2公里车速198kmh撞人!现场监控曝光近日,网络上流传出一段特斯拉严重车祸的视频,引起网友关注。据悉,事发地是在广东潮州,视频中,一辆特斯拉高速行驶,撞上一辆三轮车,巨大的冲击力将三轮车上的驾乘人员撞飞。特斯拉最后撞到4款12256GB大内存手机,性能流畅再用5年也不卡,最低1899元您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。大内存的手机在使用的时候才会更加的流畅,同时大容量的存储内存,可以在手机上保存更多的文件,人工智能的世界真的会按需分配吗刘强东说未来机器人把工作都做了,已经创造巨大财富,把财富分配给所有人,没有穷人和富人。看起来确实是个美好的梦想,我认真仔细地思考了下,就算科技实现了也不可能,社会的构成永远都是有穷原形毕露?台积电启用10架包机赴美,被任正非说对了?点击关注,每天精彩不断!导读原形毕露?台积电启用10架包机赴美,被任正非说对了?作为全球第一大的芯片生产巨头企业,台积电的实力无疑是十分雄厚的这些年来,台积电依靠着芯片代工业务,在苹果带头降价大放水,国产手机怎么办?中国新闻周刊微信公众号消息,继今年618大幅降价促销后,今年双十一,手机厂商集体大降价的消息也登上了热搜。双十一预售开启后,苹果9月发布的新品iPhone14以及iPhone14P12GB256GBIP68,跌价2410元,一体化陶瓷防水旗舰售价再创新低笔者上手体验过的手机多达上百款,然而在机身材质方面印象最深刻的,就是陶瓷类机身手机了,而在普及陶瓷材质手机这件事情上,小米公司算是立了大功,早期从小米5尊享版开始,就在尝试引入陶瓷双11快递包装开始瘦身,绿色渐成底色文羊城晚报全媒体记者杭莹沈钊2022年双11大促已落下帷幕,快递物流行业迎来双11最后一波旺季。国家邮政局12日发布的监测数据显示,11月1日至11日,全国邮政快递企业共处理快递包
人工破水时孕妇要注意什么?人工破水时孕妇要注意什么人工破水要注意无菌环境,避免感染,一定要到正规的医院进行操作。正常情况下,宫口接近全开或全开时胎膜会破裂,但当产程进展延长或停滞宫口全开仍未破膜胎心异常孕周慈禧的真实照片,被美国博物馆珍藏至今,这是她的真实容颜在中国封建社会的历史长河中,慈禧太后是一个非常具有争议性的人物。她经历了清朝末年的政治变革和社会动荡,并统治了清朝近半个世纪,执掌大权,决定国家的命运。尽管她的生活方式和政治手段引他曾担任清华大学党委书记,大肆迫害领导干部,1983年被判刑说起中国的高等学府,清华大学绝对是泰山北斗的存在,在上个世纪六七十年代,清华大学还出了一位风云人物,他的名字叫迟群,曾担任清华大学党委书记,在时代浪潮中,迟群却迷失了方向,走上了一三个更好统筹确保中华民族复兴号巨轮行稳致远2023年2月28日,中国共产党第二十届中央委员会第二次全体会议通过中国共产党第二十届中央委员会第二次全体会议公报(以下简称公报)。公报提到更好统筹国内国际两个大局,更好统筹疫情防从小咬指甲的孩子,长大后怎样了?大多逃不出3种结果前几天去朋友家做客,偶然发现,朋友儿子一边讲话,一边啃指甲,手指甲都被啃秃了。孩子长得挺清秀帅气,指甲却被啃得血淋淋,看起来有点吓人。后来聊天才知道,原来孩子从小就有咬指甲的坏习惯父母专业课研讨会为家庭教育支招为了引导广大家庭树立科学的家庭教育理念,为未成年人健康快乐成长营造良好的家庭环境,助力推动形成文明和谐的社会氛围,3月25日,一场别开生面的父母专业课研讨会在海拉尔区凯景嘉华酒店内如何看待2021年中国手机市场份额排名vivo第一,OPPO第二,苹果第三?不稀奇!在我们县里,只有一家米专卖店,vivo。oppo。华为。荣耀就不只有三家两家了,甚至更多!对来店里的顾客卖力推荐这四种手机,有时对一些不懂手机的顾客胡说八道,一提到小米红米民间没有真藏品,但有艺术品,你认同吗?本人不认同!本人拿出来东西都可是国宝级的文物!这下面可是元代笔架山,价位在两百万以上。国拍定价为两百万!因为起拍价只有50万。所以本人拒绝上拍!这可是福字碗!随便拿出来一件都不差!静脉曲张应该如何调养?感谢邀请!那么针对已经发生了的静脉曲张的患者,我们该如何保养呢?一一般患者小腿可表现为长时间站立后患肢小腿感觉沉重酸胀乏力,二后期的患者可发生小腿皮肤色素沉着湿疹溃疡,根据不同时期永定区市场监管局打安全生产翻身仗小餐梯有大隐患红网时刻通讯员田国栋报道我的传菜机已经用一两年了,要不是这次你们来检查,我都不知道这是属于特种设备,也从来没有听说过要注册登记。近日,永定区一家火锅店老板对联合执法的永定区市场监督过气老艺人的窘况县城演出直播被嘲接烂片,晚节是啥?前言俗话说得好,长江后浪推前浪,前浪拍死沙滩上。即使你曾经是红透过半边天的巨星,但在如今小鲜肉横行的时代里,你也不得不暂避锋芒。并且只要贴上了过气的标签,你就不得不为生活低头!比如