前書き

データベースは時間とともに成長し、ファイルシステムのスペースが大きくなることがあります。 また、オペレーティングシステムの他の部分と同じパーティションにI / O競合がある場合もあります。 RAID、ネットワークブロックストレージ、およびその他のデバイスは、冗長性およびその他の望ましい機能を提供できます。 スペースを追加する場合、パフォーマンスを最適化する方法を評価する場合、または他のストレージ機能を活用する場合、このチュートリアルでは、MySQLのデータディレクトリの再配置について説明します。

ここでの指示は、MySQLの単一インスタンスを実行するサーバーに適しています。 複数のインスタンスがある場合、ガイドhttps://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location-on-ubuntu-16- 04 [Ubuntu 16.04でMySQLデータディレクトリを新しい場所に移動する方法]は、構成設定を介して明示的に場所を変更するための指示に役立ちます。

前提条件

このガイドを完了するには、次のものが必要です。

  • * `+ sudo +`特権を持つ非rootユーザーを持つUbuntu 16.04サーバー*。 これらの権限を持つユーザーを設定する方法については、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [Ubuntu 16.04での初期サーバー設定]をご覧ください。 ]ガイド。

  • * MySQLサーバー*。 まだ設定していない場合は、https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04 [Ubuntu 16.04にMySQLをインストールする方法]ガイドあなたを助けることができます。

  • データベースのバックアップ。 MySQLの新規インストールで作業している場合を除き、データのバックアップがあることを確認する必要があります。 ガイドhttps://www.digitalocean.com/community/tutorials/how-to-backup-mysql-databases-on-an-ubuntu-vps[Ubuntu VPSでMySQLデータベースをバックアップする方法]は、これに役立ちます。

この例では、「+ / mnt / volume-nyc1-01 +」にマウントされたブロックストレージデバイスにデータを移動しています。 DigitalOceanでブロックストレージを使用する方法ガイドで設定方法を学習できます。

基礎となるストレージの種類にかかわらず、このガイドはデータディレクトリを新しい場所に移動するのに役立ちます。

手順1-MySQLデータディレクトリの移動

データの整合性を確保するために、MySQLをシャットダウンします。

sudo systemctl stop mysql

`+ systemctl +`はすべてのサービス管理コマンドの結果を表示しないため、成功したことを確認したい場合は、次のコマンドを使用します。

sudo systemctl status mysql

出力の最終行にサーバーが停止していることが示されている場合は、確実にシャットダウンしています。

Output. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

サーバーがシャットダウンしたら、既存のデータベースディレクトリを新しい場所に移動します。

sudo mv /var/lib/mysql

次に、シンボリックリンクを作成します。

sudo ln -s  /var/lib/mysql

シンボリックリンクが適切に配置されている場合、これはMySQLを再び起動する適切な時期のように見えますが、それを正常に実行する前にもう1つ設定する必要があります。

ステップ2-AppArmorアクセス​​制御ルールの構成

MySQLディレクトリをMySQLサーバーとは異なるファイルシステムに移動する場合、AppArmorエイリアスを作成する必要があります。

エイリアスを追加するには、AppArmorの `+ alias +`ファイルを編集します:

sudo nano /etc/apparmor.d/tunables/alias

ファイルの最後に、次のエイリアスルールを追加します。

/etc/apparmor.d/tunables/alias

. . .
alias /var/lib/mysql/ -> ,
. . .

変更を有効にするには、AppArmorを再起動します。

sudo systemctl restart apparmor

_Now_これでMySQLを起動する準備が整いました。

sudo systemctl start mysql
sudo systemctl status mysql

MySQLを再起動したら、機会を利用して、データが正常であり、MySQLが期待どおりに機能していることを確認してください。

結論

このチュートリアルでは、MySQLのデータを移動し、シンボリックリンクを使用して、MySQLに新しい場所を認識させました。 また、調整に対応するためにUbuntuのAppArmor ACLを更新しました。 Block Storageデバイスを使用していましたが、ここの手順は、基盤となるテクノロジーに関係なく、データディレクトリの場所を再定義するのに適しているはずです。

このアプローチは、MySQLの単一インスタンスを実行している場合にのみ適しています。 単一のサーバーで実行されている複数のMySQLインスタンスをサポートする必要がある場合は、https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location- on-ubuntu-16-04 [Ubuntu 16.04でMySQLデータディレクトリを新しい場所に移動する方法]が役立ちます。