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

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

32!亚少赛首支出线队诞生!亚洲第10爆大冷,逆转韩国锁定头名U17亚洲杯预选赛结束一场焦点战,种子球队韩国爆出大冷门,最终23被逆转,目送乌兹别克斯坦提前一轮锁定小组头名,成为亚少赛首支出线的球队。中国队落后澳大利亚队13个净胜球,还是排名(体育)乒乓球世乒赛团体赛中国男队晋级四强当日,在成都举行的第56届世界乒乓球团体锦标赛(决赛)男子四分之一决赛中,中国队以3比0战胜瑞典队,晋级四强。10月7日,中国队选手王楚钦在获胜后庆祝,他以3比2战胜瑞典队选手克里帕金斯尽管詹姆斯已过37岁,现如今NBA依然没有人能单换詹姆斯NBA名嘴帕金斯在自己的主持节目中表示,尽管詹姆斯已经过了37岁,但是他依然保持着全面性,身体依然劲爆,商业价值无可估量,现在的现役球员,还是没人能够单换詹姆斯的球员。对于帕金斯本哪家保险服务质量好?这里有一份官方数据,来看各家详情各家保险公司服务质量如何?有没有可供参考的量化数据?日前,中国银行保险信息技术管理有限公司(简称中国银保信)发布2022年上半年保险服务质量指数,采用指数化方式表征保险服务质量,为数据国庆消费成绩单来了,反向旅游火爆文李童顾乐晓编辑陈臣今年国庆假期,国内出游人次旅游收入恢复不及去年和前年国庆假期,但出去玩的人比今年相同天数的春节假期多近7成。越来越多的人解锁本地游新玩法,高端酒店露营依旧火爆,节日守护,桂阳助2名萌娃平安回家国庆假期普天同庆天真的孩子可以到处嬉戏游玩人流密集处家长的粗心大意一不小心就发生孩子走失事件为确保人民群众度过一个欢乐祥和的国庆假期,桂阳公安在岗忠诚履职,舍小家护大家,全力为群众奔向美好生活人间重晚晴视频加载中最美不过夕阳红。党的十八大以来,习近平总书记对养老保障和为老服务工作作出一系列重要指示提出一系列明确要求。2013年12月,习近平总书记来到了北京四季青敬老院,同老人们亲经济日报金观平切实强化交通物流保通保畅交通物流是市场经济命脉,对国民经济有序运行引导产业布局和业态创新有着重要的支撑和引导作用。近日召开的稳经济大盘四季度工作推进会议提出,做好物流保通保畅。今年以来,党中央国务院多次强她是体操世界冠军,退役后热衷公益事业,与大10岁男友幸福美满多年以来,中国体操队在国际范围内都是极为亮眼的存在,每次大型比赛的领奖台上,也几乎都有中国运动员的身影。但在中国女子体操队里,相对于名气很大的刘璇还有程菲等人而言,眭禄似乎并不被人中国女排3比2力挫荷兰女排北京时间10月7日凌晨,2022年女排世锦赛复赛E组第3比赛日的较量在荷兰鹿特丹结束。面对主场作战的荷兰队,中国女排遭遇对方顽强阻击,苦战五局后才以32涉险闯关,力夺复赛两连胜后仍世乒赛最新赛程出炉,男团四强落位,中日双线争锋,央视直播国乒男团八进四,只能说瑞典的签运不佳,以阵容厚度和硬度来看,拥有卡尔伯格卡尔森法尔克和莫雷高德的瑞典,绝对应该出现在决赛,毕竟这次德国几大主力都没来,瑞典不仅没机会进决赛,连四强都
孩子学习不进步,孩子回家后,让孩子把考试的错题再做一遍,对孩子有帮助吗?整理和积累错题是很多老师和学霸都比较推崇的学习方法,尤其是在理科的学习中,整理和积累错题显得尤为重要。积累和整理错题的目的就是帮助学生去巩固基础,突出重点,突破难点,攻克易错点。在哪些婴儿易患脑瘫?你好,脑瘫又称小儿大脑性瘫痪,是指从出生到一个月内脑发育尚未成熟阶段,由于非进行性脑损伤所导致的以各种姿势及各种运动动能障碍为主的综合征。是小儿时期常见的中枢神经障碍综合征。根据一你后悔在创业后负债累累吗?不后悔。因为当初选择创业是深思熟虑的,清楚事与愿违时的结果,愿赌服输,毕竟创业一下子就成功的是凤毛麟角。创业过程中,无论项目推进的顺利与否,融资都是个常态化的工作。因为融资,不仅融如果现在买社保,以前在农村养老保险怎么办?不应当说买社保,而是参加加入社会保险,此处应当是参加基本养老保险。所谓的农村养老保险应当是目前的城乡居民基本养老保险。从中国基本养老保险制度全方案设计的观点说,应当是建立统一的基本月薪多少能在杭州立足?这个话题嘛,不能一概而论,有些人生活品质要求的高一点,但是有些人嘛,生活品质要求的没那么高,可能差距比较大。像我是一个在杭州打工的生活在杭州的余杭区。一家服装厂里上班。嗯,不说收入为何DNF旭旭宝宝被称为国服第一红眼?DNF为何旭旭宝宝被称为国服第一红眼?其实可以从两点来说明。首先,旭旭宝宝出名早。dnf早期,旭旭宝宝就在网上上传他的刷图视频,别人刷个图可能需要几分钟,他刷图只需要几十秒。早期的王曼昱夺取全运会乒乓球女单冠军,她的下一个目标是什么?下一目标是世乒赛的女单冠军原因如下(一)因为,曼昱夺得全运会女单冠军只是阶段性胜利,今天走下领奖台,一切将从零开始11月份的世乒赛,作为乒乓球这个项目在世界上的最高荣誉她不能不考虑坐了一个废月子是什么表现?中国式坐月子存在陋习吗?月子里如何恢复?我就是坐了一个废月子,现在宝宝四个多月,悔不当初,现在把月子里需要注意的点告诉你,希望你能看到,坐一个好月子,为以后的人生打下一个好的身体基础。首先,一定不要和一些有的没的得人生气有什么是你面试很多次都失败后才知道的?工作十年之中求职了多次,也面试过很多人,要说从失败中总结的经验教训,可能就是很多人都死在了开场白上。为什么这么说呢,开场白的自我介绍本身就是给求职者表达自己核心优点的机会以及说话的生完孩子有膀胱膨出的吗?生完孩子后,由于孕妇怀孕期间大量的补充营养,就是基本上没有任何的锻炼消耗,导致很多脂肪能够在体内聚集,产后很多女性还要坐月子。此间又有很多脂肪导致产后体重大幅度升高,严重影响了体态整个广东省哪个城市最值得投资?要选择在广东投资,那么粤港澳大湾区是必然选择,这个具有全球大湾区特色的珠三角地区的未来发展不可限量。尤其是以珠江东岸为核心的城市群,包括香港深圳东莞广州和佛山等区域,这三个线城市和