阿里雲有獎體驗:如何使用 PolarDB-X

bainana發表於2022-07-01

### **體驗簡介**


場景將提供一臺配置了CentOS 8.5作業系統的ECS例項(雲伺服器)。透過本教程的操作,以Spring和WordPress官方教程為例,帶你體驗Spring Boot+PolarDB-X和WordPress+PolarDB-X的應用開發之旅。[點選前往](https://developer.aliyun.com/adc/scenario/6e7827274b004c7b9fad58ecf5404c6c)![]()


### 實驗準備


1\. 建立實驗資源


開始實驗之前,您需要先建立ECS例項資源。


1.  在實驗室頁面,單擊 **建立資源** 。

    

2.  (可選)在實驗室頁面左側導航欄中,單擊 **雲產品資源** 列表,可檢視本次實驗資源相關資訊(例如IP地址、使用者資訊等)。

    


**說明**:資源建立過程需要1~3分鐘。


2\. 安裝PolarDB-X


本步驟將指導您如何安裝PolarDB-X。


1.  安裝並啟動Docekr。

    


1) 執行如下命令,安裝Docker。


```

curl -fsSL | bash -s docker --mirror Aliyun

```


2) 執行如下命令,啟動Docker。


```

systemctl start docker

```


1.  執行如下命令,安裝PolarDB-X。

    


```

docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x:2.1.0

```


3\. 登入PolarDB-X資料庫


本步驟將指導您如何登入PolarDB-X資料庫。


PolarDB-X支援透過MySQL Client命令列、第三方客戶端以及符合MySQL互動協議的第三方程式程式碼進行連線。本實驗場景主要介紹如何透過MySQL Client命令列連線到PolarDB-X資料庫。


1.  執行如下命令,安裝MySQL。

    


```

yum install mysql -y

```


1.  執行如下命令,檢視MySQL版本號。

    


```

mysql -V

```


返回結果如下,表示您已成功安裝MySQL。


![]()


1.  執行如下命令,登入PolarDB-X資料庫。

    


**說明**


-   本實驗場景中的PolarDB-X資料庫使用者名稱和密碼已預設,請您使用下方命令登入即可。

    

-   如遇到 mysql: \[Warning\] Using a password on the command line interface can be insecure. ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 報錯,請您稍等一分鐘,重新執行登入命令即可。

    


```

mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456

```


返回結果如下,表示您已成功登入PolarDB-X資料庫。


![]()


4.輸入exit退出資料庫。


![]()


4\. 安裝JDK


本步驟將指導您如何在雲伺服器ECS上安裝JDK。


1.  執行如下命令,使用yum安裝JDK 1.8。

    


```

yum -y install java-1.8.0-openjdk*

```


1.  執行如下命令,檢視是否安裝成功。

    


```

java -version

```


返回結果如下,表示您已成功安裝JDK 1.8。


![]()


5\. 體驗Spring Boot+PolarDB-X應用開發


本步驟將指導您如何下載並編輯Spring Boot樣例工程,並連線PolarDB-X資料庫。詳情請參見[Spring Boot官方教程]()。


1.  安裝Git。

    


執行如下命令,安裝Git。


```

yum -y install git

```


1.  下載Spring Boot樣例工程。

    


2.1 執行如下命令,下載Spring Boot樣例工程。


```

git clone

```


2.2 執行如下命令,進入initial目錄。


```

cd gs-accessing-data-mysql/initial

git checkout b8408e3a1e05008811d542b706107d45160556ac

```


2.3 執行如下命令,檢視樣例工程程式碼。


```

ls

```


1.  建立資料庫。

    


3.1 執行如下命令,登入PolarDB-X資料庫。


```

mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456

```


3.2 執行如下SQL語句,建立資料庫db_example。


```

create database db_example;

```


3.3 執行如下SQL語句,建立使用者springuser。


```

create user 'springuser'@'%' identified by 'ThePassword';

```


3.4 執行如下SQL語句,給使用者springuser授權。


```

grant all on db_example.* to 'springuser'@'%';

```


3.5 輸入exit退出資料庫。


![]()


1.  配置application.properties檔案,將資料庫連線到Spring Boot樣例工程。

    


4.1 執行如下命令,開啟application.properties配置檔案。


```

vim src/main/resources/application.properties

```


