<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NewSQL &#8211; SRA OSS Tech Blog</title>
	<atom:link href="https://www.sraoss.co.jp/tech-blog/tag/newsql/feed/index.xml" rel="self" type="application/rss+xml" />
	<link>https://www.sraoss.co.jp/tech-blog/</link>
	<description>OSS専門の技術ブログ。PostgreSQL、Zabbixを中心に10種類以上のOSSの解説、アップデート情報、運用ヒントを提供。</description>
	<lastBuildDate>Fri, 30 Oct 2026 08:33:28 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2018/07/blog-icon-150x150.png</url>
	<title>NewSQL &#8211; SRA OSS Tech Blog</title>
	<link>https://www.sraoss.co.jp/tech-blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>YugabyteDB Aeon Self-Managed (旧 YugabyteDB Anywhere) の使い方</title>
		<link>https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-aeon-self-managed/</link>
		
		<dc:creator><![CDATA[彭 博 (Bo Peng)]]></dc:creator>
		<pubDate>Wed, 30 Oct 2024 00:23:10 +0000</pubDate>
				<category><![CDATA[YugabyteDB]]></category>
		<category><![CDATA[NewSQL]]></category>
		<category><![CDATA[YugabyteDB Aeon]]></category>
		<category><![CDATA[YugabyteDB Anywhere]]></category>
		<category><![CDATA[分散SQL]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=15510</guid>

					<description><![CDATA[分散データベース YugabyteDB は、運用・管理の自動化機能やエンタープライズ向けのサポートが追加された有償版「YugabyteDB Aeon」以外にも、自動化機能やサポートがない代わりに、無償で利用できるオープン ...]]></description>
										<content:encoded><![CDATA[<p>分散データベース YugabyteDB は、運用・管理の自動化機能やエンタープライズ向けのサポートが追加された有償版「YugabyteDB Aeon」以外にも、自動化機能やサポートがない代わりに、無償で利用できるオープンソースソフトウェア (OSS) 版も提供されています。</p>
<p>前回の記事では、<a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-oss/">YugabyteDB OSS版の使い方</a>について紹介しました。</p>
<p>今回は有償版 <a href="https://docs.yugabyte.com/preview/yugabyte-platform/" target="_blank" rel="noopener">YugabyteDB Aeon Self-Managed (旧 YugabyteDB Anywhere)</a> の使い方について紹介します。</p>
<p><span id="more-15510"></span></p>
<p><a href="https://docs.yugabyte.com/preview/yugabyte-platform/" target="_blank" rel="noopener">YugabyteDB Aeon Self-Managed</a> (以下、YugabyteDB Anywhere) のデプロイおよび管理は、Web UI から行うか、以下の自動化ツールを利用して行います。本記事では、Web UIからの操作方法について紹介します。</p>
<ul>
<li><a href="https://docs.yugabyte.com/preview/yugabyte-platform/anywhere-automation/anywhere-api/">REST API</a></li>
<li><a href="https://docs.yugabyte.com/preview/yugabyte-platform/anywhere-automation/anywhere-terraform/">Terraform</a></li>
<li><a href="https://docs.yugabyte.com/preview/yugabyte-platform/anywhere-automation/anywhere-cli/">CLI</a></li>
<li><a href="https://docs.yugabyte.com/preview/yugabyte-platform/anywhere-automation/yb-kubernetes-operator/">Kubernetes Operator</a></li>
</ul>
<h2>YugabyteDB Anywhere の構成</h2>
<p>YugabyteDB Anywhere は YugabyteDB データベースクラスタのデプロイと管理を行うコントロールプレーン (以下、YBA) と Universe と呼ばれるデータベースノードで構成されています。</p>
<p>構成図は次の通りです。</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-15589" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8.png" alt="" width="3357" height="1765" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8.png 3357w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8-300x158.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8-1024x538.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8-768x404.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8-1536x808.png 1536w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8-2048x1077.png 2048w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8-304x160.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/1fc5e4e035f6f05d3b3fe1fc4739eea8-282x148.png 282w" sizes="(max-width: 3357px) 100vw, 3357px" /></p>
<h2>デプロイ環境およびバージョン情報</h2>
<p>YugabyteDB Anywhere は、その名前の通り、パブリッククラウド、Kubernetes、物理サーバ、仮想環境、プライベートクラウドなど、さまざまなプラットフォームに対応しています。</p>
<p>本記事では、同一リージョン内の3つの AZ に配置された EC2 インスタンスに YugabyteDB Anywhere をデプロイする方法を紹介します。</p>
<p>クラスタ構成は次の通りです。</p>
<p><img decoding="async" class="aligncenter size-full wp-image-15597" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws.png" alt="" width="3486" height="1986" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws.png 3486w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws-300x171.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws-1024x583.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws-768x438.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws-1536x875.png 1536w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws-2048x1167.png 2048w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws-304x173.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-aws-282x161.png 282w" sizes="(max-width: 3486px) 100vw, 3486px" /></p>
<h2>事前準備</h2>
<ul>
<li>YugabyteDB Anywhere ライセンスの準備</li>
<li>サーバの準備<br />
YBA をインストールするサーバを準備します。YBA サーバのハードウェアやソフトウェア要件、対応OSについては<a href="https://docs.yugabyte.com/stable/yugabyte-platform/prepare/server-yba/">こちら</a>を参照してください。<br />
オンプレミスで利用する場合は、データベースノード用のサーバを事前に準備する必要がありますが、本記事ではクラウド環境を利用するため、データベースノード用のサーバは自動的に作成され、プロビジョニングされるため、事前の準備は不要です。</li>
<li>ネットワークの設定<br />
クラウド環境を利用する場合、使用する VPC やサブネット、セキュリティグループを事前に設定しておきます。YBA およびデータベースノードの特定ポート (構成図参照) へのアクセスを許可しておく必要があります。</li>
</ul>
<h2>YBA のインストール</h2>
<p>以下のコマンドを実行し、YBA をインストールします。</p>
<pre>$ wget https://downloads.yugabyte.com/releases/2024.1.3.0/yba_installer_full-2024.1.3.0-b105-linux-x86_64.tar.gz
$ tar -xf yba_installer_full-2024.1.3.0-b105-linux-x86_64.tar.gz
$ cd yba_installer_full-2024.1.3.0-b105/
$ sudo ./yba-ctl preflight
$ sudo ./yba-ctl install -l /path/to/license</pre>
<p>インストールが完了すると、ブラウザから YBA の管理画面 <a href="https://&lt;yugabytedbanywhere-host-ip&gt;/register">https://&lt;yugabytedbanywhere-host-ip&gt;/register</a> にアクセスし、Admin ユーザを作成し、ログインします。</p>
<p><img decoding="async" class="aligncenter size-full wp-image-15513" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-login.png" alt="" width="366" height="279" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-login.png 366w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-login-300x229.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-login-281x214.png 281w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-login-282x215.png 282w" sizes="(max-width: 366px) 100vw, 366px" /></p>
<p>ログインに成功すると、以下のダッシュボードが表示されます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15514" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-dashboard.png" alt="" width="699" height="281" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-dashboard.png 699w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-dashboard-300x121.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-dashboard-304x122.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-dashboard-282x113.png 282w" sizes="auto, (max-width: 699px) 100vw, 699px" /></p>
<h2>クラウドプロバイダーの設定</h2>
<p>次に、クラウドプロバイダーの情報を登録します。</p>
<p>今回は AWS にデータベースクラスタを作成するため、「Integrations」 &gt;「Create AWS Config」を選択します。</p>
<p>表示された画面で、アクセスキーとシークレットアクセスキーを入力します。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15541" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-1.png" alt="" width="985" height="486" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-1.png 985w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-1-300x148.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-1-768x379.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-1-304x150.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-1-282x139.png 282w" sizes="auto, (max-width: 985px) 100vw, 985px" /></p>
<p>続いて、データベースノードがデプロイされるリージョンや AZ などの情報を追加します。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15585" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2.png" alt="" width="2752" height="2067" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2.png 2752w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2-300x225.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2-1024x769.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2-768x577.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2-1536x1154.png 1536w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2-2048x1538.png 2048w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2-285x214.png 285w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-2-282x212.png 282w" sizes="auto, (max-width: 2752px) 100vw, 2752px" /></p>
<p>「Add Linux Version」を選択して、データベースノードのCPUアーキテクチャやAMIなどの情報を入力します。</p>
<h2><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15547" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-3.png" alt="" width="714" height="722" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-3.png 714w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-3-297x300.png 297w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-3-212x214.png 212w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-3-257x260.png 257w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-provider-3-120x120.png 120w" sizes="auto, (max-width: 714px) 100vw, 714px" /></h2>
<h2>Universe の作成</h2>
<p>YugabyteDB Anywhere では YugabyteDB クラスタ全体を管理する単位を Universe と呼びます。</p>
<p>ここでは、Universe を作成する手順について説明します。</p>
<p>今回は以下の構成で Universe を作成します。</p>
<table>
<thead>
<tr>
<th rowspan="2"></th>
<th><strong>ノード#1</strong></th>
<th><strong>ノード#2</strong></th>
<th><strong>ノード#3</strong></th>
</tr>
</thead>
<tbody>
<tr>
<th nowrap="nowrap"><strong>AZ</strong></th>
<td>ap-northeast-1a</td>
<td>ap-northeast-1c</td>
<td>ap-northeast-1d</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>リージョン</strong></th>
<td colspan="3">ap-northeast-1</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>ami</strong></th>
<td colspan="3">ami-04d3ba818c434b384<br />
(Red Hat Enterprise Linux version 9 (HVM))</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>EC2タイプ</strong></th>
<td colspan="3">m6i.2xlarge</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>ディスク容量</strong></th>
<td colspan="3">250GB</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>データベースバージョン</strong></th>
<td colspan="3">2.23.0.0-b710</td>
</tr>
</tbody>
</table>
<p>サイドバーから「Dashboard」または「Universes」を選択し、「Create Universe」をクリックします。必要な情報を入力し、作成ボタンをクリックします。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15549" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-1.png" alt="" width="884" height="722" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-1.png 884w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-1-300x245.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-1-768x627.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-1-262x214.png 262w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-1-282x230.png 282w" sizes="auto, (max-width: 884px) 100vw, 884px" /></p>
<p>進捗は画面上で確認できます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15551" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-2.png" alt="" width="1282" height="500" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-2.png 1282w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-2-300x117.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-2-1024x399.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-2-768x300.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-2-304x119.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-2-282x110.png 282w" sizes="auto, (max-width: 1282px) 100vw, 1282px" /></p>
<p>完了すると、以下のような画面が表示されます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15552" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-3.png" alt="" width="1282" height="294" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-3.png 1282w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-3-300x69.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-3-1024x235.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-3-768x176.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-3-304x70.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-create-universe-3-282x65.png 282w" sizes="auto, (max-width: 1282px) 100vw, 1282px" /></p>
<p>これで、Universe の作成が完了です。</p>
<h2>Universeとデータベースノードの管理</h2>
<p>ここでは、Universe とデータベースノードの管理方法について紹介します。</p>
<p>Universe のアップグレード、スケールアウト/スケールイン、構成変更などの管理は、作成済みの Universe を選択し、「Actions」&gt;「Edit Universe」から行います。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15557" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-universe-actions-1.png" alt="" width="1282" height="608" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-universe-actions-1.png 1282w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-universe-actions-1-300x142.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-universe-actions-1-1024x486.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-universe-actions-1-768x364.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-universe-actions-1-304x144.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-universe-actions-1-282x134.png 282w" sizes="auto, (max-width: 1282px) 100vw, 1282px" /></p>
<p>ここでは、3ノードから6ノードへのスケールアウト方法を説明します。</p>
<p>「Actions」&gt;「Edit Universe」を選択すると、Universe の設定画面が表示されます。「Total Nodes」を 3 から 6 に変更し、「Save」ボタンをクリックすると、ノードが追加されます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15558" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-scaleout-1.png" alt="" width="1282" height="506" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-scaleout-1.png 1282w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-scaleout-1-300x118.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-scaleout-1-1024x404.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-scaleout-1-768x303.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-scaleout-1-304x120.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-scaleout-1-282x111.png 282w" sizes="auto, (max-width: 1282px) 100vw, 1282px" /></p>
<p>各データベースノードの管理（例えば、ノードの再起動・停止、ログのダウンロード、スロークエリやライブクエリの表示など）は、Universe のノードタブ内にある各ノードの「Actions」ボタンから行えます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15559" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-node-actions-1.png" alt="" width="1282" height="500" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-node-actions-1.png 1282w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-node-actions-1-300x117.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-node-actions-1-1024x399.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-node-actions-1-768x300.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-node-actions-1-304x119.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-node-actions-1-282x110.png 282w" sizes="auto, (max-width: 1282px) 100vw, 1282px" /></p>
<h2>バックアップ</h2>
<p>バックアップの設定は、サイドバーの「backups」を選択し、「Backups」、「Scheduled Backup Policies」、「Point-in-time Recovery」タブから行います。</p>
<ul>
<li>Backups (オンデマンドバックアップ)/Scheduled Backup Policies (定期バックアップ)</li>
</ul>
<p>オンデマンドバックアップの実行や定期バックアップの設定が可能です。バックアップデータは、事前に設定したストレージ（例えば、Amazon S3）に保存されます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15519" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/backup.png" alt="" width="983" height="355" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/backup.png 983w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/backup-300x108.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/backup-768x277.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/backup-304x110.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/backup-282x102.png 282w" sizes="auto, (max-width: 983px) 100vw, 983px" /></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15520" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/scheduled-backup.png" alt="" width="1035" height="355" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/scheduled-backup.png 1035w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/scheduled-backup-300x103.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/scheduled-backup-1024x351.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/scheduled-backup-768x263.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/scheduled-backup-304x104.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/scheduled-backup-282x97.png 282w" sizes="auto, (max-width: 1035px) 100vw, 1035px" /></p>
<ul>
<li>Point-in-time Recovery (PITR)</li>
</ul>
<p>特定のデータベースで PITR を有効にすると、1 日に 1 回データのスナップショットが取得され、各スナップショットには継続的な変更履歴が保持されます。そのスナップショットを使ってスナップショット内の任意の時点にリカバリが可能です。デフォルトではスナップショットは 7 日間保持され、過去 7 日間の任意の時点にリカバリできます。スナップショットの保持期間は設定で変更可能ですが、保持期間を延長するとディスク容量の消費が増加するため、注意が必要です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15521" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-pitr.png" alt="" width="960" height="339" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-pitr.png 960w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-pitr-300x106.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-pitr-768x271.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-pitr-304x107.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-pitr-282x100.png 282w" sizes="auto, (max-width: 960px) 100vw, 960px" /></p>
<h2>モニタリング</h2>
<p>OSS版ではメトリクスの収集や可視化のために Prometheus や Grafana を別途構築する必要がありますが、YugabyteDB Anywhere では外部ツールを導入せずに、標準でモニタリング機能を利用できます。</p>
<p>「Universes」 &gt; 「Metrics」タブから、リソース監視やパフォーマンス監視のグラフを確認できます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15517" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-resource.png" alt="" width="732" height="493" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-resource.png 732w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-resource-300x202.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-resource-304x205.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-resource-282x190.png 282w" sizes="auto, (max-width: 732px) 100vw, 732px" /></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15518" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-performance.png" alt="" width="729" height="478" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-performance.png 729w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-performance-300x197.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-performance-304x199.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/yba-monitoring-performance-282x185.png 282w" sizes="auto, (max-width: 729px) 100vw, 729px" /></p>
<h2>トラブルシューティングや性能問題の解決に役立つ機能</h2>
<p>PostgreSQL では、トラブルシューティングの際に、pg_stat_activity ビューを使用して現在実行中の処理や開始時刻を確認したり、遅いクエリをログに出力する方法がありますが、YugabyteDB Anywhere では Web UI からこれらの情報を簡単に確認できます。</p>
<p>「Live Queries」タブでは、実行中のクエリや経過時間、クライアント情報などを確認できます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15522" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/live-query.png" alt="" width="1041" height="326" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/live-query.png 1041w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/live-query-300x94.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/live-query-1024x321.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/live-query-768x241.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/live-query-304x95.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/live-query-282x88.png 282w" sizes="auto, (max-width: 1041px) 100vw, 1041px" /></p>
<p>「Slow Queries」タブでは、スロークエリの確認が可能です。また、特定のクエリで絞り込んで表示することもできます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15523" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/slow-query.png" alt="" width="1126" height="341" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/slow-query.png 1126w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/slow-query-300x91.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/slow-query-1024x310.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/slow-query-768x233.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/slow-query-304x92.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/slow-query-282x85.png 282w" sizes="auto, (max-width: 1126px) 100vw, 1126px" /></p>
<h2>YugabyteDB Anywhere のメリット</h2>
<p>ここまで、YugabyteDB Anywhere の使い方について紹介しました。</p>
<p>最後に、YugabyteDB OSS版と比較した YugabyteDB Anywhere のメリットをまとめます。</p>
<table>
<thead>
<tr>
<th rowspan="2"></th>
<th><strong>YugabyteDB OSS版</strong></th>
<th><strong>YugabyteDB Anywhere</strong></th>
</tr>
</thead>
<tbody>
<tr>
<th nowrap="nowrap"><strong>運用方法</strong></th>
<td>コマンドラインから</td>
<td>Web UIから</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>セキュリティ面</strong></th>
<td>あらかじめ証明書を作成する</td>
<td>証明書の自動生成<br />
無停止証明書更新</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>モニタリング</strong></th>
<td>外部ツール導入</td>
<td>標準機能</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>障害対応</strong></th>
<td>データベースにアクセスしてログの確認やクエリの実行</td>
<td>Web UIからライブクエリ・スロークエリを確認、ログ収集</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>24/365エンタープライズサポート</strong></th>
<td>なし</td>
<td>あり</td>
</tr>
</tbody>
</table>
<p>まず、運用方法に関して、OSS版ではコマンドライン操作が必要ですが、YugabyteDB Anywhere では Web UIを通じてデプロイや運用管理ができるため、運用管理の手間を大幅に削減できます。</p>
<p>次にセキュリティ面では、OSS版が事前に証明書を作成する必要があるのに対し、YugabyteDB Anywhere では証明書の自動生成や無停止での証明書更新がサポートされており、セキュリティ強化が容易です。</p>
<p>モニタリングについても、OSS版では Prometheus や Grafana などの外部ツールの導入が必要ですが、YugabyteDB Anywhere には標準でモニタリングとアラート通知機能が搭載されています。</p>
<p>障害対応においては、OSS版ではデータベースノードにアクセスしてログを確認し、クエリを実行する必要があり、専門知識が要求され、調査に時間がかかることがあります。しかし、YugabyteDB Anywhere では Web UI を介してパフォーマンスの確認やライブクエリ、スロークエリのモニタリング、ログのダウンロードが行えるため、対応にかかる手間や時間が大幅に削減されます。</p>
<p>さらに、OSS版では 24/365 のエンタープライズサポートが提供されていないのに対し、YugabyteDB Anywhere ではこのサポートが含まれているため、安心して運用を続けられる点も大きなメリットです。</p>
<h2>おわりに</h2>
<p>前回の記事（<a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-oss/">YugabyteDB OSS版の使い方</a>）に続き、今回は有償版製品である YugabyteDB Anywhere の使い方やメリットについて紹介しました。</p>
<p>YugabyteDB Anywhere は、運用・管理の自動化やトラブルシューティングに役立つ機能が追加されており、エンタープライズ向けの 24/365 サポートも提供されています。そのため、本番環境での利用においても安心して運用を続けられることから、YugabyteDB Anywhere の利用を強く推奨いたします。</p>
<p>これらの記事が、YugabyteDB の製品を検討される際にお役に立てれば幸いです。</p>
<div>
<a href="https://www.sraoss.co.jp/prod_serv/consulting/yugabytedb/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-yugabyte" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、YugabyteDB のコンサルティングサービスを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>YugabyteDB OSS版の使い方</title>
		<link>https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-oss/</link>
		
		<dc:creator><![CDATA[彭 博 (Bo Peng)]]></dc:creator>
		<pubDate>Wed, 30 Oct 2024 00:20:17 +0000</pubDate>
				<category><![CDATA[YugabyteDB]]></category>
		<category><![CDATA[NewSQL]]></category>
		<category><![CDATA[分散SQL]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=15308</guid>

					<description><![CDATA[分散データベース YugabyteDB は、運用・管理の自動化機能やエンタープライズ向けのサポートが追加された有償版「YugabyteDB Aeon」以外にも、自動化機能やサポートがない代わりに、無償で利用できるオープン ...]]></description>
										<content:encoded><![CDATA[<p>分散データベース YugabyteDB は、運用・管理の自動化機能やエンタープライズ向けのサポートが追加された有償版「YugabyteDB Aeon」以外にも、自動化機能やサポートがない代わりに、無償で利用できるオープンソースソフトウェア (OSS) 版も提供されています。</p>
<p>以前の記事では、<a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-intro/">YugabyteDB の概要</a>、<a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-usecase/" >ユースケース</a>および<a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-deployment/">構成パターン</a>について紹介しました。</p>
<p>今回は、実際に YugabyteDB を使ってみたい方に向けて、OSS 版の使い方として以下について紹介します。</p>
<p><span id="more-15308"></span></p>
<ul>
<li>デプロイ</li>
<li>接続方法</li>
<li>設定変更</li>
<li>バックアップ・リストア</li>
<li>モニタリング</li>
</ul>
<h2>デプロイ環境およびバージョン情報</h2>
<p>YugabyteDB はパブリッククラウド や Kubernetes、物理サーバ、仮想環境、プライベートクラウドなどほとんどのプラットフォームに対応しています。</p>
<p>本記事では、同一リージョン内の3つの AZ に配置された EC2 インスタンスに YugabyteDB クラスターをデプロイする方法を紹介します。</p>
<p>クラスタ構成は次の通りです。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15591" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300.png" alt="" width="3486" height="1752" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300.png 3486w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300-300x151.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300-1024x515.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300-768x386.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300-1536x772.png 1536w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300-2048x1029.png 2048w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300-304x153.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/eaea6cc56280fc8b59a73872c4742300-282x142.png 282w" sizes="auto, (max-width: 3486px) 100vw, 3486px" /></p>
<p>EC2 の詳細情報は以下の通りです。</p>
<table>
<thead>
<tr>
<th rowspan="2"></th>
<th><strong>ノード#1</strong></th>
<th><strong>ノード#2</strong></th>
<th><strong>ノード#3</strong></th>
</tr>
</thead>
<tbody>
<tr>
<th nowrap="nowrap"><strong>リージョン</strong></th>
<td>us-west-2</td>
<td>us-west-2</td>
<td>us-west-2</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>AZ</strong></th>
<td>us-west-2a</td>
<td>us-west-2b</td>
<td>us-west-2c</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>IPアドレス</strong></th>
<td>172.31.71.100</td>
<td>172.31.72.100</td>
<td>172.31.73.100</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>インスタンスタイプ</strong></th>
<td colspan="3">m6i.2xlarge</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>OS</strong></th>
<td colspan="3">Red Hat Enterprise Linux 9<br />
(サポートされているOSは<a href="https://docs.yugabyte.com/stable/reference/configuration/operating-systems/">こちら</a>を参照してください。)</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>YugabyteDBバージョン</strong></th>
<td colspan="3">2024.1<br />
(投稿時点の最新STSバージョン)</td>
</tr>
</tbody>
</table>
<p>なお、ブラウザから YB-Master と YB-TServer の Web インターフェイスに接続するために、パブリック IP アドレスを有効にしてください。</p>
<h2>事前準備</h2>
<p>YugabyteDBをインストールする前に、各EC2インスタンスで以下の設定をあらかじめ行ってください。</p>
<ul>
<li>chrony（NTPサーバ）のインストール</li>
</ul>
<p>YugabyteDB がデータの一貫性を保つためには、すべてのノードの時刻が正確に同期されている必要があるため、NTP サーバ chrony をインストールして起動します。</p>
<pre>$ sudo yum install -y chrony
$ sudo systemctl start chronyd</pre>
<ul>
<li>ulimits の設定</li>
</ul>
<p>Linux で YugabyteDB をデプロイする際に推奨される ulimits の設定については、<a href="https://docs.yugabyte.com/preview/deploy/manual-deployment/system-config/#ulimits">こちら</a>を参照して適切に設定してください。</p>
<ul>
<li>python 3 のインストール</li>
</ul>
<p>python 3 が必要ですので、python 3 がインストールされているかご確認ください。</p>
<pre>$ python --version</pre>
<p>一部の環境では <code>python</code> コマンドが python 2 に設定されている場合があります。その場合は、python 3 を指すように設定する必要があります。</p>
<pre>$ sudo alternatives --set python /usr/bin/python3</pre>
<h2>デプロイ</h2>
<p>本記事では、replication factor を 3 に設定した 3ノード構成の YugabyteDB クラスターをデプロイします。</p>
<h3>インストール</h3>
<p>ユーザの作成は任意ですが、本記事では YugabyteDB の起動ユーザとして yugabyte というユーザを作成します。</p>
<pre>(すべてのサーバで実行)
# useradd yugabyte
# su - yugabyte</pre>
<p>YugabyteDB をダウンロードします。</p>
<pre>(すべてのサーバで実行)
$ wget https://downloads.yugabyte.com/releases/2024.1.2.0/yugabyte-2024.1.2.0-b77-linux-x86_64.tar.gz
$ tar xvfz yugabyte-2024.1.2.0-b77-linux-x86_64.tar.gz &amp;&amp; cd yugabyte-2024.1.2.0</pre>
<p>以下のスクリプトを実行し、YugabyteDB の設定を行います。</p>
<pre>(すべてのサーバで実行)
$ ./bin/post_install.sh</pre>
<p>YugabyteDB の各種実行ファイルが格納されているディレクトリ yugabyte-2024.1.2.0/bin および yugabyte-2024.1.2.0/postgres/bin を PATH に追加します。</p>
<pre>(すべてのサーバで実行)
$ cat &gt;&gt; ~/.bashrc &lt;&lt; 'EOF'
export PATH=$PATH:/home/yugabyte/yugabyte-2024.1.2.0/bin:/home/yugabyte/yugabyte-2024.1.2.0/postgres/bin
EOF
$ source ~/.bashrc</pre>
<h3>デプロイ</h3>
<p>YugabyteDB のデータを保存するためのディレクトリを作成します。ディスク障害に対応するために異なるディスク上のディレクトリにデータを保存することができますが、本記事は検証目的なので、1つのディレクトリ /mnt/yugabyte 配下にデータを保存します。</p>
<pre>(すべてのサーバで実行)
# mkdir /mnt/yugabyte
# chown yugabyte:yugabyte /mnt/yugabyte</pre>
<p>YugabyteDB クラスタは、YB-Master と YB-TServer という 2 つのサービスから構成されています。YugabyteDB のアーキテクチャについては<a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-intro/">こちら</a>の記事を参照してください。</p>
<p>YB-Master はクラスタメタデータを管理する役割を担っており、最初に YB-Master を起動し、その後に YB-TServer を起動する必要があります。</p>
<h4>YB-Master のデプロイ</h4>
<p>まず、ノード1 (172.31.71.100) に YB-Master をデプロイします。<br />
YB-Master は最大 replication factor の数までしか作成されませんので、今回構築するクラスタは replication factor = 3 ですので、3つの YB-Master を作成します。</p>
<pre>(ノード1で実行)
$ yb-master \
--master_addresses 172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100 \
--rpc_bind_addresses 172.31.71.100:7100 \
--fs_data_dirs "/mnt/yugabyte" \
--replication_factor=3 \
--placement_cloud aws \
--placement_region us-west-2 \
--placement_zone us-west-2a \
&gt;&amp; /mnt/yugabyte/yb-master.out &amp;</pre>
<ul>
<li><strong><code>--master_addresses</code></strong>：すべての YB-Master のIPアドレスをカンマ区切りで指定</li>
<li><code><strong>--rpc_bind_addresses</strong></code>：YugabyteDBのノード同士やクライアントとの間でRPC通信を行うためのIPアドレスを指定。ここでは、ノード1のIPアドレスを指定する</li>
<li><code><strong>--fs_data_dirs</strong></code>：YugabyteDB のデータを保存するためのディレクトリ。カンマ区切りで複数指定可</li>
<li><code><strong>--replication_factor</strong></code>：<code>--replication_factor</code> を 3 に設定する</li>
<li><code><strong>--placement_cloud</strong></code>：このYugabyteDBノードがデプロイされているクラウドの名前</li>
<li><code><strong>--placement_region</strong></code>：このYugabyteDBノードがデプロイされているリージョン</li>
<li><code><strong>--placement_zone</strong></code>：このYugabyteDBノードがデプロイされているアベイラビリティーゾーン (AZ)</li>
</ul>
<p>何らかの原因で YB-Master が立ち上がらなかった場合は、/mnt/yugabyte/yb-master.out からエラーの内容を確認してください。</p>
<p>次に、ノード2（172.31.72.100）とノード3（172.31.73.100）に YB-Master をデプロイします。<code>--rpc_bind_addresses</code> は、それぞれのノードのIPアドレスに置き換えてください。</p>
<pre>(ノード2で実行)
$ yb-master \
--master_addresses 172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100 \
--rpc_bind_addresses 172.31.72.100:7100 \
--fs_data_dirs "/mnt/yugabyte" \
--replication_factor=3 \
--placement_cloud aws \
--placement_region us-west-2 \
--placement_zone us-west-2b \
&gt;&amp; /mnt/yugabyte/yb-master.out &amp;</pre>
<pre>(ノード3で実行)
$ yb-master \
--master_addresses 172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100 \
--rpc_bind_addresses 172.31.73.100:7100 \
--fs_data_dirs "/mnt/yugabyte" \
--replication_factor=3 \
--placement_cloud aws \
--placement_region us-west-2 \
--placement_zone us-west-2c \
&gt;&amp; /mnt/yugabyte/yb-master.out &amp;</pre>
<p>3台の YB-Master が正常に起動すれば、1台が LEADER に選出され、他の2台が FOLLOWER として動作します。</p>
<p>YugabyteDB の管理コマンド <a href="https://docs.yugabyte.com/preview/admin/yb-admin/">yb-admin</a>を用いて、YB-Master サーバの状態を確認します。<br />
次のコマンドの結果から、ノード1が LEADER で、ノード2 と ノード3が FOLLOWER であることがわかります。</p>
<pre>$ yb-admin --master_addresses "172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100" list_all_masters
Master UUID RPC Host/Port State Role Broadcast Host/Port 
8709f57eb8e14433b9b2b0e6018d1b63 172.31.71.100:7100 ALIVE LEADER N/A 
f50db74c5461467d8dc96fa88b4b89f4 172.31.72.100:7100 ALIVE FOLLOWER N/A 
632005861c4146aa95dc031e72cdb67f 172.31.73.100:7100 ALIVE FOLLOWER N/A</pre>
<h4>YB-TServer のデプロイ</h4>
<p>次に、YB-TServer をデプロイします。</p>
<p>YB-TServer の数は replication factor と同じか、それ以上である必要があります。本記事では、3つの YB-TServer をデプロイします。</p>
<p>以下のコマンドを実行し、それぞれのノードに YB-TServer をデプロイします。</p>
<p><code>--rpc_bind_addresses</code> はそれぞれのノードのIPアドレスに置き換えてください。ここでは、PostgreSQL 互換のインターフェイスを有効にするために、<code>--enable_ysql</code> フラグを指定します。</p>
<pre>(ノード1で実行)
$ yb-tserver \
--tserver_master_addrs 172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100 \
--rpc_bind_addresses 172.31.71.100:9100 \
--enable_ysql \
--fs_data_dirs "/mnt/yugabyte" \
--placement_cloud aws \
--placement_region us-west-2 \
--placement_zone us-west-2a \
&gt;&amp; /mnt/yugabyte/yb-tserver.out &amp;</pre>
<pre>(ノード2で実行)
$ yb-tserver \
--tserver_master_addrs 172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100 \
--rpc_bind_addresses 172.31.72.100:9100 \
--enable_ysql \
--fs_data_dirs "/mnt/yugabyte" \
--placement_cloud aws \
--placement_region us-west-2 \
--placement_zone us-west-2b \
&gt;&amp; /mnt/yugabyte/yb-tserver.out &amp;</pre>
<pre>(ノード3で実行)
$ yb-tserver \
--tserver_master_addrs 172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100 \
--rpc_bind_addresses 172.31.73.100:9100 \
--enable_ysql \
--fs_data_dirs "/mnt/yugabyte" \
--placement_cloud aws \
--placement_region us-west-2 \
--placement_zone us-west-2c \
&gt;&amp; /mnt/yugabyte/yb-tserver.out &amp;</pre>
<p>YugabyteDB の管理コマンド <a href="https://docs.yugabyte.com/preview/admin/yb-admin/">yb-admin</a> を用いて、YB-TServer の状態を確認します。</p>
<p>以下のコマンドの結果から、すべての YB-TServer が起動中 (ALIVE) の状態であることが確認できます。</p>
<pre>$ yb-admin --master_addresses "172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100" list_all_tablet_servers
Tablet Server UUID RPC Host/Port Heartbeat delay Status Reads/s Writes/s Uptime SST total size SST uncomp size SST #files Memory Broadcast Host/Port 
1b66c3cac2154d7fa8ea6f823dd346f6 172.31.73.100:9100 0.56s ALIVE 0.00 0.00 10 0 B 0 B 0 36.58 MB N/A
16a4004527284f4da35ac5187ca55089 172.31.72.100:9100 0.94s ALIVE 0.00 0.00 35 0 B 0 B 0 32.42 MB N/A
162f28708ff24259a68bc517c25cba3e 172.31.71.100:9100 0.94s ALIVE 0.00 0.00 65 0 B 0 B 0 32.87 MB N/A</pre>
<p>これで、YugabyteDBのデプロイが完了しました。</p>
<h2>ysqlshによる接続確認</h2>
<p><a href="https://docs.yugabyte.com/preview/api/ysqlsh/">ysqlsh</a> は YSQL（YugabyteDB の PostgreSQL 互換 SQL インターフェース）に接続するためのコマンドです。</p>
<p>アプリケーションからの接続には、既存の PostgreSQL ドライバー（例えば、Javaアプリケーション向けの PostgreSQL JDBC Driver など）を使用するか、または既存の PostgreSQL ドライバーをベースに YugabyteDB 向けに開発された「<a href="https://docs.yugabyte.com/preview/drivers-orms/smart-drivers/">Smart Driver</a>」を使用します。アプリケーション言語ごとの対応ドライバー情報については、<a href="https://docs.yugabyte.com/preview/drivers-orms/">こちら</a>を確認してください。</p>
<p>ここでは、ysqlsh を使用して YugabyteDB に接続してみます。一部の未対応機能を除き、ほとんどの PostgreSQL の構文がそのまま使用できます。</p>
<pre>$ ysqlsh -h 172.31.71.100 -U yugabyte
ysqlsh (11.2-YB-2024.1.2.0-b0)
Type "help" for help.

yugabyte=# CREATE DATABASE test;
yugabyte=# \c test
test=# CREATE TABLE t1 (c1 int primary key, c2 text);
CREATE TABLE
test=# \d t1
Table "public.t1"
Column | Type | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
c1 | integer | | not null | 
c2 | text | | | 
Indexes:
"t1_pkey" PRIMARY KEY, lsm (c1 HASH)
test=#
test=# INSERT INTO t1 SELECT n, md5(n::text) FROM generate_series(1,10) AS n;
INSERT 0 10
test=# 
test=# SELECT * FROM t1 order by c1;
c1 | c2 
----+----------------------------------
1 | c4ca4238a0b923820dcc509a6f75849b
2 | c81e728d9d4c2f636f067f89cc14862c
3 | eccbc87e4b5ce2fe28308fd9f2a7baf3
4 | a87ff679a2f3e71d9181a67b7542122c
5 | e4da3b7fbbce2345d7772b0674a318d5
6 | 1679091c5a880faf6fb5e6087eb1b2dc
7 | 8f14e45fceea167a5a36dedd4bea2543
8 | c9f0f895fb98ab9159f51fd0297e236d
9 | 45c48cce2e2d7fbdea1afc51c7c6ad26
10 | d3d9446802a44259755d38e6d163e820
(10 rows)</pre>
<h2>クラスタの管理</h2>
<h3>YB-Master と YB-TServer の設定変更</h3>
<p>YB-Master と YB-TServer で設定可能なフラグ一覧は以下のドキュメントを参照してください。</p>
<ul>
<li>YB-Master：<a href="https://docs.yugabyte.com/stable/reference/configuration/all-flags-yb-master/">https://docs.yugabyte.com/stable/reference/configuration/all-flags-yb-master/</a></li>
<li>YB-TServer：<a href="https://docs.yugabyte.com/preview/reference/configuration/all-flags-yb-tserver/">https://docs.yugabyte.com/preview/reference/configuration/all-flags-yb-tserver/</a></li>
</ul>
<p>起動時にのみ設定可能なフラグについては、YB-Master や YB-TServer を再起動する必要があります。</p>
<p>一部の YB-TServer のフラグ設定は、<code>yb-ts-cli ... set_flag</code> を使用して、稼働中の YugabyteDB に反映させることができます。</p>
<p>例えば、YugabyteDB には PostgreSQL の <code>log_statement</code> に相当するフラグとして、<code>--ysql_log_statement</code> があります。デフォルト値は <code>none</code> です。ノード1でこのフラグを <code>all</code> に変更するには、以下のコマンドを実行します。</p>
<pre>$ yb-ts-cli --server_address="172.31.71.100:9100" set_flag ysql_log_statement all</pre>
<p>上記のコマンドを実行すると、YB-TServer の /mnt/yugabyte/yb-data/tserver/logs/postgresql-xx.log ログに以下のようなメッセージが出力されます。</p>
<pre>2024-10-04 14:44:59.986 JST [150696] LOG: received SIGHUP, reloading configuration files
2024-10-04 14:44:59.987 JST [150696] LOG: parameter "log_statement" changed to "all"</pre>
<h3>スケールアウト</h3>
<p>YugabyteDB では、必要に応じて YB-TServer の数を自由に増減させることができます。ここでは、YugabyteDB の YB-TServer をスケールアウトする方法を説明します。</p>
<p>新たに追加する4つ目のノードの情報は次の通りです。</p>
<table>
<thead>
<tr>
<th rowspan="2"></th>
<th><strong>ノード#4</strong></th>
</tr>
</thead>
<tbody>
<tr>
<th nowrap="nowrap"><strong>リージョン</strong></th>
<td>us-west-2</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>AZ</strong></th>
<td>us-west-2d</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>IPアドレス</strong></th>
<td>172.31.74.100</td>
</tr>
</tbody>
</table>
<p>4つ目のノードをクラスタに追加します。</p>
<pre>(ノード4で実行)
$ yb-tserver \
--tserver_master_addrs 172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100 \
--rpc_bind_addresses 172.31.74.100:9100 \
--enable_ysql \
--fs_data_dirs "/mnt/yugabyte" \
--placement_cloud aws \
--placement_region us-west-2 \
--placement_zone us-west-2d \
&gt;&amp; /mnt/yugabyte/yb-tserver.out &amp;</pre>
<p>4つ目の YB-TServer が追加されていることを確認します。</p>
<pre>$ yb-admin --master_addresses "172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100" list_all_tablet_servers
Tablet Server UUID RPC Host/Port Heartbeat delay Status Reads/s Writes/s Uptime SST total size SST uncomp size SST #files Memory Broadcast Host/Port 
1b66c3cac2154d7fa8ea6f823dd346f6 172.31.73.100:9100 0.21s ALIVE 0.00 0.00 1118 0 B 0 B 0 46.16 MB N/A
dd21987f812b4a3b81e7c7b324321356 172.31.74.100:9100 0.21s ALIVE 0.00 0.00 36 133.27 KB 133.33 KB 2 37.35 MB N/A
16a4004527284f4da35ac5187ca55089 172.31.72.100:9100 0.21s ALIVE 0.00 0.00 1145 0 B 0 B 0 41.80 MB N/A
162f28708ff24259a68bc517c25cba3e 172.31.71.100:9100 0.22s ALIVE 0.00 0.00 1172 66.65 KB 66.71 KB 1 51.26 MB N/A</pre>
<h3>バックアップ・リストア</h3>
<p>YugabyteDB をバックアップするために、いくつかの方法があります。</p>
<h4>ysql_dump や ysql_dumpall を使った論理バックアップ</h4>
<p><code>ysql_dump</code> や <code>ysql_dumpall</code> は PostgreSQL の <code>pg_dump</code> や <code>pg_dumpall</code> と同様にデータベースのバックアップを <code>SQL</code> 形式で取得するコマンドです。</p>
<ul>
<li><strong><code>ysql_dump</code></strong>：特定のデータベースやテーブルをバックアップする際に使用します。</li>
<li><strong><code>ysql_dumpall</code></strong>：クラスター全体のバックアップを取得し、ユーザーやロールなどのグローバル設定も含めたい場合に使用します。</li>
</ul>
<p>例えば、test データベースのバックアップを test-dump.sql に取得するには以下のコマンドを実行します。</p>
<pre>$ ysql_dump -h 172.31.71.100 -U yugabyte -d test -f test-dump.sql</pre>
<p>バックアップファイルをリストアするには、<code>ysqlsh</code> を使います。</p>
<p>例えば、バックアップファイルを new_test というデータベースにリストアする場合は、以下のコマンドを実行します。</p>
<pre>$ ysqlsh -h 172.31.71.100 -U yugabyte -d new_test -f test-dump.sql</pre>
<h4>分散スナップショット</h4>
<p>YugabyteDB をバックアップする最も効率的な方法は、分散スナップショットを作成することです。</p>
<p>YugabyteDB の分散スナップショットは、クラスタ全体にわたってデータベースの特定の時点での状態をキャプチャし、障害やデータの破損時に確実に復元できるバックアップ手法です。スナップショットは YugabyteDB クラスタ内のすべてのノードで同時に取得され、データの一貫性が保証されます。</p>
<p>YugabyteDB がスナップショットを作成する際、データは物理的にコピーされるのではなく、関連するすべてのファイルにハードリンクが作成されます。スナップショットは、データが保存されているのと同じストレージに保存されます。</p>
<p>スナップショットの作成およびリストア手順は次の通りです。</p>
<pre>$ yb-admin --master_addresses &lt;YB-Master-ip1:7100,YB-Master-ip2:7100,YB-Master-ip3:7100&gt; create_database_snapshot ysql.&lt;database_name&gt;
$ yb-admin --master_addresses &lt;YB-Master-ip1:7100,YB-Master-ip2:7100,YB-Master-ip3:7100&gt; restore_snapshot &lt;snapshot-UUID&gt;</pre>
<p>ここでは test データベースのスナップショットの作成手順と復元手順を説明します。</p>
<pre>$ ysqlsh -h 172.31.71.100 -U yugabyte -d test
ysqlsh (11.2-YB-2024.1.2.0-b0)
Type "help" for help.
test=# SELECT * FROM t1 ORDER BY c1;
c1 | c2 
----+----------------------------------
1 | c4ca4238a0b923820dcc509a6f75849b
2 | c81e728d9d4c2f636f067f89cc14862c
3 | eccbc87e4b5ce2fe28308fd9f2a7baf3
4 | a87ff679a2f3e71d9181a67b7542122c
5 | e4da3b7fbbce2345d7772b0674a318d5
6 | 1679091c5a880faf6fb5e6087eb1b2dc
7 | 8f14e45fceea167a5a36dedd4bea2543
8 | c9f0f895fb98ab9159f51fd0297e236d
9 | 45c48cce2e2d7fbdea1afc51c7c6ad26
10 | d3d9446802a44259755d38e6d163e820
(10 rows)</pre>
<p>以下のコマンドを実行し、スナップショットを作成します。</p>
<pre>$ yb-admin --master_addresses "172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100" create_database_snapshot ysql.test
Started snapshot creation: c638b5ac-9fcc-4f6a-8b89-3975fc560ed1</pre>
<p>以下のコマンドを実行すると、作成済みのスナップショットの一覧を表示できます。</p>
<pre>$ yb-admin --master_addresses "172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100" list_snapshots
Snapshot UUID State Creation Time
c638b5ac-9fcc-4f6a-8b89-3975fc560ed1 COMPLETE 2024-10-24 13:21:14.113310</pre>
<p>test データベースの操作を行います。</p>
<pre>$ ysqlsh -h 172.31.71.100 -U yugabyte -d test
ysqlsh (11.2-YB-2024.1.2.0-b0)
Type "help" for help.
test=# INSERT INTO t1 SELECT n, md5(n::text) FROM generate_series(11,20) AS n;
INSERT 0 10
test=# SELECT * FROM t1 ORDER BY c1;
c1 | c2 
----+----------------------------------
1 | c4ca4238a0b923820dcc509a6f75849b
2 | c81e728d9d4c2f636f067f89cc14862c
3 | eccbc87e4b5ce2fe28308fd9f2a7baf3
4 | a87ff679a2f3e71d9181a67b7542122c
5 | e4da3b7fbbce2345d7772b0674a318d5
6 | 1679091c5a880faf6fb5e6087eb1b2dc
7 | 8f14e45fceea167a5a36dedd4bea2543
8 | c9f0f895fb98ab9159f51fd0297e236d
9 | 45c48cce2e2d7fbdea1afc51c7c6ad26
10 | d3d9446802a44259755d38e6d163e820
11 | 6512bd43d9caa6e02c990b0a82652dca
12 | c20ad4d76fe97759aa27a0c99bff6710
13 | c51ce410c124a10e0db5e4b97fc2af39
14 | aab3238922bcc25a6f606eb525ffdc56
15 | 9bf31c7ff062936a96d3c8bd1f8f2ff3
16 | c74d97b01eae257e44aa9d5bade97baf
17 | 70efdf2ec9b086079795c442636b55fb
18 | 6f4922f45568161a8cdf4ad2299f6d23
19 | 1f0e3dad99908345f7439f8ffabdffc4
20 | 98f13708210194c475687be6106a3b84
(20 rows)</pre>
<p>データベースをスナップショットを取得した時点の状態にリストアします。</p>
<p>スナップショットの完了には時間がかかる場合があるため、スナップショットを使用する前に、次のコマンドを実行して State が COMPLETE であることを確認してください。</p>
<pre>$ yb-admin --master_addresses "172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100" list_snapshots
Snapshot UUID State Creation Time
c638b5ac-9fcc-4f6a-8b89-3975fc560ed1 COMPLETE 2024-10-24 13:21:14.113310</pre>
<p>リストアします。</p>
<pre>$ yb-admin --master_addresses "172.31.71.100:7100,172.31.72.100:7100,172.31.73.100:7100" restore_snapshot c638b5ac-9fcc-4f6a-8b89-3975fc560ed1
Started restoring snapshot: c638b5ac-9fcc-4f6a-8b89-3975fc560ed1
Restoration id: 13eb17de-55b3-4afc-b19d-59d71cb4f85f</pre>
<p>データがスナップショット作成時点の状態にリストアされていることが確認できます。</p>
<pre>$ ysqlsh -h 172.31.71.100 -U yugabyte -d test
ysqlsh (11.2-YB-2024.1.2.0-b0)
Type "help" for help.

test=# SELECT * FROM t1 ORDER BY c1;
c1 | c2 
----+----------------------------------
1 | c4ca4238a0b923820dcc509a6f75849b
2 | c81e728d9d4c2f636f067f89cc14862c
3 | eccbc87e4b5ce2fe28308fd9f2a7baf3
4 | a87ff679a2f3e71d9181a67b7542122c
5 | e4da3b7fbbce2345d7772b0674a318d5
6 | 1679091c5a880faf6fb5e6087eb1b2dc
7 | 8f14e45fceea167a5a36dedd4bea2543
8 | c9f0f895fb98ab9159f51fd0297e236d
9 | 45c48cce2e2d7fbdea1afc51c7c6ad26
10 | d3d9446802a44259755d38e6d163e820
(10 rows)</pre>
<p>YugabyteDB には<a href="https://docs.yugabyte.com/preview/admin/yb-admin/#create-snapshot-schedule">定期スナップショット</a>機能も提供されています。</p>
<p>なお、YugabyteDB の PITR（Point-In-Time Recovery）は、定期スナップショットを基にして過去の任意の時点にデータを戻すため、利用するには分散スナップショットが必要です。</p>
<p>例えば、スナップショットを1日に1回 (1,440 分ごと) 生成し、それを3日間 (4,320 分) 保持するスケジュールを作成するには、次のコマンドを実行します。</p>
<pre>$ yb-admin --master_addresses "&lt;YB-Master-ip1:7100,YB-Master-ip2:7100,YB-Master-ip3:7100&gt;" create_snapshot_schedule 1440 4320 ysql.&lt;database_name&gt;</pre>
<h5>分散スナップショットの注意点：</h5>
<ul>
<li>スナップショットはクラスタ内に保存されるため、ストレージの消費量が増加します。また、ファイルシステムの破損やハードウェア障害からの保護は提供されません。<br />
このような問題を軽減するため、スナップショットを外部ストレージに保存することも可能です。<br />
スナップショットを外部ストレージに保存することで、ストレージ使用量の削減やストレージ障害への対応が可能になるほか、別のクラスターにリストアすることもできます。</li>
<li>スナップショットを使ったリストアでは、データの変更のみが元に戻され、スキーマの変更は元に戻らない点に注意してください。<br />
たとえば、スナップショットを作成した後にテーブルを削除した場合、スナップショットをリストアしてもそのテーブルはリストアされません。<br />
この問題を回避するためには、<a href="https://docs.yugabyte.com/preview/manage/backup-restore/snapshot-ysql/#move-a-snapshot-to-external-storage">スナップショットを外部ストレージに保存</a>するか、<a href="https://docs.yugabyte.com/preview/manage/backup-restore/point-in-time-recovery/">PITR (Point-In-Time Recovery)</a> を使用する方法があります。</li>
</ul>
<h2>モニタリング</h2>
<p>YugabyteDB は、クラスタのパフォーマンスや状態をモニタリングするため、さまざまなメトリクスを JSON や Prometheus 形式で出力します。これにより、システムの動作状況を監視し、トラブルシューティングやパフォーマンス最適化が容易になります。YugabyteDB が提供するメトリクスエンドポイントは<a href="https://docs.yugabyte.com/preview/launch-and-manage/monitor-and-alert/metrics/#metric-endpoints">こちら</a>を参照してください。</p>
<p>さらに、Prometheus と Grafanaと連携してデータを可視化することも可能です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15508" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/monitoring.png" alt="" width="938" height="327" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/monitoring.png 938w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/monitoring-300x105.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/monitoring-768x268.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/monitoring-304x106.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/10/monitoring-282x98.png 282w" sizes="auto, (max-width: 938px) 100vw, 938px" /></p>
<h2>おわりに</h2>
<p>今回は、YugabyteDB OSS版の使い方について紹介しました。</p>
<p>YugabyteDB OSS版は、有償版の YugabyteDB Aeon に比べて運用コストが高く、商用サポートが提供されていないため、本番環境への導入には適しませんが、気軽に始めたいユーザーにとって便利なので、OSS版をお試しになってはいかがでしょうか。</p>
<p>次回は、YugabyteDB の有償版製品である <a href="https://www.sraoss.co.jp/tech-blog/uncategorized/yugabytedb-aeon-self-managed/">YugabyteDB Aeon Self-Managed の使い方</a>について紹介します。</p>
<div>
<a href="https://www.sraoss.co.jp/prod_serv/consulting/yugabytedb/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-yugabyte" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、YugabyteDB のコンサルティングサービスを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>YugabyteDB 構成パターン紹介</title>
		<link>https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-deployment/</link>
		
		<dc:creator><![CDATA[彭 博 (Bo Peng)]]></dc:creator>
		<pubDate>Wed, 03 Apr 2024 02:00:57 +0000</pubDate>
				<category><![CDATA[YugabyteDB]]></category>
		<category><![CDATA[NewSQL]]></category>
		<category><![CDATA[YugabyteDB構成]]></category>
		<category><![CDATA[分散SQL]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=14459</guid>

					<description><![CDATA[前回の記事では、分散データベース YugabyteDB のユースケースについて紹介しました。 YugabyteDB はオンプレミスやクラウドはもちろん、マルチクラウドやハイブリッドクラウドも含め、様々な環境に対応しており ...]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-usecase/">前回の記事</a>では、分散データベース YugabyteDB のユースケースについて紹介しました。</p>
<p>YugabyteDB はオンプレミスやクラウドはもちろん、マルチクラウドやハイブリッドクラウドも含め、様々な環境に対応しております。また、YugabyteDB では構成パターンや構成オプションが多く用意されており、アプリケーション要件に応じて、柔軟に環境や構成を選ぶことができます。</p>
<p>&nbsp;</p>
<p><span id="more-14459"></span>本記事では、これから YugabyteDB を使ってみたい、または構成を検討している方向けに、次の5つの YugabyteDB の構成パターンについて紹介します。</p>
<ol>
<li><a href="#p1">シングルリージョンマルチAZ</a></li>
<li><a href="#p2">マルチリージョン</a></li>
<li><a href="#p3">xCluster</a></li>
<li><a href="#p4">地理的パーティショニング</a></li>
<li><a href="#p5">リードレプリカ</a></li>
</ol>
<h2 id="p1">構成パターン1：シングルリージョンマルチAZ</h2>
<p>YugabyteDB をデプロイするときに、まず最初にシングルリージョンを利用するのか、マルチリージョンを利用するのかを決めておく必要があります。こちらは主にアプリケーションの可用性要件に依存します。シングルリージョンとマルチリージョンは可用性と性能のトレードオフがあります。マルチリージョンの場合は、リージョン障害に対する回復力を持たせることが可能ですが、リージョン通信のレイテンシが増加するという代償が伴います。シングルリージョン構成でアプリケーションの可用性要件を十分に満たせるのであれば、性能観点からはシングルリージョンが良いのではないかと考えます。</p>
<p>本番環境で利用する場合、可用性のために少なくとも3ノード以上が必要です。シングルAZに複数ノードをデプロイしても良いのですが、可用性の観点からは、ゾーン障害にも対応できるように、同一リージョン内の異なるAZにそれぞれノードをデプロイすることをお勧めします。</p>
<p>マルチAZ構成の場合はシングルAZ構成に比べると、可用性が大幅に向上します。リージョンを跨らないので、マルチリージョン構成に比べると、レイテンシが抑えられることもメリットとなります。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-14506" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-az.png" alt="" width="653" height="652" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-az.png 653w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-az-300x300.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-az-150x150.png 150w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-az-214x214.png 214w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-az-260x260.png 260w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-az-120x120.png 120w" sizes="auto, (max-width: 653px) 100vw, 653px" /></p>
<h2 id="p2">構成パターン2：マルチリージョン</h2>
<p>アプリケーションの可用性要件としてリージョンレベルの障害に対する回復力が必須でしたら、マルチリージョン構成を選択頂くことになります。</p>
<p>マルチリージョン構成は「構成パターン1：シングルリージョンマルチAZ」と似ていますが、同一リージョン内の異なるAZでなく、それぞれ異なるリージョンにクラスタのノードをデプロイします。</p>
<p>1つのリージョンに障害が発生しても、あるいは自然災害で、リージョンがダウンしても、他の2つのリージョンでサービスを継続することが可能です。ただし、デメリットとしては、書き込みと読み取りレイテンシがシングルリージョン構成に比べて若干高くなります。</p>
<p>「構成パターン1：シングルリージョンマルチAZ」と「構成パターン2：マルチリージョン」ともにノード間のデータの複製は同期レプリケーションなので、障害が発生したとしても、データの損失はないことが保証されます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-14507" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-region.png" alt="" width="653" height="652" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-region.png 653w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-region-300x300.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-region-150x150.png 150w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-region-214x214.png 214w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-region-260x260.png 260w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/multi-region-120x120.png 120w" sizes="auto, (max-width: 653px) 100vw, 653px" /></p>
<h2 id="p3">構成パターン3：xCluster</h2>
<p>前述の2つの構成は単一の YugabyteDB クラスタを複数のAZ、あるいは複数のリージョンに跨ってデプロイする手法です。YugabyteDB では 2つのYugabyteDBクラスタを異なるリージョンにデプロイする、<a href="https://docs.yugabyte.com/preview/architecture/docdb-replication/async-replication/" target="_blank" rel="noopener">xCluster</a> と呼ばれる構成も利用可能です。クラスタ間で双方向、または単一方向の非同期レプリケーションによってデータの同期が行われます。</p>
<p>各クラスタ内では、ノード間の通信はリージョンを跨らないので、レイテンシが低いというメリットがあります。1つのリージョンがダウンしても、別のリージョンに存在するクラスタでサービスを継続させることで、システムのダウンタイムを最小限に抑え、迅速に障害や災害から復旧することが可能になります。</p>
<p>前述の「構成パターン2：マルチリージョン」構成でもリージョン障害には対応できますが、リージョン通信のレイテンシが増加するという代償が伴います。一方、xCluster はレイテンシを抑えつつ、リージョンレベルの可用性を実現できます。ただし、クラスタ間では非同期レプリケーションなので、障害時にデータ損失が発生する可能性があります。</p>
<p>マルチリージョン構成と xCluster、どちらでもDR（ディザスタリカバリ）目的で利用可能ですが、性能と信頼性のトレードオフがあり、アプリケーションの要件に応じて構成を選択する必要があります。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-14508" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/xcluster.png" alt="" width="957" height="498" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/xcluster.png 957w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/xcluster-300x156.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/xcluster-768x400.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/xcluster-304x158.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/xcluster-282x147.png 282w" sizes="auto, (max-width: 957px) 100vw, 957px" /></p>
<h2 id="p4">構成パターン4：地理的パーティショニング</h2>
<p><a href="https://docs.yugabyte.com/preview/explore/multi-region-deployments/row-level-geo-partitioning/" target="_blank" rel="noopener">地理的パーティショニング</a>とは、テーブルパーティショニングと tablespace 機能を使って特定のパーティションテーブルを特定の地域に紐づけて、行単位でデータの地理的な配置場所を制御する機能です。複数の拠点に分散したアプリケーションに適した構成です。</p>
<p>例えば、グローバルに広がった複数の拠点に跨って YugabyteDB をデプロイし、利用ユーザの近いところにデータを配置することで、よりレイテンシを抑えることができます。また、個人情報など機密性の高い情報を国内や特定の地域のデータセンターに保管する、といったユースケースにも最適です。</p>
<p>利用するユーザは、ローカルリージョンにあるデータにアクセスするので、レイテンシを低く抑えることができます。1つのリージョンがダウンしても、他の2つのリージョンでサービスを継続することができますので、リージョンレベルの可用性を保証します。各リージョン内の異なるゾーンにノードをデプロイすることで、ゾーンレベルの障害にも回復力を持たせることが可能です。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-14497" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/geo.png" alt="" width="944" height="882" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/geo.png 944w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/geo-300x280.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/geo-768x718.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/geo-229x214.png 229w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/geo-278x260.png 278w" sizes="auto, (max-width: 944px) 100vw, 944px" /></p>
<h2 id="p5">構成パターン5：リードレプリカ</h2>
<p>YugabyteDB では、<a href="https://docs.yugabyte.com/preview/architecture/docdb-replication/read-replicas/" target="_blank" rel="noopener">リードレプリカ</a>と呼ばれる、プライマリクラスタと異なるリージョンに読み取り専用のノードを構成することができます。この構成を利用することで、ユーザは近い場所にあるリードレプリカからデータを読み取ることができるので、読み取りレイテンシを軽減する効果があります。</p>
<p>特定のリージョンからのみ書き込みが発生し、参照するユーザは世界中に存在するようなアプリケーションに活用できます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-14499" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/read-replica.png" alt="" width="1242" height="502" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/read-replica.png 1242w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/read-replica-300x121.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/read-replica-1024x414.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/read-replica-768x310.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/read-replica-304x123.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/03/read-replica-282x114.png 282w" sizes="auto, (max-width: 1242px) 100vw, 1242px" /></p>
<p>具体的には、次のような動作になります。</p>
<ul>
<li>プライマリクラスタのデータが自動的に非同期で1つあるいは複数のリモートリージョン(リードレプリカ)に複製されます。</li>
<li>基本的にはプライマリクラスタは読み書き、リードレプリカは読み取り専用ですが、リードレプリカに対して、書き込みも行えます。その場合は、プライマリクラスタにリダイレクトされます。</li>
<li>ユーザは近い場所にあるリードレプリカからデータを読み取るので、レイテンシが低いというメリットがあります。</li>
<li>プライマリクラスタとリードレプリカの間は非同期レプリケーションとなりますので、どの程度のデータの遅延が許容できるかはパラメータ<code>yb_follower_read_staleness_ms</code>で設定できます。デフォルトは 30 秒です。</li>
<li>リードレプリカは Raft コンセンサスに関与しないので、可用性はプライマリクラスタの可用性に依存することにご注意ください。</li>
</ul>
<h2>まとめ</h2>
<p>ここまで YugabyteDB の5つの構成パターンについて紹介しました。</p>
<p>それぞれの構成にメリットがありますので、ここでは可用性や性能において各構成の特徴をまとめつつ、使い分けポイントや用途について説明します。</p>
<table>
<thead>
<tr>
<th width="20%"></th>
<th width="20%"><strong>可用性</strong></th>
<th width="20%"><strong>書き込み<br />
レイテンシ</strong></th>
<th width="20%"><strong>読み取り<br />
レイテンシ</strong></th>
<th width="20%"><strong>用途</strong></th>
</tr>
</thead>
<tbody>
<tr>
<th><strong>シングルリージョンマルチAZ</strong></th>
<td style="font-size: 85%;">AZレベル</td>
<td style="font-size: 85%;">低い</td>
<td style="font-size: 85%;">低い</td>
<td style="font-size: 85%;">・AZレベルの回復力<br />
・性能重視</td>
</tr>
<tr>
<th><strong>マルチリージョン</strong></th>
<td style="font-size: 85%;">リージョンレベル</td>
<td style="font-size: 85%;">リージョンレイテンシ</td>
<td style="font-size: 85%;">リージョンレイテンシ</td>
<td style="font-size: 85%;">・リージョンレベルの回復力</td>
</tr>
<tr>
<th><strong>xCluster</strong></th>
<td style="font-size: 85%;">リージョンレベル</td>
<td style="font-size: 85%;">低い</td>
<td style="font-size: 85%;">低い</td>
<td style="font-size: 85%;">・レイテンシ低減<br />
・DR</td>
</tr>
<tr>
<th><strong>地理的パーティショニング</strong></th>
<td style="font-size: 85%;">リージョンレベル</td>
<td style="font-size: 85%;">低い<br />
(リモートリージョンへのアクセスはリージョンレイテンシ)</td>
<td style="font-size: 85%;">低い<br />
(リモートリージョンへのアクセスはリージョンレイテンシ)</td>
<td style="font-size: 85%;">・レイテンシ低減<br />
・データ規制対応</td>
</tr>
<tr>
<th><strong>リードレプリカ</strong></th>
<td style="font-size: 85%;">AZレベル<br />
(プライマリクラスタに依存)</td>
<td style="font-size: 85%;">低い<br />
(書き込みを行うクライアントがプライマリクラスタと同じリージョン内の想定)</td>
<td style="font-size: 85%;">低い</td>
<td style="font-size: 85%;">読み取りレイテンシ低減<br />
(書き込みは特定のリージョンからのみ、読み取りは世界中に存在するリージョンから行われる)</td>
</tr>
</tbody>
</table>
<h2>終わりに</h2>
<p>今回は、PostgreSQL/Cassandra 互換の分散 SQL データベース YugabyteDB の構成パターンおよびそれぞれの特徴や用途について紹介しました。</p>
<p>YugabyteDB の構成パターンが多いため、導入する前に、それぞれの構成のメリット・デメリットを理解し、目的や用途に合った構成を選ぶことが重要です。本記事の内容が YugabyteDB の構成を検討していただく際にお役に立てば幸いです。</p>
<p>&nbsp;</p>
<div>
<a href="https://www.sraoss.co.jp/prod_serv/consulting/yugabytedb/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-yugabyte" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、YugabyteDB のコンサルティングサービスを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>YugabyteDBユースケース紹介</title>
		<link>https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-usecase/</link>
		
		<dc:creator><![CDATA[彭 博 (Bo Peng)]]></dc:creator>
		<pubDate>Tue, 19 Dec 2023 08:27:05 +0000</pubDate>
				<category><![CDATA[YugabyteDB]]></category>
		<category><![CDATA[Cassandra]]></category>
		<category><![CDATA[NewSQL]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[Usecase]]></category>
		<category><![CDATA[分散SQL]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=12918</guid>

					<description><![CDATA[前回の記事では、分散データベース YugabyteDB の概要や特長、アーキテクチャについて紹介しました。 RDBMS と NoSQL にはそれぞれの得意不得意がありますが、YugabyteDB はそれぞれの不得意な部分 ...]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-intro/">前回の記事</a>では、分散データベース YugabyteDB の概要や特長、アーキテクチャについて紹介しました。</p>
<p>RDBMS と NoSQL にはそれぞれの得意不得意がありますが、YugabyteDB はそれぞれの不得意な部分を補い、RDBMS と NoSQL の両方の特長を融合して設計されたデータベース技術です。YugabyteDB を使用することで、データの厳密な一貫性を保ちながら、水平方向スケーラビリティ、高可用性を実現できます。</p>
<p>YugabyteDB を導入する前に、YugabyteDB が適したユースケースを理解することが重要ですので、今回の記事では、YugabyteDB のユースケース、従来のデータベースソリューションとの使い分けのポイントについて紹介します。</p>
<p><span id="more-12918"></span></p>
<h2>YugabyteDB に適したユースケース</h2>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12984" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/08/usecase.png" alt="" width="1558" height="963" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/08/usecase.png 1558w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/08/usecase-300x185.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/08/usecase-1024x633.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/08/usecase-768x475.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/08/usecase-1536x949.png 1536w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/08/usecase-304x188.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/08/usecase-282x174.png 282w" sizes="auto, (max-width: 1558px) 100vw, 1558px" /><br />
以下のいずれかのユースケースにあてはまる場合に、YugabyteDB が有力な選択肢となると言えます。</p>
<ul>
<li>強力な一貫性に加えて高い可用性と高い同時実行性が求められるアプリケーションの場合</li>
<li>大規模で、ビジネスの成長とともに処理するデータ量が増加するアプリケーションの場合</li>
<li>季節的なアクセス急増、あるいは今後のアクセス急増が予想される場合</li>
<li>シンプルな構成で高可用性や災害対策、スケーラビリティを実現したい、運用を楽にしたい場合</li>
<li>グローバルにサービスを展開したい場合</li>
<li>行単位でデータの地理的な配置場所を制御したい場合</li>
<li>データベースのモダナイズしたい場合</li>
</ul>
<h3>強力な一貫性に加えて高い可用性と高い同時実行性が求められるアプリケーションの場合</h3>
<p>強力な一貫性と高い可用性が求められるような、いわゆるミッションクリティカルなシステムの例としては、金融システムや決済システム、ECサイト、基幹系業務システムなどが挙げられます。</p>
<p>これらのアプリケーション、特に銀行システムにおいて、トランザクション管理はデータの一貫性を保つために非常に重要なものです。しかし、従来のデータベースでは分散したデータの一貫性を担保するのが大きな課題でした。YugabyteDB は分散トランザクションに対応しており、複数ノードにまたがってトランザクション処理しても強力なデータ一貫性を保証できます。</p>
<p>これらのシステムでは、ダウンタイムのない、24時間365日の安定稼働が求められます。</p>
<p>従来のオープンソースの RDBMS には可用性機能が提供されていないため、高可用性を実現するために、外部クラスタソフトウェアを導入するのが一般的です。稼働系に障害が発生した場合、自動的に待機系を昇格し、待機系へ切り替えることで、継続してサービスを提供することができます。ただし、このような構成では系統切り替え時に若干のダウンタイムが発生します。</p>
<p>YugabyteDB は高い可用性を持っています。従来の RDBMS のように障害時に系統切り替え処理は必要ないので、データベースノードに障害が起こったとしても、クライアントからの接続は切断されず、透過的に他のノードに切り替えることで、ダウンタイムなくデータベースの運用を続行できます。</p>
<p>障害時だけではなく、スケーリングやバージョンアップなどのメンテナンス時にも、ダウンタイムなくサービス継続を維持したままメンテナンスを行うことができます。</p>
<p>YugabyteDB を利用することで、非常に高い可用性要件を実現できます。</p>
<p>また、YugabyteDB は必要に応じて容易に拡張できるので、性能を維持したままアクセス数の急増にも対応できます。</p>
<h3>大規模で、ビジネスの成長とともに処理するデータ量が増加するアプリケーションの場合</h3>
<p>従来の RDBMS ではプライマリでしか書き込み処理を受け付けられないという特性があり、同時アクセス数が増加し、処理するデータ量が大規模になると、処理性能が落ちてしまいます。一方、YugabyteDB は水平方向の拡張性に優れており、RDBMS のプライマリでしか書き込み処理できないという制限に対して、YugabyteDB はどのノードでも書き込み処理を行えます。ノードを増やすことで書き込み処理負荷を分散できるので、大規模で同時書き込みが多いシステムでは、RDBMS と比べて高い性能を実現できます。</p>
<p>YugabyteDB は 1台のサーバではさばけないほど膨大なデータを扱い、今後もデータ量の増加が予想されるようなアプリケーションに適しています。</p>
<p>ただ、小規模なアプリケーションでも YugabyteDB のダウンタイムのない、高可用性のメリットを享受したいというケースもあるかと思いますので、RDBMS より多少レイテンシーが増えても、許容範囲内であれば、小規模なアプリケーションでも YugabyteDB を検討する余地があると言えるでしょう。YugabyteDB の導入を検討する際に、必ず事前検証を行い、アプリケーションの要件を満たすことができるかを確認してください。</p>
<h3>季節的なアクセス急増、あるいは今後のアクセス急増が予想される場合</h3>
<p>こちらは最も YugabyteDB のスケールの柔軟性の恩恵を受けられるユースケースと言えます。</p>
<p>何らかのビジネスの施策によって、サイトへのアクセス数が一気に増えて、レスポンスが悪くなったり、最悪の場合はサーバダウンが起こってしまう可能性があります。もしサーバがダウンしてしまうと、ビジネスチャンスを逃してしまう恐れがあります。</p>
<p>このようなアプリケーションの例としては、ECサイトやオンラインゲームのプラットフォームなどが挙げられます。</p>
<p>例えば、ECサイトでキャンペーンやタイムセールなどを行う場合は、一次的なアクセス急増が予測されます。増加する負荷にも耐えられるように、事前にスケールアウトしておくことで、アクセス集中による影響を防ぐことが可能です。キャンペーンが終了後にアクセスが落ち着いたら、スケールインして、コストを抑えることも可能です。</p>
<p>また、ゲーム制作会社は新しいゲームの発売に伴って、ユーザが急増する状況も想定されます。YugabyteDB は簡単にスケールアウトできるので、ユーザが急増する状況にも容易に対応できます。</p>
<h3>シンプルな構成で高可用性や災害対策、スケーラビリティを実現したい、運用を楽にしたい</h3>
<p>従来のデータベースでは可用性や水平方向スケーラビリティを実現するために、構成が複雑になってしまい、運用の手間がかかります。</p>
<p>YugabyteDB には高可用性と自動シャーディング機能がビルトインされており、外部コンポーネントを導入する必要がなく、シンプルな構成でスケーラビリティや継続的な可用性を実現できます。</p>
<p>また、従来の災害対策としては、複数のサイトを用意して、サイト間で非同期レプリケーション、あるいは、カスケードレプリケーションを使って、データの同期を行う構成がよく使われています。この構成では、サイトの障害を自動的に検知できなく、メインサイトに障害が発生した場合には、手動でDRサイトを昇格する必要があるので、復旧に多くの時間がかかり、運用がやや複雑という欠点があります。</p>
<p>YugabyteDB はマルチ AZ、マルチリージョン、マルチクラウド、ハイブリッドクラウドなど、構成パターンが多様で、可用性要件に応じて柔軟に構成パターンを選択でき、データセンター、リージョン、クラウドサービスまで、あらゆる規模の障害や災害に対してダウンタイムなしで回復できます。</p>
<p>さらに、フルマネージドサービスである YugabyteDB Managed も提供されています。管理コンソールで数回クリックするだけで指定したクラウド上にデータベースクラスタを迅速に構築できます。従来のように、サーバの構築、OS やミドルウェアのインストール・設定などのインフラ作業を行わなくて済むので、ビジネスを支えるアプリケーションの開発に集中でき、俊敏性の向上やコスト削減を実現できます。</p>
<h3>グローバルにサービスを展開したい場合</h3>
<p>YugabyteDB はグローバルに広がったアプリケーションの場合にも活用できます。</p>
<p>例えば、グローバルに広がった複数の拠点にまたがって YugabyteDB をデプロイし、利用ユーザの近いところにデータを配置することで、よりレイテンシーを抑えることが可能になります。</p>
<h3>行単位でデータの地理的な配置場所を制御したい場合</h3>
<p>最近、個人情報保護意識が高まっており、個人情報を国内や特定の地域のデータセンターに保管しなければならないケースが増えています。YugabyteDB の<a href="https://docs.yugabyte.com/preview/explore/multi-region-deployments/row-level-geo-partitioning/">地理的パーティショニング機能</a>はこのようなユースケースには最適です。</p>
<p>例えば、１つのテーブルの中で世界中のユーザ情報を管理しているケースで、国を表す列でパーティション分割して、tablespace 機能を使って特定のパーティションテーブルを特定の地域に紐づけて、行単位でデータの地理的な配置場所を制御することが可能です。</p>
<h3>データベースのモダナイズしたい場合</h3>
<p>クラウドネイティブの登場で、アプリケーションのアーキテクチャが変化しつつあります。従来のモノリシックなデータベースは、アプリケーションの俊敏性、スケーラビリティ、柔軟性を損なってしまうので、データベースの革新も求められるようになっています。</p>
<p>YugabyteDB は一貫性、スケーラビリティ、高可用性を兼ね備えたクラウドネイティブな分散型 SQL データベースであり、YugabyteDB を利用することで、従来のモノリシックなデータベースの課題を解決できます。</p>
<p>また、YugabyteDB はクラウドネイティブプラットフォーム Kubernetes にも対応しており、アプリケーションや Web サーバ、データベースを含むシステム全体を Kubernetes 移行を検討している場合は、YugabyteDB が有力な選択肢と言えます。</p>
<h2>類似製品の使い分け</h2>
<p>YugabyteDB の他に、Pacemaker や Pgpool-II による PostgreSQL 冗長化構成、マネージドサービス Amazon Aurora もよく使われています。</p>
<p>いくつかのソリューションの中から目的や課題にあった最適なソリューションを選択するには、それぞれの違いを理解しておくことが大事です。ここでは、それぞれのソリューションの使い分けのポイント、考慮すべきことを紹介します。</p>
<p>可用性、水平方向スケーラビリティの観点で比較した結果は以下の表のようになります。</p>
<table>
<thead>
<tr>
<th></th>
<th><strong>YugabyteDB</strong></th>
<th><strong>Amazon Aurora</strong></th>
<th><strong>PostgreSQL HA (Pgpool-II)</strong></th>
<th><strong>PostgreSQL HA (Pacemaker)</strong></th>
</tr>
</thead>
<tbody>
<tr>
<th nowrap="nowrap"><strong>オープンソース</strong></th>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;">✘</td>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
</tr>
<tr>
<th nowrap="nowrap"><strong>マネージドサービス</strong></th>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;">✘</td>
<td style="font-size: 85%;">✘</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>ゼロダウンタイム</strong></th>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;">✘</td>
<td style="font-size: 85%;">✘</td>
<td style="font-size: 85%;">✘</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>参照負荷分散</strong></th>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;">✘</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>更新負荷分散</strong></th>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;">✘</td>
<td style="font-size: 85%;">✘</td>
<td style="font-size: 85%;">✘</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>地理分散</strong></th>
<td style="font-size: 85%;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
<td style="font-size: 85%;">✘</td>
<td style="font-size: 85%;">✘</td>
<td style="font-size: 85%;">✘</td>
</tr>
</tbody>
</table>
<p>YugabyteDB は PostgreSQL/Cassandra との互換インターフェイスを持っているとしても、中身はまったく異なるアーキテクチャになりますので、分散データベースアーキテクチャにあったデータベースの設計が重要です。</p>
<p>小規模で、アプリケーションの改修やスキーマ変更は極力避けたい、十数秒～数分程度のダウンタイムがあったとしても許容されるようなアプリケーションの場合は、Pacemaker/Pgpool-II を使った冗長化構成の方が良いのではないかと思います。</p>
<p>極めてダウンタイムをなくしたい場合や、PostgreSQL ではさばけないほどの書き込み量に対応したい場合には YugabyteDB の利用が適切でしょう。</p>
<h2>終わりに</h2>
<p>今回の記事では、YugabyteDB のユースケースや従来のソリューションとの使い分けのポイントについて紹介します。</p>
<p>多くのアプリケーションには PostgreSQL は十分に耐えられていますが、PostgreSQL では実現できないこと、(例えば、ゼロダウンタイムの可用性やスケーラビリティ) が求められるようなユースケースには、YugabyteDB は有力な選択肢と言えるでしょう。</p>
<p>国内でも YugabyteDB のスケーラビリティのメリットを活かしたユースケースでの利用実績があり、今後も利用する企業は増えてくると思います。</p>
<div>
<a href="https://www.sraoss.co.jp/prod_serv/consulting/yugabytedb/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-yugabyte" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、YugabyteDB のコンサルティングサービスを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL互換の分散SQLデータベースYugabyteDBの紹介</title>
		<link>https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-intro/</link>
		
		<dc:creator><![CDATA[彭 博 (Bo Peng)]]></dc:creator>
		<pubDate>Tue, 01 Aug 2023 05:30:23 +0000</pubDate>
				<category><![CDATA[YugabyteDB]]></category>
		<category><![CDATA[Cassandra]]></category>
		<category><![CDATA[NewSQL]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[分散SQL]]></category>
		<guid isPermaLink="false">https://www.sraoss.co.jp/tech-blog/?p=12788</guid>

					<description><![CDATA[クラウドネイティブの登場でアプリケーションのアーキテクチャが変化しており、その変化に追随するためにスケーラビリティ、高可用性、アジリティを備えたデータベースが求められるようになっています。長い歴史を持つ RDBMS は  ...]]></description>
										<content:encoded><![CDATA[<p>クラウドネイティブの登場でアプリケーションのアーキテクチャが変化しており、その変化に追随するためにスケーラビリティ、高可用性、アジリティを備えたデータベースが求められるようになっています。長い歴史を持つ RDBMS は ACID 特性という概念に基づいて設計されており、データの一貫性が保証されていますが、拡張困難という弱点があります。一方、NoSQL はデータの一貫性を犠牲にすることで、水平方向拡張性や高い処理性能を実現しています。</p>
<p>RDBMS と NoSQL にはそれぞれの得意不得意がありますが、分散 SQL データベースはこのような拡張性と一貫性のトレードオフをなくし、RDBMS と NoSQL の両方の特長を融合して設計されたデータベース技術です。</p>
<p>現在様々な分散 SQL データベース製品が開発されていますが、その中で PostgreSQL および Cassandra との互換性を持つ、代表的なものとして <a href="https://www.yugabyte.com/">YugabyteDB</a> という製品があります。本記事では、YugabyteDB の概要、特長、アーキテクチャについて紹介します。</p>
<p><span id="more-12788"></span></p>
<h2>YugabyteDB とは</h2>
<p>YugabyteDB は、Google Spanner の設計からインスピレーションを得て開発されたオープンソースの分散 SQL データベースです。米国に本社を置く <a href="https://www.yugabyte.com/about/">Yugabyte 社</a>によって開発されています。</p>
<p>PostgreSQL および Cassandra と互換性を持ち、一貫性、拡張性、高可用性を兼ね備えたクラウドネイティブな分散型 SQL データベースです。</p>
<h2>YugabyteDBの特長</h2>
<p>YugabyteDB には次のような特長があります。</p>
<h3>PostgreSQL/Cassandra 互換</h3>
<p>YugabyteDB は RDBMS の PostgreSQL および NoSQL の Cassandra と高い互換性を持ち、PostgreSQL や Cassandra から YugabyteDB への移行に伴うアプリケーションの修正は少なくて済みます。</p>
<h3>一貫性と拡張性の両立</h3>
<p>従来の RDBMS では、SQL を使って複雑な集計や検索などの操作が可能です。また、トランザクションに対応しており、厳密なデータの一貫性が保証されるのが特長です。RDBMS は一貫性を保つためにもともとは 1台のサーバで実行するよう設計されているので、拡張しにくいというデメリットがあります。同じ状態を持つ複数サーバを用意して、読み取り処理を分散させることは可能ですが、書き込み処理は一貫性を保つために複数のサーバで並行して処理できません。データが大規模になると、処理速度が低下してしまうというのが RDBMS の大きな課題の1つとなります。</p>
<p>RDBMS のこういった性能課題に対して、NoSQL はデータの一貫性を犠牲にしているので、水平方向拡張性や可用性に優れています。必要に応じて自由に拡張できるので、大規模なデータであっても高速に処理できます。</p>
<p>YugabyteDB はこのような性能と一貫性のトレードオフをなくした、「一貫性」、「拡張性」、「高可用性」を兼ね備えたクラウドネイティブな分散データベースです。</p>
<h3>読み取り・書き込み負荷分散</h3>
<p>ローカルのディスクへアクセスしてデータを処理する RDBMS は複数のノードにまたがってデータを処理する YugabyteDB より処理速度は速いですが、大規模データになると、処理性能が落ちてしまいます。サーバのスペックを増やすことで性能が改善されますが、限界があります。同じ状態を持つ複数サーバを用意して、読み取りは分散して処理することはできますが、書き込みは一貫性を保つために、分散して処理できません。そのため、RDBMS は大規模データの書き込み処理能力が求められるアプリケーションには適していません。</p>
<p>YugabyteDB は水平方向拡張性や柔軟性に優れているため、処理するデータ量の増減に応じて、柔軟にスケールアウト/スケールインできます。また、RDBMS の書き込み処理が分散できないという弱点に対して、YugabyteDB はどのノードでも書き込み処理を行え、複数のサーバで分散して処理できるので、大規模で同時接続数が多いシステムでは、RDBMS と比べて高い性能を実現できます。</p>
<p>YugabyteDB は 1台のサーバではさばけないほど膨大なデータを扱い、今後もデータ量の増加が予想されるようなアプリケーションに適しています。</p>
<h3>高可用性・耐障害性</h3>
<p>従来のデータベースでは高可用性を実現するには、外部クラスタリングソフトウェアを利用するのが一般的です。クラスタリングソフトウェアは、常にデータベースサーバを監視し、プライマリに障害が発生した場合、レプリカを昇格し、レプリカへ切り替えることで、サービスを継続します。ただし、このような構成では系統切り替え時に若干のダウンタイムが発生するというデメリットがあります。</p>
<p>YugabyteDB には高可用性機能がビルトインされており、追加クラスタリングソフトウェアを導入する必要がなく、シンプルな構成で継続的な可用性を実現できます。また、系統切り替え処理は必要ないので、データベースノードに障害が起きたとしても、ダウンタイムなくデータベースの運用を続行できます。従来のデータベースの HA 構成より可用性に優れています。</p>
<p>また、YugabyteDB はマルチ AZ、マルチリージョン、マルチクラウド、ハイブリッドクラウド構成にも対応しているため、クラウドサービス、リージョン、データセンターなど、あらゆる規模での耐障害性を提供しています。</p>
<h3>企業競争力を高める俊敏性</h3>
<p>クラウドネイティブ時代に、企業の競争力を高める、俊敏性が強く求められています。従来のデータベースでは可用性や拡張性を実現するために、構成が複雑になってしまい、俊敏性が失われてしまいます。YugabyteDB は可用性と拡張性を併せ持ったオールインワンのソリューションなので、より迅速にデータベースクラスタを構築でき、リリースサイクルを短縮することができます。</p>
<p>さらに、フルマネージドサービスである <a href="https://www.yugabyte.com/managed/">YugabyteDB Managed</a> も提供されています。管理コンソールで数回クリックするだけで指定したクラウド上にデータベースクラスタを迅速に構築できます。従来のように、サーバの構築、OS やミドルウェアのインストール・設定などのインフラ作業を行わなくて済むので、ビジネスを支えるアプリケーションの開発に集中でき、より俊敏性を高め、TCO 削減を実現できます。</p>
<h3>地理分散</h3>
<p>地理分散というのは、地理的に離れた複数の場所にまたがったデータベースクラスタのことで、デプロイメントパターンの1つです。</p>
<p>近年、データセンター障害や自然災害が発生した際に、早期復旧または事業継続を図るための対策の重要性が高まっています。地理分散デプロイメントを利用することで、データセンターの障害や自然災害が起こったとしても、サービスを中断することなく、継続して利用可能です。特定のリージョンで障害が起こっても、別のリージョンにあるノードが処理を継続するため、リージョン障害に対する回復力を持たせることが可能になります。</p>
<p>また、地理的に分散した場所にまたがるアプリケーションの場合にも活用できます。例えば、グローバルに広がった複数の拠点にまたがって YugabyteDB をデプロイし、利用ユーザの近いところにデータを配置することで、よりレイテンシーを抑えることが可能になります。</p>
<p>また、個人情報など機密性の高い情報を国内や特定の地域のデータセンターに保管する、といったユースケースに最適です。</p>
<h3>様々な稼働環境に対応</h3>
<p>YugabyteDB はオンプレミスやクラウド、仮想環境はもちろん、Kubernetes などのコンテナプラットフォームも含め、様々な環境に対応しており、マルチクラウドやハイブリッドクラウドでも利用できます。</p>
<p>また、YugabyteDB ではデプロイメントパターンや構成オプションが多く用意されており、アプリケーション要件に応じて、柔軟に環境や構成を選ぶことができます。</p>
<h2>YugabyteDB の製品ラインナップ</h2>
<p>YugabyteDB のコアとなる機能はオープンソースとして公開されており、無償で利用できます。</p>
<p>有償製品として、YugabyteDB Aeon があり、Self-Managed、Bring Your Own Cloud (BYOC) および Full-Managed の3つのオプションが提供されています。</p>
<p>&nbsp;</p>
<table>
<thead>
<tr>
<th rowspan="2"></th>
<th rowspan="2"><strong>コミュニティ版</strong></th>
<th style="text-align: center;" colspan="3"><strong>YugabyteDB Aeon</strong></th>
</tr>
<tr>
<th><strong>Self-Managed</strong></th>
<th><strong>Bring Your Own Cloud<br />
(BYOC)</strong></th>
<th><strong>Full-Managed</strong></th>
</tr>
</thead>
<tbody>
<tr>
<th nowrap="nowrap"><strong>稼働環境</strong></th>
<td style="font-size: 85%;">任意の環境<br />
(オンプレミス、クラウド、Kubernetesなど)</td>
<td style="font-size: 85%;">任意の環境<br />
(オンプレミス、クラウド、Kubernetesなど)</td>
<td style="font-size: 85%;">お客様のパブリッククラウドVPC</td>
<td style="font-size: 85%;">Yugabyteパブリッククラウド<br />
(AWS、GCP、Azure)</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>概要</strong></th>
<td style="font-size: 85%;">コアとなる基本的な機能</td>
<td style="font-size: 85%;">コア機能に加え、構築やDay2運用の自動化機能が追加されている</p>
<ul>
<li style="font-size: 85%;">GUI管理コンソール</li>
<li style="font-size: 85%;">バックアップの自動化</li>
<li style="font-size: 85%;">モニタリング・アラート</li>
<li style="font-size: 85%;">無停止アップグレード</li>
<li style="font-size: 85%;">など</li>
</ul>
</td>
<td style="font-size: 85%;">既存のクラウドインフラストラクチャを活用しつつ、YugabyteDBマネージドサービスの利点も享受できる</td>
<td style="font-size: 85%;">フルマネージドサービス</p>
<ul>
<li style="font-size: 85%;">GUI管理コンソール</li>
<li style="font-size: 85%;">バックアップの自動化</li>
<li style="font-size: 85%;">モニタリング・アラート</li>
<li style="font-size: 85%;">無停止アップグレード</li>
<li style="font-size: 85%;">など</li>
</ul>
</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>運用主体</strong></th>
<td style="font-size: 85%;">お客様</td>
<td style="font-size: 85%;">お客様+Yugabyte運用自動化ツール</td>
<td style="font-size: 85%;">Yugabyte</td>
<td style="font-size: 85%;">Yugabyte</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>サポート</strong></th>
<td style="font-size: 85%;">コミュニティサポート</td>
<td style="font-size: 85%;">24×365エンタープライズサポート</td>
<td style="font-size: 85%;">24×365エンタープライズサポート</td>
<td style="font-size: 85%;">24×365エンタープライズサポート</td>
</tr>
<tr>
<th nowrap="nowrap"><strong>費用</strong></th>
<td style="font-size: 85%;">無償</td>
<td style="font-size: 85%;">vCPUコア・ベースの年間サブスクリプション</td>
<td style="font-size: 85%;">vCPUコア・ベースの年間サブスクリプション</td>
<td style="font-size: 85%;">使用量課金</td>
</tr>
</tbody>
</table>
<h2>YugabyteDB のアーキテクチャ</h2>
<h3>従来の RDBMS との違い</h3>
<p>従来の RDBMS ではプライマリしか書き込み処理を受け付けられないという特性があり、冗長構成する場合は、書き込み処理をプライマリに送って、ストリーミングレプリケーションを使ってプライマリとレプリカの同期を行うのが一般的です。</p>
<p>一方、YugabyteDB ではプライマリとレプリカといった役割がなく、すべてのノードがプライマリとして振る舞い、書き込み処理を受け付けます。</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12836" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/RDBvsYB.png" alt="" width="1515" height="751" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/RDBvsYB.png 1515w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/RDBvsYB-300x149.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/RDBvsYB-1024x508.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/RDBvsYB-768x381.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/RDBvsYB-304x151.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/RDBvsYB-282x140.png 282w" sizes="auto, (max-width: 1515px) 100vw, 1515px" /></p>
<h3>YugabyteDB の内部構造</h3>
<p>YugabyteDB は <strong>YB-Master </strong>と <strong>YB-TServer </strong>の2つコンポーネントから構成されています。</p>
<p>YB-Master と YB-TServer の役割は以下の通りです。</p>
<ul>
<li><strong>YB-Master</strong>: クラスタ全体のメタデータの管理、構成管理</li>
<li><strong>YB-TServer</strong>: アプリケーションからのクエリを処理して、データとして保持</li>
</ul>
<p>YB-Master は Raft という分散合意アルゴリズムを使って、冗長化しています。YugabyteDB のノードをデプロイすると、YB-Master と YB-TServer が自動的に作成されますが、YB-Master は最大 replication factor の数までしか作成されません。</p>
<p>replication factor とはデータのコピーの数のことです。つまり、同一データを保持する tablet peer における tablet の数のことです。(tablet については後述します。)</p>
<p>例えば、<code>replication factor = 3</code> で 5ノードのクラスタを作成すると、以下のような構成になります。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12868" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/architecture.png" alt="" width="1354" height="282" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/architecture.png 1354w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/architecture-300x62.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/architecture-1024x213.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/architecture-768x160.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/architecture-304x63.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/architecture-282x59.png 282w" sizes="auto, (max-width: 1354px) 100vw, 1354px" /></p>
<h3> YB-TServerの内部構造</h3>
<p>ここでは、YB-TServer の内部構造について紹介します。</p>
<p>YB-TServer はクエリを処理するクエリレイヤとデータを処理するストレージレイヤの2つのレイヤに分かれています。</p>
<p>クエリレイヤは PostgreSQL 互換の API および Cassandra 互換の API をサポートしています。クエリレイヤは PostgreSQL のクエリ処理部分を再利用しているので、PostgreSQL との高い互換性を実現しています。クエリレイヤがクライアントリクエストを受け付けて、クエリを処理して、下位ストレージレイヤに送ります。</p>
<p>下位のストレージレイヤでは、テーブルとインデックスのデータは、自動的に複数のシャード(YugabyteDB では tablet と呼ばれる。以降、tablet) に分割され、各ノードの DocDB に分散配置されます。ノード間でデータの複製は tablet 単位で行われ、同じデータを持っている、複数の tablet 群が tablet peer と呼ばれます。各 tablet peer は1つの leader と複数の follower から構成され、内部的に Raft という合意アルゴリズムを使っています。基本的にはユーザからの書き込み・読み取り処理は leader に対して実行されます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12869" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/tserver.png" alt="" width="1112" height="905" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/tserver.png 1112w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/tserver-300x244.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/tserver-1024x833.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/tserver-768x625.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/tserver-263x214.png 263w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/tserver-282x230.png 282w" sizes="auto, (max-width: 1112px) 100vw, 1112px" /></p>
<h2>障害時にもサービスが継続</h2>
<p>YugabyteDB では、書き込み・読み取り処理は基本的には leader tablet に対して実行されますが、leader tablet がダウンしたら、どうのようにサービスを継続させるのか。ここでは、障害が発生した場合の挙動について説明します。</p>
<p>leader がダウンしたら、YugabyteDB が自動的に障害の発生を検出でき、3秒以内にいずれかの follower を leader に昇格させ、処理を継続します。table peer 単位で一定の値の tablet 数(=replication factor) を維持しないといけないため、別のノードに follower がリバランスされます。</p>
<p>クライアントからの接続は透過的に新しいリーダーに継続し、ユーザにデータベースノードがダウンしたことを意識させることなく継続使用が可能となります。また、leader と follower 間では、同期レプリケーションのため、ノード障害が発生しても、データの損失はありません。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12857" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/highavailability.png" alt="" width="1146" height="1101" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/highavailability.png 1146w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/highavailability-300x288.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/highavailability-1024x984.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/highavailability-768x738.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/highavailability-223x214.png 223w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/highavailability-271x260.png 271w" sizes="auto, (max-width: 1146px) 100vw, 1146px" /></p>
<h2>スケールアウト</h2>
<p>YugabyteDB では、簡単にノード数を増やすことができるので、アクセス数が増えた場合にも、容易に対応できるというメリットがあります。ノードを追加すると、leader と follower がノード間で均等に配置されるように自動的にリバランスされます。</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12859" src="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/scaleout.png" alt="" width="1200" height="844" srcset="https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/scaleout.png 1200w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/scaleout-300x211.png 300w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/scaleout-1024x720.png 1024w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/scaleout-768x540.png 768w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/scaleout-304x214.png 304w, https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2023/07/scaleout-282x198.png 282w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></p>
<h2>終わりに</h2>
<p>今回は、PostgreSQL/Cassandra 互換の分散 SQL データベース YugabyteDB の概要や特長、アーキテクチャについて紹介しました。</p>
<p>YugabyteDB を使うことによって、サービスのダウンタイムの短縮、高い可用性、大容量データに対する高い処理性能など多くのメリットを得られます。PostgreSQL と高い互換性を持ち、アプリケーションの修正は少なくて済むので、比較的容易に移行できます。既存の PostgreSQL では解決できない書き込み性能問題や障害によるダウンタイムを改善したい場合は、YugabyteDB の使用を検討してみてはいかがでしょうか。</p>
<p>次回は、YugabyteDBの<a href="https://www.sraoss.co.jp/tech-blog/yugabytedb/yugabytedb-usecase/">ユースケース</a>や構成について詳しく紹介します。</p>
<div>
<a href="https://www.sraoss.co.jp/prod_serv/consulting/yugabytedb/?utm_source=sraoss-techblog&utm_medium=referral&utm_campaign=under-article-yugabyte" rel="noopener" style="color:initial;" target="_blank" class="no-ext"></p>
<div style="background-color:#DAEFF6; padding:20px; border-radius:8px; text-align:center;">
SRA OSSでは、YugabyteDB のコンサルティングサービスを提供しております。<br />
詳しくは<strong style="color:#2581c4;">弊社ホームページ</strong>をご覧ください。
</div>
<p></a>
</div>

]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
