Cloud SQL, पूरी तरह से मैनेज की गई डेटाबेस सेवा है. इसकी मदद से, Google Cloud पर अपने मिलते-जुलते डेटाबेस को आसानी से सेट अप किया जा सकता है. साथ ही, उसे बनाए रखने, मैनेज करने, और सही तरीके से चलाने में भी मदद मिलती है. Cloud SQL का इस्तेमाल, Cloud SQL for MySQL या Cloud SQL for PostgreSQL के साथ किया जा सकता है.
इस कोडलैब में, Cloud SQL for MySQL इंस्टेंस सेट अप करने का तरीका बताया गया है. इसके बाद, Spring Boot ऐप्लिकेशन को अपडेट करके, Cloud SQL इंस्टेंस को बैकएंड स्टोरेज के तौर पर इस्तेमाल करने का तरीका बताया गया है. Google Cloud SQL के लिए Spring Boot Starter, अपने-आप कॉन्फ़िगर होने वाला DataSource उपलब्ध कराता है. इससे आपको अपने कोड में कम से कम बदलाव करके, Cloud SQL का आसानी से फ़ायदा मिल पाता है. यह कोडलैब, Spring Petclinic के सोर्स कोड का इस्तेमाल करता है.
ज़रूरी शर्तें
- Java प्रोग्रामिंग लैंग्वेज और टूल के बारे में जानकारी
- Vim, Emacs, और nano जैसे स्टैंडर्ड Linux टेक्स्ट एडिटर की जानकारी
आपको क्या करना होगा
- अपने Spring Boot ऐप्लिकेशन में Cloud SQL का इस्तेमाल करें.
आपको इन चीज़ों की ज़रूरत होगी
- Google Cloud प्रोजेक्ट
- कोई ब्राउज़र, जैसे कि Google Chrome या Firefox
अपने हिसाब से एनवायरमेंट सेट अप करना
- Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से कोई Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)
प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID
के तौर पर दिखाया जाएगा.
- इसके बाद, Google Cloud के संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में आपको कुछ डॉलर से ज़्यादा खर्च नहीं करने पड़ेंगे. हालांकि, अगर ज़्यादा संसाधनों का इस्तेमाल किया जाता है या उन्हें चालू रखा जाता है, तो यह खर्च बढ़ सकता है.
Google Cloud के नए उपयोगकर्ता, 300 डॉलर के क्रेडिट के साथ मुफ़्त में आज़माने की सुविधा पा सकते हैं.
Cloud Shell चालू करें
- Cloud Console में, Cloud Shell चालू करें
पर क्लिक करें.
अगर आपने Cloud Shell का इस्तेमाल पहले कभी नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. यह स्क्रीन, फ़ोल्ड के नीचे दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें. इसके बाद, आपको यह स्क्रीन कभी नहीं दिखेगी. एक बार दिखने वाली स्क्रीन ऐसी दिखती है:
Cloud Shell को चालू करने और उससे कनेक्ट होने में सिर्फ़ कुछ सेकंड लगेंगे.
इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में ज़्यादातर काम, सिर्फ़ ब्राउज़र या Chromebook की मदद से किया जा सकता है.
Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर पहले ही सेट कर दिया गया है.
- पुष्टि करने के लिए कि आपने पुष्टि कर ली है, 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].
- Cloud Shell लॉन्च होने के बाद, कमांड लाइन का इस्तेमाल करके नया Cloud SQL इंस्टेंस बनाया जा सकता है:
$ gcloud sql instances create my-instance
यह प्रोसेस पूरी होने के बाद, आपका इंस्टेंस इस्तेमाल के लिए तैयार हो जाएगा.
- अब एक ऐसा डेटाबेस बनाएं जिसका इस्तेमाल Petclinic ऐप्लिकेशन के लिए किया जाएगा:
$ gcloud sql databases create petclinic --instance my-instance
Cloud Console के ज़रिए भी इंस्टेंस को ऐक्सेस और कॉन्फ़िगर किया जा सकता है.
- यहां दी गई कमांड चलाकर, इंस्टेंस कनेक्शन का नाम
project-id:zone-id:instance-id
फ़ॉर्मैट में पाएं. इसका इस्तेमाल बाद में, Spring Boot ऐप्लिकेशन को कॉन्फ़िगर करने के लिए किया जाएगा.
$ gcloud sql instances describe my-instance |grep connectionName
- अब Petclinic ऐप्लिकेशन को स्थानीय तौर पर क्लोन और टेस्ट करें.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- Cloud Shell में, वेब प्रीव्यू
पर क्लिक करें. इसके बाद, पोर्ट 8080 पर झलक देखें को चुनें.
आपको अपने ब्राउज़र में, Petclinic का होम पेज इस तरह दिखेगा:
- इसे इस्तेमाल करके आज़माएँ और डेटा जोड़ें. ऐप्लिकेशन, इन-मेमोरी HyperSQL डेटाबेस का इस्तेमाल करता है. अब आपको HyperSQL से Cloud SQL पर स्विच करना होगा.
Maven pom.xml फ़ाइल अपडेट करना
pom.xml
फ़ाइल को यहां दिखाए गए तरीके से अपडेट करें. स्टार्टर, आपके Cloud SQL डेटाबेस से कनेक्ट करने के लिए, अपने-आप कॉन्फ़िगर होने वाला DataSource
ऑब्जेक्ट उपलब्ध कराता है. फ़ाइल में बदलाव करने के लिए, 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 फ़ाइल अपडेट करना
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
- आखिर में, Spring Boot ऐप्लिकेशन में Cloud SQL for MySQL प्रोफ़ाइल चालू करें. इसके लिए,
application.properties' spring.profiles.active
प्रॉपर्टी मेंmysql
जोड़ें:
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
- Spring Boot प्लगिन की मदद से, Spring Boot ऐप्लिकेशन को सामान्य तरीके से शुरू किया जा सकता है:
$ ./mvnw -DskipTests spring-boot:run
- ऐप्लिकेशन शुरू होने के बाद, Cloud Shell टूलबार में वेब प्रीव्यू
पर क्लिक करें. इसके बाद, पोर्ट 8080 पर प्रीव्यू करें को चुनें.
आपको अपने ब्राउज़र में, Spring Petclinic का होम पेज फिर से दिखना चाहिए. यह ऐसा दिखता है:
- पालतू जानवर के मालिक की एंट्री जोड़ें.
ज़रूरी नहीं: पुष्टि करें कि Cloud SQL ने डेटा सेव कर लिया है
यहां दिए गए तरीके से, यह पुष्टि की जा सकती है कि आपने जो डेटा डाला है वह Cloud SQL में सेव हो गया है. जब आपसे पासवर्ड मांगा जाए, तब Enter (Macintosh पर Return) दबाएं.
$ 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
आपने Spring Boot ऐप्लिकेशन में Cloud SQL से कनेक्ट करने का तरीका जान लिया है!