4.2 按i鍵進入編輯模式,找到引數spring.datasource.url,並將引數值中的埠號修改為8527。


```

spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:8527/db_example

```


4.3 修改完成後的檔案內容如下所示。按下Esc鍵後,輸入:wq後按下Enter鍵儲存並退出。


![]()


1.  建立Entity Model。

    


5.1 執行如下命令,建立一個User類。


```

vim src/main/java/com/example/accessingdatamysql/User.java

```


5.2 將如下程式碼複製貼上到User類中。


```

package com.example.accessingdatamysql;


import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;


@Entity // This tells Hibernate to make a table out of this class

public class User {

  @Id

  @GeneratedValue(strategy=GenerationType.AUTO)

  private Integer id;


  private String name;


  private String email;


  public Integer getId() {

    return id;

  }


  public void setId(Integer id) {

    this.id = id;

  }


  public String getName() {

    return name;

  }


  public void setName(String name) {

    this.name = name;

  }


  public String getEmail() {

    return email;

  }


  public void setEmail(String email) {

    this.email = email;

  }

}

```


5.3 修改完成後的檔案內容如下所示。按下Esc鍵後,輸入:wq後按下Enter鍵儲存並退出。


![]()


1.  建立Repository,儲存使用者記錄。

    


6.1 執行如下命令,建立一個UserRepository類。


```

vim src/main/java/com/example/accessingdatamysql/UserRepository.java

```


6.2 將如下程式碼複製貼上到UserRepository類中。


```

package com.example.accessingdatamysql;


import org.springframework.data.repository.CrudRepository;


import com.example.accessingdatamysql.User;


// This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository

// CRUD refers Create, Read, Update, Delete


public interface UserRepository extends CrudRepository<User, Integer> {


}

```


6.3 修改完成後的檔案內容如下所示。按下Esc鍵後,輸入:wq後按下Enter鍵儲存並退出。


![]()


1.  建立一個Controller類,處理對應用程式的HTTP請求。

    


7.1 執行如下命令,建立一個MainController類。


```

vim src/main/java/com/example/accessingdatamysql/MainController.java

```


7.2 將如下程式碼複製貼上到MainController類中。


```

package com.example.accessingdatamysql;


import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;


@Controller // This means that this class is a Controller

@RequestMapping(path="/demo") // This means URL's start with /demo (after Application path)

public class MainController {

  @Autowired // This means to get the bean called userRepository

         // Which is auto-generated by Spring, we will use it to handle the data

  private UserRepository userRepository;


  @PostMapping(path="/add") // Map ONLY POST Requests

  public @ResponseBody String addNewUser (@RequestParam String name

      , @RequestParam String email) {

    // @ResponseBody means the returned String is the response, not a view name

    // @RequestParam means it is a parameter from the GET or POST request


    User n = new User();

    n.setName(name);

    n.setEmail(email);

    userRepository.save(n);

    return "Saved";

  }


  @GetMapping(path="/all")

  public @ResponseBody Iterable<User> getAllUsers() {

    // This returns a JSON or XML with the users

    return userRepository.findAll();

  }

}

```


7.3 修改完成後的檔案內容如下所示。按下Esc鍵後,輸入:wq後按下Enter鍵儲存並退出。


![]()


1.  建立一個Application。

    


**說明 :**Spring Boot樣例工程中已為您建立好AccessingDataMysqlApplication類,您可跳過此步驟。


8.1 執行如下命令,建立一個AccessingDataMysqlApplication類。


```

vim src/main/java/com/example/accessingdatamysql/AccessingDataMysqlApplication.java

```


8.2 按i鍵進入編輯模式,將如下程式碼複製貼上到User類中。


```

package com.example.accessingdatamysql;


import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication

public class AccessingDataMysqlApplication {


  public static void main(String[] args) {

    SpringApplication.run(AccessingDataMysqlApplication.class, args);

  }


}

```


8.3 修改完成後的檔案內容如下所示。按下Esc鍵後,輸入:wq後按下Enter鍵儲存並退出。


![]()


1.  執行Spring Boot樣例工程。

    


執行如下命令,執行Spring Boot樣例工程。


```

./gradlew bootRun

```


請您耐心等待大約兩分鐘,返回結果如下,表示您成功執行。


![]()


1.  測試。

    


