このトピックでは、Rust を使用して LindormTable に接続し、使用する方法について説明します。
前提条件
インスタンスで MySQL 互換機能が有効になっていること。詳細については、「MySQL 互換機能を有効にする」をご参照ください。
クライアントの IP アドレスが Lindorm インスタンスのホワイトリストに追加されていること。詳細については、「ホワイトリストを構成する」をご参照ください。
手順
Rust をインストールします。詳細については、「Install Rust」をご参照ください。
次の依存関係を
Cargo.toml
ファイルに追加します。[dependencies] mysql="*"
mysql を
*
に設定すると、デフォルトで最新バージョンの MySQL が使用されます。接続パラメータを構成します。
let opts = OptsBuilder::new() .ip_or_hostname(Some("ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com")) .user(Some("user")) .pass(Some("test")) .db_name(Some("default")) .tcp_port(33060);
パラメータ
pass
パラメータ
説明
ip_or_hostname
MySQL 用の LindormTable エンドポイント。 エンドポイントの取得方法については、「エンドポイントを表示する」をご参照ください。
重要アプリケーションが ECS インスタンスにデプロイされている場合は、セキュリティとネットワークレイテンシを向上させるために、VPC を使用して Lindorm インスタンスに接続することをお勧めします。
アプリケーションがローカルサーバーにデプロイされており、インターネット経由で Lindorm インスタンスに接続する必要がある場合は、Lindorm コンソールでインスタンスのインターネットエンドポイントを有効にするために、次の手順を実行します。左側のナビゲーションペインで、
を選択します。[ワイドテーブルエンジン] タブで、[パブリックエンドポイントを有効にする] をクリックします。VPC を使用して Lindorm インスタンスにアクセスする場合は、ip_or_hostname の値に [lindormtable VPC エンドポイント(mysql 用)] を指定します。インターネットを使用して Lindorm インスタンスにアクセスする場合は、ip_or_hostname の値に [lindormtable インターネットエンドポイント(mysql 用)] を指定します。
user
パスワードを忘れた場合は、LindormTable のクラスタ管理システムでパスワードを変更できます。詳細については、「ユーザーの管理」をご参照ください。
LindormTable に接続するために使用するパスワード。
db_name
接続先のデータベースの名前。デフォルトでは、クライアントは default という名前のデータベースに接続されます。
tcp_port
MySQL を使用して LindormTable にアクセスするために使用するポート。このパラメータの値は 33060 に固定されています。
接続を確立し、LindormTable SQL を使用して LindormTable で操作を実行します。次のコードブロックは、LindormTable SQL を使用してテーブルを作成する方法の例を示しています。
let pool = Pool::new(opts).unwrap(); let mut conn = pool.get_conn().unwrap(); // Create a table. // テーブルを作成します。 conn.query_drop( r"create table if not exists user_test(id int, name varchar,age int, primary key(id))").expect("Failed to create table"); // テーブルの作成に失敗しました。
次のコマンドを実行して、Rust プロジェクトをビルドします。
cargo build
次のコマンドを実行して、Rust プロジェクトを実行します。
cargo run
サンプルコード
次のコードは、Rust を使用して LindormTable に接続し、使用する方法の完全な例を示しています。
use mysql::*;
use mysql::prelude::*;
fn main() {
// Specify the LindormTable endpoint for MySQL, username and password used to connect to LindormTable, the database that you want to connect, and the port used to connect to LindormTable. // LindormTable の MySQL エンドポイント、LindormTable に接続するために使用するユーザー名とパスワード、接続するデータベース、LindormTable に接続するために使用するポートを指定します。
let opts = OptsBuilder::new()
.ip_or_hostname(Some("ld-xxxx-sql-lindorm.lindorm.rds.aliyuncs.com"))
.user(Some("root"))
.pass(Some("root"))
.db_name(Some("default"))
.tcp_port(33060);
let pool = Pool::new(opts).unwrap();
let mut conn = pool.get_conn().unwrap();
// Create a table. // テーブルを作成します。
conn.query_drop( r"create table if not exists user_test(id int, name varchar,age int, primary key(id))").expect("Failed to create table"); // テーブルの作成に失敗しました。
// Insert data to the table. // テーブルにデータを挿入します。
conn.exec_drop(r"upsert into user_test(id,name,age) values(?,?,?)",(1,"zhangsan",17)).expect("Failed to insert data 1"); // データ 1 の挿入に失敗しました。
conn.exec_drop(r"upsert into user_test(id,name,age) values(?,?,?)",(2,"lisi",27)).expect("Failed to insert data 2"); // データ 2 の挿入に失敗しました。
// Query data in the table. // テーブル内のデータをクエリします。
let result = conn.query(r"select * from user_test").expect("Failed to select"); // 選択に失敗しました。
for row in result {
let(id, name, age):(i32, String, i32) = from_row(row);
println!("Id: {}, Name: {}, Age: {}",id, name, age);
}
}
次の結果が返されます。
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
Running `target/debug/hello_word`
Id: 1, Name: zhangsan, Age: 17
Id: 2, Name: lisi, Age: 27