上周由于园子后院起火,不得不调兵回去救火,出海记暂时停更,这周继续更新,“出海记”记录的是我们在 AWS 上建设博客园海外站的历程。

在这一记中记录的是我们基于 AWS 免费套餐(Free Tier)创建一个 Amazon RDS for SQL Server 实例,这也是我们第一次使用 AWS RDS,之前只用过阿里云 RDS。

首先进入 AWS RDS 控制台,AWS 在控制台推荐了他们自主研发的云数据库 Amazon Aurora,但我们目前只能用 SQL Server,忽略此推荐,在控制台“创建数据库”卡片中点击创建数据库

云计算之路-出海记:建一个免费仓库 Amazon RDS for SQL Server

进入创建数据库的界面,这是一个长长的“菜单”,有很多食品可供选择,但我们囊中羞涩,只能点免费套餐中的食品。

  • “数据库创建方法”选择标准创建
    云计算之路-出海记:建一个免费仓库 Amazon RDS for SQL Server
  • “引擎选项”-“引擎类型”选择Microsoft SQL Server
  • “引擎选项”-“版本”选择SQL Server Express Edition(注:免费套餐只能选择这个版本),版本号选SQL Server 2017 14.00.3294.2.v1
  • “模板”选免费套餐(注:模板中出现免费套餐的选项,说明这个规格的实例支撑免费套餐)。
  • 在“设置”-“数据库实例标识符”中输入实例名称(支持连字符,不支持下划线),这里输入optcode-db(注:optcode是博客园海外站的暂用域名)
  • 在“设置”-“凭证设置”-“主用户名”中输入数据库账户用户名(支持下划线,不支持连字符),然后输入密码
  • “数据库实例大小”真能选小份(db.t2.micro),这是免费套餐仅能享用的规格。
  • 在“存储”部分,“存储类型”选默认的通用型(SSD),“分配的存储空间”选默认的20GiB(这也是免费套餐支持的最大存储空间),去选启用存储自动扩展以免产生额外的费用
    云计算之路-出海记:建一个免费仓库 Amazon RDS for SQL Server
  • “连接”就用默认的VPC
  • “Microsoft SQL Server Windows 身份验证”就用默认的不启用
  • “其他配置”就用默认值。
  • 确认一下“月度估算费用”中是否免费套餐
    云计算之路-出海记:建一个免费仓库 Amazon RDS for SQL Server

最后,点击“创建数据库”按钮下单。

云计算之路-出海记:建一个免费仓库 Amazon RDS for SQL Server

这时控制台会提示:

正在创建数据库 optcode-db。
您的数据库可能需要几分钟时间才能启动。

等了10分钟左右,数据库创建好了。

AWS 没有提供 SQL Server 的 web 管理控制台,需要通过微软提供的 SQL Server 客户端管理工具 SQL Server Management Studio 或者 mssql-cli 管理数据库,这里我们选择命令行工具 mssql-cli 。

用免费套餐创建1台 Ubuntu 18.04 EC2 服务器用于安装 mssql-cli ,参考 云计算之路-出海记:整一台 AWS 免费云服务器

安装 mssql-cli

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/prod
sudo apt-get update
sudo apt-get install mssql-cli
sudo apt-get install -f

安装后之后用 mssql-cli 命令连接 RDS for SQL Server

mssql-cli -S optcode-db.cddc6wiequiq.us-west-1.rds.amazonaws.com

报错

Error message: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server)

出现上面的错误是由于运行 mssql-cli 命令的 EC2 服务器与 RDS 实例不在同一个安全组。

进入 EC2 控制台选中对应的实例,点击“操作”->“安全”->“更改安全组”,将这台服务器加入到 RDS 实例所在的安全组,就能成功连接了。

mssql-cli 连接上 RDS 实例之后,看一下实例中当前有哪些数据库?

master> \ld
Time: 0.453s
+----------+
| name     |
|----------|
| master   |
| tempdb   |
| model    |
| msdb     |
| rdsadmin |
+----------+
(5 rows affected)

接下来为海外站博客系统创建一个空数据库 optcode_blog

master> CREATE DATABASE optcode_blog

最后导入博客系统数据库结构的创建脚本

$ mssql-cli -S xxx -U yyy -P \'zzz\' -d optcode_blog -i optcode_blog.sql
Commands completed successfully.

AWS 巨轮上存放数据的免费仓库就这样建好了,这一记就记到这里。

optcode_blog> \lt
Time: 0.454s
+----------------+-------------------------------+
| table_schema   | table_name                    |
|----------------+-------------------------------|
| dbo            | blog_Images                   |
...