10.1 在實驗頁面,單擊右上角的![](https://ucc.alicdn.com/pic/developer-ecology/18cb282bc9b34e48bc8c0d84918f9bec.png)圖示,建立新的終端視窗。


![]()


10.2 在新的終端視窗中,執行如下命令,增加一條記錄。


```

curl localhost:8080/demo/add -d name=First -d email=username@example.com

```


返回結果如下,表示您成功增加一條記錄。


![]()


10.3 執行如下命令,查詢記錄。


```

curl 'localhost:8080/demo/all' 

```


返回結果如下,您可以查詢到剛剛增加的記錄資訊。


![]()


10.4 執行如下命令,登入PolarDB-X資料庫。


```

mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456

```


10.5 執行如下SQL語句,使用資料庫。


```

use db_example;

```


10.6 執行如下SQL語句,查詢user表。


```

select * from user;

```


返回如下結果,您可以在user表查詢到剛剛增加的記錄。


![]()


10.7 輸入exit退出資料庫。


![]()


6\. (選做)體驗WordPress+PolarDB-X部


署部落格站點


本步驟將指導您如何使用Wordpress的Docker映象和PolarDB-X搭建一個部落格站點。Wordpress提供了Docker映象,方便其快速安裝,詳情請參見[WordPress的Docker Hub主頁]()。


1.  安裝WordPress。

    


1.1 在實驗頁面,切換至第一個終端視窗。按Ctrl+C鍵,停止執行Spring Boot樣例工程。


1.2 執行如下命令,安裝WordPress。


```

docker run --name some-wordpress -p 9090:80 -d wordpress

```


1.  建立WordPress的資料庫。

    


2.1 執行如下命令,登入PolarDB-X資料庫。


```

mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456

```


2.2 執行如下SQL語句,建立資料庫wordpress。


```

create database wordpress MODE='AUTO';

```


2.3 輸入exit退出資料庫。


![]()


1.  配置WordPress。

    


3.1 在您的本機瀏覽器中,開啟新頁籤,訪問的彈性IP>:9090。


**說明**:您需要將<ECS的彈性IP>替換為雲產品資源列表中的ECS的彈性IP。


3.2 在初始化頁面,選擇**簡體中文**,單擊**繼續**。


![]()


3.3 在準備頁面,單擊**現在就開始**。


![]()


3.4 在資料庫配置頁面,參考說明配置資料庫資訊,單擊**提交**。


引數說明:


-   **資料庫名** :預設為 wordpress 。

    

    -   **使用者名稱** :輸入 polardbx_root 。

        

    -   **密碼** :輸入 123456 。

        

    -   **資料庫主機** :輸入 <ECS的彈性IP>:8527 。您需要將 <ECS的彈性IP> 替換為雲產品資源列表中的ECS的彈性IP。

        

    -   **表字首** :預設為 wp_ 。

        


![]()


3.5 在資料庫配置完成頁面,單擊**執行安裝程式**。


![]()


3.6 在資訊配置頁面,參考說明配置相關資訊,單擊安裝WordPress。


引數說明:


-   **站點標題** :輸入站點標題,例如 myblog 。

    

    -   **使用者名稱** :輸入使用者名稱,例如 admin 。

        

    -   **密碼** :輸入密碼。

        

    -   **您的電子郵箱地址** :輸入郵箱地址。建議使用真實有效的郵箱地址,若沒有,可以填寫虛擬郵箱地址,但將無法接收資訊,例如 username@example.com 。

        


![]()


3.7 在成功頁面,單擊**登入**。


![]()


3.8 在登入頁面,依次輸入您的**使用者名稱**和**密碼**,單擊**登入**。


![]()


7\. 瞭解更多


-   如果您想了解更多有關分散式資料庫連線池的最佳實踐,詳情請參見 [如何選擇應用端連結池]() 。

    

-   如果您想下載PolarDB-X原始碼,詳情請參見 [PolarDB-X原始碼]() 。

    

-   關於PolarDB-X說明文件,詳情請參見 [PolarDB-X說明文件]() 。

    

-   如果您對PolarDB-X內部實現原理感興趣,可關注我們的知乎官號 [PolarDB-X]() 。

    


恭喜完成


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69975905/viewspace-2903919/,如需轉載,請註明出處,否則將追究法律責任。

相關文章