یک برنامه Spring Boot را به Cloud SQL متصل کنید

Cloud SQL یک سرویس پایگاه داده کاملاً مدیریت شده است که راه‌اندازی، نگهداری، مدیریت و مدیریت پایگاه‌های داده رابطه‌ای خود را در Google Cloud آسان می‌کند. می توانید از Cloud SQL با Cloud SQL برای MySQL یا Cloud SQL برای PostgreSQL استفاده کنید.

در این کد لبه، شما یاد خواهید گرفت که چگونه یک Cloud SQL برای نمونه MySQL راه اندازی کنید و سپس یک برنامه Spring Boot را به روز کنید تا از نمونه Cloud SQL به عنوان ذخیره سازی باطن آن استفاده کنید. Spring Boot Starter برای Google Cloud SQL یک DataSource پیکربندی شده را ارائه می دهد که به شما این امکان را می دهد که به راحتی از مزیت Cloud SQL با حداقل تغییرات در کد خود استفاده کنید. این آزمایشگاه کد از کد منبع Spring Petclinic استفاده می کند.

پیش نیازها

  • آشنایی با زبان و ابزارهای برنامه نویسی جاوا
  • آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند Vim، Emacs و nano

کاری که خواهی کرد

  • از Cloud SQL در برنامه Spring Boot خود استفاده کنید.

آنچه شما نیاز دارید

تنظیم محیط خود به خود

  1. به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. (اگر قبلاً یک حساب Gmail یا G Suite ندارید، باید یک حساب ایجاد کنید .)

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID نامیده خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورت‌حساب را در Cloud Console فعال کنید .

گذراندن این کد نباید بیش از چند دلار برای شما هزینه داشته باشد، اما اگر تصمیم به استفاده از منابع بیشتری داشته باشید یا آنها را در حال اجرا رها کنید ممکن است بیشتر باشد.

کاربران جدید Google Cloud واجد شرایط استفاده آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را فعال کنید

  1. از Cloud Console، روی Activate Cloud Shell کلیک کنید .

اگر قبلاً Cloud Shell را راه‌اندازی نکرده‌اید، با یک صفحه میانی (زیر تاشو) روبرو می‌شوید که آن را توصیف می‌کند. اگر اینطور است، روی Continue کلیک کنید (و دیگر آن را نخواهید دید). در اینجا به نظر می رسد که آن صفحه یک بار مصرف:

تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. بیشتر، اگر نه همه، کار شما در این کد لبه را می توان به سادگی با یک مرورگر یا Chromebook انجام داد.

پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی ID پروژه شما تنظیم شده است.

  1. برای تایید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list

خروجی فرمان

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

خروجی فرمان

[core]
project = <PROJECT_ID>

اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:

gcloud config set project <PROJECT_ID>

خروجی فرمان

Updated property [core/project].
  1. پس از راه اندازی Cloud Shell، می توانید از خط فرمان برای ایجاد یک نمونه جدید Cloud SQL استفاده کنید:
$ gcloud sql instances create my-instance

پس از اتمام این عملیات، نمونه شما آماده استفاده خواهد بود.

  1. اکنون یک پایگاه داده ایجاد کنید که از آن برای برنامه Petclinic استفاده می کنید:
$ gcloud sql databases create petclinic --instance my-instance

همچنین می‌توانید از طریق Cloud Console به نمونه دسترسی داشته باشید و آن را پیکربندی کنید.

  1. با اجرای دستور زیر، نام اتصال نمونه را با فرمت project-id:zone-id:instance-id دریافت کنید. بعداً از آن در پیکربندی برنامه Spring Boot خود استفاده خواهید کرد.
$ gcloud sql instances describe my-instance |grep connectionName
  1. اکنون برنامه Petclinic را به صورت محلی کلون کرده و آزمایش خواهید کرد.
$ git clone https://github.com/spring-projects/spring-petclinic
$ cd spring-petclinic
$ ./mvnw spring-boot:run
  1. روی Web Preview کلیک کنید در Cloud Shell، سپس Preview در پورت 8080 را انتخاب کنید.

