Last Updated: 2024-07-06
YugabyteDBは、PostgresSQL互換の分散SQLデータベースです。自動シャーディングによるデータの分散配置とレプリケーションを行うため、柔軟なスケールや高い耐障害性、ゼロダウンタイムでのメンテナンスを行うことができます。
このハンズオンではYugabyteDBのDockerイメージを使用して、ローカル環境で3つのコンテナで構成されるクラスタを作成します。テーブルを作成したときにどのようにデータ (タブレット) が配置されるか、スケールアウトやスケールインによってどう変化するかを確認します。
以下の内容を実施します:
docker pull yugabytedb/yugabyte
mkdir ~/yb_data
docker network create yb-network
<Windowsの場合>
docker run -d --name yugabyte-n1 --net yb-network `
-p 15433:15433 -p 7001:7000 -p 9101:9000 -p 5433:5433 `
-v ~/yb_data/node1:/home/yugabyte/yb_data --restart unless-stopped `
yugabytedb/yugabyte `
bin/yugabyted start `
--base_dir=/home/yugabyte/yb_data --background=false
<Macの場合>
docker run -d --name yugabyte-n1 --net yb-network \
-p 15433:15433 -p 7001:7000 -p 9001:9000 -p 5433:5433 \
-v ~/yb_data/node1:/home/yugabyte/yb_data --restart unless-stopped \
yugabytedb/yugabyte \
bin/yugabyted start \
--base_dir=/home/yugabyte/yb_data --background=false
docker ps
<Windowsの場合>
docker run -d --name yugabyte-n2 --net yb-network `
-p 15434:15433 -p 7002:7000 -p 9102:9000 -p 5434:5433 `
-v ~/yb_data/node2:/home/yugabyte/yb_data --restart unless-stopped `
yugabytedb/yugabyte `
bin/yugabyted start --join=yugabyte-n1 `
--base_dir=/home/yugabyte/yb_data --background=false
docker run -d --name yugabyte-n3 --net yb-network `
-p 15435:15433 -p 7003:7000 -p 9103:9000 -p 5435:5433 `
-v ~/yb_data/node3:/home/yugabyte/yb_data --restart unless-stopped `
yugabytedb/yugabyte `
bin/yugabyted start --join=yugabyte-n1 `
--base_dir=/home/yugabyte/yb_data --background=false
<Macの場合>
docker run -d --name yugabyte-n2 --net yb-network \
-p 15434:15433 -p 7002:7000 -p 9002:9000 -p 5434:5433 \
-v ~/yb_data/node2:/home/yugabyte/yb_data --restart unless-stopped \
yugabytedb/yugabyte \
bin/yugabyted start --join=yugabyte-n1 \
--base_dir=/home/yugabyte/yb_data --background=false
docker run -d --name yugabyte-n3 --net yb-network \
-p 15435:15433 -p 7003:7000 -p 9003:9000 -p 5435:5433 \
-v ~/yb_data/node3:/home/yugabyte/yb_data --restart unless-stopped \
yugabytedb/yugabyte \
bin/yugabyted start --join=yugabyte-n1 \
--base_dir=/home/yugabyte/yb_data --background=false
docker exec -it yugabyte-n1 bash -c '/home/yugabyte/bin/ysqlsh --echo-queries --host $(hostname)'
CREATE DATABASE northwind;
\c northwind
\i share/northwind_ddl.sql
\dt
\i share/northwind_data.sql
select * from categories;
docker stop yugabyte-n2
docker exec -it yugabyte-n1 bash -c '/home/yugabyte/bin/ysqlsh --echo-queries --host $(hostname)'
\c northwind
select * from categories;
docker start yugabyte-n2
<Windowsの場合>
docker run -d --name yugabyte-n4 --net yb-network `
-p 15436:15433 -p 7004:7000 -p 9104:9000 -p 5436:5433 `
-v ~/yb_data/node4:/home/yugabyte/yb_data --restart unless-stopped `
yugabytedb/yugabyte `
bin/yugabyted start --join=yugabyte-n1 `
--base_dir=/home/yugabyte/yb_data --background=false
<Macの場合>
docker run -d --name yugabyte-n4 --net yb-network \
-p 15436:15433 -p 7004:7000 -p 9004:9000 -p 5436:5433 \
-v ~/yb_data/node4:/home/yugabyte/yb_data --restart unless-stopped \
yugabytedb/yugabyte \
bin/yugabyted start --join=yugabyte-n1 \
--base_dir=/home/yugabyte/yb_data --background=false
docker stop yugabyte-n4
docker start yugabyte-n4
docker exec -it yugabyte-n1 bash -c '/home/yugabyte/bin/yb-admin -master_addresses <tserver_master_addrs> change_blacklist ADD <server_broadcast_addresses>'
YugabyteDB のDockerイメージは、ローカル環境でYugabyteDBの動作を確認するのに適しています。yugabytedコマンドを使用することで、masterプロセスとtserverプロセスを個別起動しなくてもクラスタのサービスを開始/停止することができます。
yugabytedはUIも提供していますが、全てのオペレーションはCLIでの操作になります。UIからの操作やオペレーションの自動化、より詳細なメトリクスの監視を行いたい場合は、YugabyteDB Anywhereを使用することをお勧めします。
以下のハンズオンはYugabyteDB Managed向けに作成されていますが、ローカル環境でも実行可能です。是非お試しください。