如何使用 PolarDB-X
1. 创建实验资源
开始实验之前,您需要先创建ECS实例资源。
- 在实验室页面,单击创建资源。
- (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。
说明 :资源创建过程需要1~3分钟。
2. 安装PolarDB-X
本步骤将指导您如何安装PolarDB-X。
- 安装并启动Docekr。
1) 执行如下命令,安装Docker。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2) 执行如下命令,启动Docker。
systemctl start docker
- 执行如下命令,安装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数据库。
- 执行如下命令,安装MySQL。
yum install mysql -y
- 执行如下命令,查看MySQL版本号。
mysql -V
返回结果如下,表示您已成功安装MySQL。
- 执行如下命令,登录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。
- 执行如下命令,使用yum安装JDK 1.8。
yum -y install java-1.8.0-openjdk*
- 执行如下命令,查看是否安装成功。
java -version
返回结果如下,表示您已成功安装JDK 1.8。
5. 体验Spring Boot+PolarDB-X应用开发
本步骤将指导您如何下载并编辑Spring Boot样例工程,并连接PolarDB-X数据库。详情请参见Spring Boot官方教程。
- 安装Git。
执行如下命令,安装Git。
yum -y install git
- 下载Spring Boot样例工程。
2.1 执行如下命令,下载Spring Boot样例工程。
git clone https://github.com/spring-guides/gs-accessing-data-mysql.git
2.2 执行如下命令,进入initial目录。
cd gs-accessing-data-mysql/initial git checkout b8408e3a1e05008811d542b706107d45160556ac
2.3 执行如下命令,查看样例工程代码。
ls
- 创建数据库。
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退出数据库。
- 配置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键保存并退出。
- 创建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键保存并退出。
- 创建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键保存并退出。
- 创建一个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键保存并退出。
- 创建一个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键保存并退出。
- 运行Spring Boot样例工程。
执行如下命令,运行Spring Boot样例工程。
./gradlew bootRun
请您耐心等待大约两分钟,返回结果如下,表示您成功运行。
- 测试。
10.1 在实验页面,单击右上角的图标,创建新的终端窗口。
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主页。
- 安装WordPress。
1.1 在实验页面,切换至第一个终端窗口。按Ctrl+C键,停止运行Spring Boot样例工程。
1.2 执行如下命令,安装WordPress。
docker run --name some-wordpress -p 9090:80 -d wordpress
- 创建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退出数据库。
- 配置WordPress。
3.1 在您的本机浏览器中,打开新页签,访问http://:9090。
说明 :您需要将替换为云产品资源列表中的ECS的弹性IP。
3.2 在初始化页面,选择简体中文,单击继续。
3.3 在准备页面,单击现在就开始。
3.4 在数据库配置页面,参考说明配置数据库信息,单击提交。
参数说明:
- 数据库名:默认为wordpress。
- 用户名:输入polardbx_root。
- 密码:输入123456。
- 数据库主机:输入:8527。您需要将替换为云产品资源列表中的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。
实验链接:https://developer.aliyun.com/adc/scenario/6e7827274b004c7b9fad58ecf5404c6c