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

将本地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();

苏州市纳米新材料集群毫厘间绣花方寸间起舞,打开一个极致新世界直径约5厘米厚度只有0。35毫米,这种仅相当于两张A4纸厚度的透明圆片,就是氮化镓,作为第三代半导体的核心关键材料,它是实打实的节能高手不久前,江苏第三代半导体研究院传来喜讯利用这雷声滚滚!注意!五个利空,这个周末不太平一锂电大事件严查上下游囤货抬价,把全国的统一市场建立起来长春新能源车排队充电,新能源车事还是挺多的特斯拉直接撞上轿车二新冠口服液下架专家说这种药不是每个人都可以吃的,这一消息传出,Bazelhttparchive)上文我们使用了gitrepository,Bazel可以直接从github下载指定的外部依赖库,非常方便。不过,需要你的系统里安装git,这个要求对于那些使用其他版本控制软件,如s华人数学家死磕欧拉方程10年,用计算机找到了让它失效的奇点金磊发自凹非寺量子位公众号QbitAI专研长达10年,论文足足177页。华人数学家通过计算机,找到了让著名欧拉方程失效的奇点。图源QuantaMagazine欧拉方程,是250年前解读劳斯莱斯闪灵,首款纯电车,重达3吨,可解耦平面魔毯悬挂(关键词纯电动车2975kg可解耦防倾杆700公斤电池)劳斯莱斯闪灵是品牌历史上首款纯电动车,作为宝马集团内的一员,共享第五代电驱系统,闪灵首次搭载了可解耦防倾杆魔毯悬挂,内饰的设雷军说站在风口上,猪都能飞起来小米的雷军曾说,站在风口上猪也能飞起来。确实!天时地利人和,时机都是缺一不可!在一个新事物出现,抓住机会的人就是运气加持的人。但是在这个时候,更加需要结合自身过硬的本事。在一个新事科创新引擎,经开区发展动力up近日,中国机械工业联合会公布了关于表彰2022年度机械工业科学技术奖奖励项目的通报,中国重型机械研究院共有两项科技成果获奖,其中主持完成的高端精品带钢高效冷轧数智化生产关键核心技术想要降低无刷直流驱动成本和复杂度?来看看这篇硬核测评本人长期从事新能源汽车主驱电机的软件开发工作,专注于扩展卡尔曼观测器高频注入等针对电机各项参数的识别算法的研究,对市面上各个厂商的电驱方案都有所了解。本篇文章,我们将对PowerI世界杯巡礼之厄瓜多尔高原王者下山揭幕战受贿丑闻坐实or反转?厄瓜多尔并不算是南美传统豪强球队,但时常能产出一些实力超群的球星,前曼联球星瓦伦西亚就是厄瓜多尔籍球员。在本次世界杯南美区预选赛中,厄瓜多尔力压哥伦比亚智利秘鲁等南美强队,以南美排辽宁队三消息杨鸣化身魔鬼教练,王芳担任新职务,马壮将被放弃杨鸣化身魔鬼教练。北京时间11月20日,CBA第一阶段休赛期,目前各支球队进入到短暂的补强集训工作中,辽宁男篮近段时间在辽宁阜新是展开封闭式集训,就是为了提升训练效果,备战第二阶段CBA三消息,山东队辟谣李根加盟,王哲林住板房,马尚喊话哈德森大家好,头号喵蜜,以绝对严谨态度,吐槽有趣的篮球故事,各位老铁要养成先读后赞的习惯王哲林落地后正在福州隔离,姜伟泽定位在成都的酒店里隔离看电视,在留言区和赵睿交流,赵睿跟他上次住的
调查新能源车充电桩基本靠抢,有人凌晨4点起床深夜十一点,北京顺义牛栏镇的新能源车主老张又来到家附近的这个充电站寻找车位。他告诉记者,由于这里停车免费,加上夜里11点到早晨7点是电价波谷期,每度电比波峰时便宜6毛钱左右,使得这元旦重大消息解读两大利空来袭,关于房子和车子的事,得重视家人们,重大消息解读,两大利空一利好一总结,每条都与你有关,人均爆赚5万,你被平均了没?新能源补贴退坡30会有什么影响?投保基金让投资者利益得到更好保护,恒大信誓旦旦2022年保交血脂高该怎么吃?这份饮食指南请收好本期热门话题,我们来聊一聊血脂高在饮食上需要注意什么。怎样才能从高血脂到血脂正常?赵慧君中国注册营养师相信很多人的体检报告上,都会有血脂高这个标签。高血脂属于一种慢性代谢性疾病,受越野滑雪射击!杨倩对冬季两项最感兴趣节目录制间隙,记者问杨倩小时候你想过有一天能成为奥运冠军么?她略带羞涩地笑道从来没想过。感觉很幸运,也很神奇,也许这就是我和射击的缘分吧。东京奥运会上,杨倩获得射击女子10米气步枪金鸡奖红毯高定随处可见,Dior最好借,李冰冰可能开红毯先河前不久,韩国青龙奖和MAMA奖举行,网友们看到韩国明星走红毯,觉得索然无味,因为礼服非黑即白,高定少见,珠宝没有,唯一拿的出手的就是水光肌,甚至有网友调侃像参加葬礼!看见韩国女星走张庭公司被查后,昔日奢华生活被扒,住2亿豪宅,家里请5个保姆2021年年末,娱乐圈明星的大瓜一个接着一个,先是王力宏离婚6亿多家产待分,后有薇娅偷税被罚13。41亿,没想到岁末之前,张庭林瑞阳夫妇又被曝出涉嫌传销,仅前期冻结资金就高达6亿,2021女星综艺下头瞬间,从蒋勤勤到佟丽娅,被骂一点都不冤2021年娱乐圈风云变幻,出了不少大事儿,一大波明星从云端坠落。不止如此,21年的综艺也看点十足,有不少女明星就在综艺中情商堪忧,我行我素,被网友骂下头。第一位就是大家熟知的女演员南北双台跨年唐嫣美艳王鸥抢镜,杨幂眼妆像发光眼屎跨年演唱会像是每年年末的一个句点。虽说由于疫情,很多人都不能到现场感受视听盛宴,但千万人一起守在电视机前倒计时的感觉也很不错。饭姐蹲到节目名单后,火速把目光锁定了湖南卫视和北京卫视不装嫩,也不显老!40岁女人掌握这些穿衣精髓,气质高级还减龄年龄是很多女人不愿提起的一个禁忌,尤其是40岁这个阶段的女性,气质从轻熟转变成了成熟。可很多女人到了这个年龄阶段,为了降低自己的年龄感,常常会选择过于稚气的穿搭,若是不符合自身的气DNF1月全职业幻神排行榜,34仔全体翻身,平民成大赢家此次全职业34仔大改版之后,玩家发现一个有趣的现象,之前比较强势的纯C职业,虽然风采依旧但是34仔全体职业大面积加强,如此一来玩家就实现了一个新的平台,只要职业的数据够强,就能成为又是一波回忆杀,DNF的历代版本你还记得吗70版本篇十几年的时间里,时代在不断的改变,DNF的版本也在不断的更替,不知不觉间,已经来到了百级版本。回顾以往的版本记忆依然历历在目,因为那是我们的青春啊。上篇文章中我们一起回顾了60版本