شما باید صفحه اصلی Petclinic را همانطور که در اینجا در مرورگر خود نشان داده شده است ببینید:

  1. بازی کنید و داده ها را اضافه کنید. این برنامه از یک پایگاه داده HyperSQL در حافظه استفاده می کند. اکنون از HyperSQL به استفاده از Cloud SQL به عنوان پایگاه داده خود سوئیچ خواهید کرد.

فایل Maven pom.xml را به روز کنید

فایل pom.xml را همانطور که در اینجا نشان داده شده است به روز کنید. استارتر یک آبجکت DataSource پیکربندی شده را برای اتصال به پایگاه داده Cloud SQL شما فراهم می کند. برای ویرایش فایل می توانید از Vim، nano یا Emacs استفاده کنید.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
    ...
    <!-- Add Spring Cloud GCP Dependency BOM -->
    <dependencyManagement>
        <dependencies>
          <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-gcp-dependencies</artifactId>
          <version>1.0.0.RC1</version>
          <type>pom</type>
          <scope>import</scope>
          </dependency>
      </dependencies>
    </dependencyManagement>
    <dependencies>
      ...
      <!-- Add CloudSQL Starter for MySQL -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
      </dependency>
      ...
    </dependencies>
    <repositories>
      <!-- Use Spring Milestone Repository -->
      <repository>
        <id>repository.spring.milestone</id>
        <name>Spring Milestones Repository</name>
        <url>http://repo.spring.io/milestone</url>
      </repository>
    </repositories>
</project>

به روز رسانی application-mysql.properties

  1. محتوای src/main/resources/application-mysql.properties را جایگزین کنید با خواص زیر شما باید نام اتصال نمونه را از مرحله قبل تنظیم کنید.

src/main/resources/application-mysql.properties

database=mysql

# Delete the rest of the original content of the file and replace with the following:
spring.cloud.gcp.sql.database-name=petclinic
spring.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME

# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.
spring.datasource.initialization-mode=always
  1. در نهایت، یک Cloud SQL را برای نمایه MySQL در برنامه Spring Boot با افزودن mysql به ویژگی application.properties' spring.profiles.active فعال کنید:

src/main/resources/application.properties

# Keep the content of the file the same
...

# In the last line, add mysql to the spring.profiles.active property
spring.profiles.active=mysql
  1. می توانید برنامه Spring Boot را به طور معمول با افزونه Spring Boot راه اندازی کنید:
$ ./mvnw -DskipTests spring-boot:run
  1. پس از شروع برنامه، روی Web Preview کلیک کنید در نوار ابزار Cloud Shell، سپس Preview در پورت 8080 را انتخاب کنید.

همانطور که در اینجا در مرورگر خود نشان داده شده است، باید صفحه اصلی Spring Petclinic را دوباره ببینید:

  1. یک ورودی صاحب حیوان خانگی اضافه کنید.

اختیاری: بررسی کنید که Cloud SQL داده ها را حفظ کرده است

همانطور که در اینجا نشان داده شده است، می توانید تأیید کنید که داده هایی که وارد کرده اید در Cloud SQL باقی مانده است. وقتی از شما خواسته شد رمز عبور را وارد کنید (بازگشت در مکینتاش) را فشار دهید.

$ gcloud sql connect my-instance -u root
Whitelisting your IP for incoming connection for 5 minutes...done.
Enter password: <Press Enter, there is no password by default>
...
mysql> use petclinic;
mysql> select * from owners;
  

اختیاری: نمونه Cloud SQL خود را حذف کنید

هنگامی که برنامه خود را متوقف کردید، می توانید نمونه Cloud SQL را با استفاده از دستور زیر حذف کنید:

$ gcloud sql instances delete my-instance 

شما نحوه اتصال به Cloud SQL را در برنامه Spring Boot خود یاد گرفتید!

بیشتر بدانید