1. Trước khi bắt đầu
Cloud SQL là một dịch vụ cơ sở dữ liệu được quản lý hoàn toàn, giúp bạn dễ dàng thiết lập, duy trì, quản lý và quản trị cơ sở dữ liệu quan hệ trên Google Cloud. Bạn có thể sử dụng Cloud SQL với Cloud SQL cho MySQL hoặc Cloud SQL cho PostgreSQL.
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách thiết lập một phiên bản Cloud SQL cho MySQL, sau đó cập nhật một ứng dụng Spring Boot để sử dụng phiên bản Cloud SQL làm bộ nhớ phụ trợ. Spring Boot Starter cho Google Cloud SQL cung cấp một DataSource được định cấu hình tự động, cho phép bạn dễ dàng tận dụng Cloud SQL mà chỉ cần thay đổi mã ở mức tối thiểu. Lớp học lập trình này sử dụng mã nguồn Spring Petclinic.
Điều kiện tiên quyết
- Làm quen với ngôn ngữ lập trình và các công cụ Java
- Kiến thức về các trình chỉnh sửa văn bản tiêu chuẩn trên Linux, chẳng hạn như Vim, Emacs và nano
Bạn sẽ thực hiện
- Sử dụng Cloud SQL trong ứng dụng Spring Boot.
Bạn cần có
- Một dự án trên Google Cloud
- Một trình duyệt, chẳng hạn như Google Chrome hoặc Firefox
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
- Mã dự án là giá trị duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án. - Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Kích hoạt Cloud Shell
- Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell
.

Nếu đây là lần đầu tiên bạn khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian mô tả về Cloud Shell. Nếu bạn thấy màn hình trung gian, hãy nhấp vào Tiếp tục.

Quá trình cung cấp và kết nối với Cloud Shell chỉ mất vài giây.

Máy ảo này được trang bị tất cả các công cụ phát triển cần thiết. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trong Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện hầu hết, nếu không muốn nói là tất cả, công việc của mình trong lớp học lập trình này bằng trình duyệt.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án được đặt thành mã dự án của bạn.
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Đầu ra của lệnh
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project
Đầu ra của lệnh
[core] project = <PROJECT_ID>
Nếu không, bạn có thể đặt nó bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Đầu ra của lệnh
Updated property [core/project].
3. Thiết lập một phiên bản Cloud SQL cho MySQL
- Sau khi Cloud Shell khởi chạy, bạn có thể sử dụng dòng lệnh để tạo một phiên bản Cloud SQL mới:
$ gcloud sql instances create my-instance
Sau khi hoàn tất thao tác này, phiên bản của bạn sẽ sẵn sàng sử dụng.
- Bây giờ, hãy tạo một cơ sở dữ liệu mà bạn sẽ dùng cho ứng dụng Petclinic:
$ gcloud sql databases create petclinic --instance my-instance
Bạn cũng có thể truy cập và định cấu hình phiên bản thông qua Cloud Console.
- Lấy tên kết nối của phiên bản ở định dạng
project-id:zone-id:instance-idbằng cách chạy lệnh sau. Sau này, bạn sẽ dùng thông tin này để định cấu hình ứng dụng Spring Boot.
$ gcloud sql instances describe my-instance | grep connectionName
4. Sao chép và kiểm thử ứng dụng Petclinic trên thiết bị
- Giờ đây, bạn sẽ sao chép ứng dụng Petclinic vào thiết bị của mình.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic
- Đảm bảo bạn đã đặt đúng phiên bản Java và chạy ứng dụng Petclinic cục bộ.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ ./mvnw spring-boot:run
- Nhấp vào Web Preview (Xem trước trên web)
trong Cloud Shell , rồi chọn Preview on port 8080 (Xem trước trên cổng 8080).

Bạn sẽ thấy trang chủ Petclinic như trong hình minh hoạ này trong trình duyệt:

- Thử nghiệm và thêm dữ liệu. Ứng dụng này sử dụng cơ sở dữ liệu HyperSQL trong bộ nhớ. Giờ đây, bạn sẽ chuyển từ HyperSQL sang sử dụng Cloud SQL làm cơ sở dữ liệu.
5. Sử dụng Cloud SQL trong Petclinic
Cập nhật tệp pom.xml của Maven
Cập nhật tệp pom.xml như minh hoạ tại đây. Trình khởi động cung cấp một đối tượng DataSource được định cấu hình tự động để kết nối với cơ sở dữ liệu Cloud SQL. Bạn có thể dùng Vim, nano hoặc Emacs để chỉnh sửa tệp này.
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>com.google.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>4.1.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
...
<!-- Add CloudSQL Starter for MySQL -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
</dependency>
...
</dependencies>
</project>
Cập nhật application-mysql.properties
- Thay thế nội dung của
src/main/resources/application-mysql.propertiesbằng các thuộc tính sau. Bạn cần đặt tên kết nối phiên bản từ bước trước.
src/main/resources/application-mysql.properties
database=mysql
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.5+.
spring.sql.init.mode=always
- Cuối cùng, hãy bật hồ sơ Cloud SQL for MySQL trong ứng dụng Spring Boot bằng cách thêm
mysqlvào thuộc tínhspring.profiles.activecủaapplication.properties:
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
6. Chạy ứng dụng trong Cloud Shell
- Bạn có thể khởi động ứng dụng Spring Boot như bình thường bằng trình bổ trợ Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- Sau khi ứng dụng khởi động, hãy nhấp vào Xem trước trên web
trong thanh công cụ Cloud Shell, rồi chọn Xem trước trên cổng 8080.

Bạn sẽ thấy lại trang chủ Spring Petclinic như minh hoạ ở đây trong trình duyệt:

- Thêm một mục nhập về chủ sở hữu thú cưng.
Không bắt buộc: Xác minh rằng Cloud SQL đã duy trì dữ liệu
Bạn có thể xác minh rằng dữ liệu bạn đã nhập đã được duy trì vào Cloud SQL như minh hoạ ở đây. Nhấn phím Enter khi được nhắc nhập mật khẩu.
$ 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;
Không bắt buộc: Xoá phiên bản Cloud SQL
Sau khi dừng ứng dụng, bạn có thể xoá phiên bản Cloud SQL bằng lệnh sau:
$ gcloud sql instances delete my-instance
7. Xin chúc mừng
Bạn đã tìm hiểu cách kết nối với Cloud SQL trong ứng dụng Spring Boot!