2017-06-19 68 views
5

Bir PHP uygulamasını (Googel Cloud Platform'un dışındaki bir sunucudan) Google Cloud SQL'e bağlamayı planlıyorum. Uygulamayı, veritabanını düzgün bir şekilde yük devretmeye nasıl tasarlayabileceğimi bilmek istiyorum. manual göreGoogle Cloud SQL'de yük devretme nasıl çalışır?

:

bir bölgeli kesintisi meydana gelir ve efendin senin yük devretme kopya devreder, örneğine varolan herhangi bağlantıları kapalıdır. Ancak, uygulamanız aynı bağlantı dizgisini veya IP adresini kullanarak yeniden bağlanabilir; Bir yük devretme sonrasında uygulamanızı güncellemenize gerek yoktur.

Her şey sahne arkasında otomatik olarak gerçekleşiyor, ancak veritabanının IP adresi çıktı veya zaman aşımına uğradıysa ne olur?

+1

Yük devretme sonrasında IP yeni örneğe taşınacaktır. Uygulamada hiçbir şeyin olması gerekmez. – Vadim

cevap

0

hakkında arka uç veritabanı hizmeti sağlamak için hangisini kullandığına here açığa vurmaz ama benim varsayım:

    O konektörü master trafik yönlendirme sanal bir IP kullanıyor
  • , usta başarısız nedenle zaman yedekleme sanal IP'nin reklamını yapmaya başlayacak, bu da TCP bağlantınızın başarısız olmasına neden olacaktır. senin php.ini yılında mysqli.reconnect kesintisi olduğunda PHP kodu otomatik olarak yedekleme MySQL konnektörüne bağlamak izin etkin olmalıdır eğer

comment anlamına gelir. read here

Eğer mysqli.reconnect etkinse, herhangi bir şey için endişelenmenize gerek yoktur.

Düzenleme: SQL Transaction ile ilgili sorulan soruya cevap olarak - İşlem sırasında herhangi bir zamanda bağlantının kesilebileceğine dair bir önlemle SQL işlem kodu yazılmamışsa elbette bir karmaşa olacaktır, bu senaryoyu ele almak gerekir. kodu. Otomatik işlem etkinleştirildiğinde ve bir işlem içinde olmadığınız zaman, basit bir otomatik yeniden bağlanma neredeyse tüm diğer senaryoları çözer.

+0

PHP'nin mysqli, bağlantı listesi olduğunda herhangi bir işlemi kesecektir. Otomatik olarak yeniden bağlanırsa, kısmi işlem ROLLBACK'd ve yeni bir işlem başlatılır. Bu _may_ karışıklığa sebep oluyor. Otomatik olarak yeniden bağlanma ve başarısız bir işlem olarak işleme daha iyi olur ve _code_ işleminizi yeniden başlatmanız gerekir. –

+0

Elbette, işlem sırasında herhangi bir zamanda bağlantının kesilebileceği bir önlemle SQL işlem kodu yazılmamışsa, böyle bir senaryo kodda ele alınmalıdır. Otomatik işlem etkinleştirildiğinde ve bir işlem içinde olmadığınız zaman, basit bir otomatik yeniden bağlanma neredeyse tüm diğer senaryoları çözer. –

+0

(Bu konuyu okuyan acemilere "tabi ki" işaret etme ihtiyacını hissettim.) –