sql >> データベース >  >> RDS >> Mysql

MySQLをUbuntuにデプロイして完全に管理する方法

    このブログ投稿では、Ubuntu 20.04オペレーティングシステムに手動で、またScaleGridのマネージドデータベースサービスを使用して、MySQLサーバーをインストールおよびセットアップする方法のステップバイステップガイドを紹介します。このチュートリアルの次のセクションでは、独自のMySQLサーバーを正常にセットアップし、適切に構成するためのすべてのステップを支援します。

    MySQLとUbuntuについて少し

    MySQLは、オープンソースのリレーショナルデータベース管理システム(DBMS)です。 WindowsおよびLinuxサーバーで実行され、通常、LAMPスタック(Linux、Apache、MySQL、PHP / Python / Perl)またはLEMPスタック(Linux、Nginx、MySQL、PHP)の一部としてインストールされます。高速でシンプルかつスケーラブルなSQLベースのシステムであり、最も人気のあるリレーショナルデータベース管理システムと見なされているため、データベースが必要なだけであることがわかっている場合は、これが適切な選択です。

    Ubuntuは世界で最も人気のあるオープンソースデスクトップOSの1つですが、Ubuntu 20.04には、エンタープライズクラスの安定性、復元力、さらに優れたセキュリティが費用対効果の高いモデルで備わっています。

    Ubuntu20.04にMySQLをインストールする方法

    UbuntuにMySQLサーバーをインストールするプロセスに飛び込む前に、次の前提条件に留意してください。

    • 権限のある手順を実行するための非root管理者またはsudoユーザーとUFW構成のファイアウォールを備えたUbuntu20.04サーバー
    • システムは次の方法で更新する必要があります:
      • sudo apt update
      • sudo apt upgrade -y
    • 安定したネットワーク接続

    Ubuntu20.04へのMySQLの新規インストール

    MySQLのインストール

    MySQLをUbuntu20.04にインストールするには、インストールパッケージが公式のUbuntu 20.04リポジトリの一部であるため、簡単なコマンド(apt install mysql server)を実行できます。

    apt install mysql-server -y

    MySQLサーバーのインストールの保護

    MySQLサーバーには、安全にインストールするための事前に作成されたスクリプトがあります。これを安全なインストールにするための一般的な方法として、インストールコマンドの後にこのスクリプトを実行します。これにより、ユーザーはMySQLのrootパスワードを設定し、ローカルホストの外部からrootアカウントへのアクセスを無効にし、匿名ユーザーアカウントを削除し、匿名ユーザーがアクセスする可能性のあるテストデータベースを削除できます。このスクリプトは、このsudoで呼び出すことができます コマンド:

    sudo mysql_secure_installation

    セキュアインストールスクリプトを実行すると、一連のプロンプトが表示されます。最初のプロンプトは、VALIDATE PASSWORD COMPONENTを設定することです。 。このプロンプト(選択されている場合)は、ユーザーのパスワード作成時に検証を実行します。 MySQLのパスワード標準に一致する場合にのみ、パスワードを作成できます。

    ルートパスワードの設定

    次のプロンプトは、rootのパスワードを設定するためのものです。ユーザーはこのパスワードを設定する必要があります。これはセキュリティの観点からのベストプラクティスであるため、以降のすべてのプロンプトに「はい」と答えてください。

    MySQLサーバーインストール用のSSLの設定

    MySQLをインストールした後、データベースサーバーが同じネットワークまたは別のネットワーク上の別の物理マシンで構成されている場合があります。このようなデータベースと通信するには、通信を保護して暗号化する必要があります。したがって、SSL証明書をデータベースサーバーにインストールして有効にする必要があります。 SSLプロトコルは、キーのペアを使用して、安全な接続を認証、保護、および管理します。次のコマンドを使用してSSLキーを生成します。

    sudo mysql_ssl_rsa_setup --uid=mysql

    デフォルトのディレクトリにはこれらのキーが含まれており、次のコマンドを呼び出すことでそれらを見つけることができます。

    sudo sudo find /var/lib/mysql -name '*.pem' -ls

    mysql> \s

    SQLプロンプト内から上記のコマンドを呼び出すことにより、SSL: Cipher in use is […]という行を探して、SSLがアクティブであることを確認できます。 、下の画像に見られるように。

    データベースの保護

    データベースのセキュリティは、MySQLのインストールを計画する際に考慮すべき最も重要な要素の1つです。攻撃者は、データベースシステムへのバックドアエントリを取得し、ターゲットに関する内部情報を取得する方法を常に探しています。デフォルトのポートを変更することは、データベースのセキュリティを強化する簡単な方法です。これは、/etc/mysql/mysql.conf.d/mysqld.cnfの構成ファイルで変更できます。 。

    MySQLユーザーとデータベースを作成する

    この簡単なコマンドを使用すると、MySQLデータベースのユーザーアカウントとそのパスワードを作成できます。

    CREATE USER 'Username' @ 'localhost'  IDENTIFIED BY 'StrongPassword';

    フィールドlocalhost CREATE USERで コマンドは、ユーザーが同じサーバーから接続することを示します。特定のIPアドレスを持つマシンから接続する場合は、IPアドレスに置き換えることができます。または、パーセント記号%に置き換えることができます。 ユーザーがどこからでもDBにアクセスしたい場合。

    データベースのみを作成する場合は、次のコマンドを使用してデータベースを作成できます。

    CREATE DATABASE databasename;

    ユーザーとデータベースを作成すると、ユーザーにはデータベースに必要な権限が付与されます。

    権限はどのタイプでもかまいません。たとえば、CREATEALTERINSERTUPDATEDELETESELECTRELOAD 、など。通常、データベースの所有者にはすべての権限が必要であり、これらの権限はユーザーに個別に割り当てることができます。コマンドを使用して、これらすべての権限を一度に付与できます。

    GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';

    この場合も、localhostキーワードはIPアドレスまたは%に置き換えることができます。 ユーザーが特定のIPアドレスまたはその他のソースから接続する場合は署名します。

    ユーザーの権限は、SHOWGRANTSコマンドで確認できます

    SHOW GRANTS for 'databaseuser'@'localhost';

    次のコマンドを使用して、ユーザーのすべての特権を取り消すことができます:

    REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';

    ここでは、REVOKEを実行した後にそれを見ることができます コマンド、ユーザーjasonの権限はありません 。

    テーブルの作成と削除

    データベースにテーブルを追加したり、データベースからテーブルを削除したりするのは簡単です。次のいずれかのコマンドを使用するだけです。

    DROP TABLE databasename.tablename

    CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);

    columnパラメーターは名前を指定し、datatypeパラメーターは列に含まれるデータのタイプを指定します。

    主キーを列に追加する必要がある場合があります。主キーを使用すると、テーブル内の各エントリを一意に識別できます。これは、CREATE TABLEで言及することで実行できます。 指図。次の例では、列user_idを作成します 自動インクリメントされる主キーを使用します。主キーには一意の値が含まれている必要があり、null値を含めることはできないことに注意してください

    テーブルの列の追加または削除

    作成後にデータベースの特定のテーブルに列を追加したり、データベースの特定のテーブルから列を削除したりすることもできます。

    これを行うには、use database_nameを使用して、変更するデータベースを変更します。 コマンド。

    続いて、次のコマンドで列を追加および削除します。

    ALTER TABLE tablename ADD columnname datatype;
    ALTER TABLE tablename DROP columnname;

    テーブルにデータを挿入

    次のコマンドを使用して、テーブルにデータを挿入します。

    INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );

    各列に挿入する列名と値を順番に指定する必要があります。テーブルのすべての列に値を挿入する場合は、列を省略して、テーブル名の直後に値の指定を開始できます。

    INSERT INTO tablename VALUES ('value1','value2','value3' );

    Update Data in a Table

    次のコマンドを使用して、テーブルのデータを更新します。

    UPDATE tablename SET columnname= 'newvalue'  WHERE columnname='value'

    WHERE 条件は、データを更新する必要がある行を示します。条件が指定されていない場合、データは指定された列のすべての行で更新されます。

    テーブルからデータを選択

    テーブルの特定の列からデータを選択して表示するには、次のコマンドを使用します。

    SELECT column1,column2 FROM tablename;

    ただし、テーブルからすべての列を選択するために使用されるコマンドは次のとおりです。

    SELECT * FROM tablename;

    バイナリロギングを有効にする

    MySQLデータベースサーバーでバイナリロギングを有効にすると、データベースに変更を加えたクエリをログに記録できます。バイナリロギングは、たとえばデータベースのクエリによって引き起こされた問題のトラブルシューティングが必要な場合に有効にする便利な機能です。

    バイナリログを有効にするには、/etc/mysql/mysql.conf.d/mysqld.cnfの構成ファイル内に次の行を追加します。 。

    log-bin=mysql-bin.log

    バイナリロギングがアクティブかどうかを確認するには、MySQLシェルから次のコマンドを呼び出します。

    show variables like  '% log_bin%'

    デフォルトでは、バイナリログファイルは/var/lib/mysql内に保存されます Ubuntuを含むほとんどのLinuxディストリビューションのディレクトリ。

    単純な非同期レプリケーションのセットアップ

    MySQLはレプリケーションをサポートしています。これは、ディザスタリカバリを計画し、ダウンタイムの可能性を最小限に抑えるために役立ちます。 MySQLは2種類のレプリケーションをサポートしています:

    • 準同期レプリケーション
    • 非同期レプリケーション

    準同期レプリケーションでは、ソースがトランザクションをコミットすると、ソースがトランザクションを実行したセッションに戻る前に、すべてのレプリカもトランザクションをコミットします。欠点は、前述のトランザクションシステムが原因で、トランザクションの完了が大幅に遅れることです。

    一方、非同期レプリケーションでは、ソースはイベントをバイナリログに書き込み、レプリカは準備ができたときにイベントを要求します。ただし、イベントがレプリカに到達するという保証はありません。

    デフォルトでは、MySQLは処理時間が速いため、非同期レプリケーションが有効になっています。それでも、主な欠点は、ソースデータベースに障害が発生した場合、レプリカDBへのトランザクションを完了していないデータを取得する方法がないことです。一方、準同期レプリケーションモードは、データの可用性と耐久性に重点を置いていますが、非常に低速です。レプリケーションモードの選択は、データベース設定に関するユーザー固有のニーズにのみ依存します。

    ソースサーバーとレプリカサーバーのmy.cnfファイル内に、それぞれサーバーIDを次のように書き込むことができます。

    server_id=1
    server_id=2

    専用のMySQLユーザーをソースサーバー上に作成できます。これは、レプリカがソースサーバーに接続するために使用します。

    GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server'
    → IDENTIFIED BY ‘masterpassword’;

    レプリカサーバーでのレプリケーションプロセスは、次の方法で開始できます。

    mysql> CHANGE MASTER TO
    -> MASTER_HOST='ip address',
    -> MASTER_PORT=port number,
    -> MASTER_USER='username',
    -> MASTER_PASSWORD='password',
    -> MASTER_LOG_FILE='',
    -> MASTER_LOG_POS=4;
    mysql> start slave;

    これらの手順により、ソースサーバーのコピーとしてレプリカサーバーの作成が開始されます。

    MySQLデータベースのバックアップ/復元

    データベースのバックアップを保持することは常に良い考えです。重要なデータが失われないようにするために、いつ必要になるかわかりません。 Ubuntu OSでMySQLのデータベースをバックアップするには、次のmysqldumpを実行するだけです。 コマンド:

    sudo mysqldump -u root -p <database.name> > <filename.sql>

    削除されたデータベースを復元するには、最初にデータベースがMySQLで同じ名前で作成されます。次に、次のコマンドを使用してデータベースを復元します。

    sudo mysql -u root -p <database.name> < <filename.sql>

    次のスクリーンショットは、最初にtest_databaseを削除し、次にそれを再作成して、前に作成したバックアップからすべてのデータを復元しようとします。データのインポートも同じプロセスに従って行うことができます。

    UbuntuへのMySQLのインストールのまとめ

    これで、Ubuntu20.04にMySQLをインストールするための基本的な手順が正常に完了しました。インストールが完了すると、次のアプリケーションやWebサイトの構築に使用できる運用リレーショナルデータベースが作成されます。

    このプロセス全体を専門家が自動化して管理したい場合は、このガイドの次の部分を確認してください。

    ScaleGridを使用したDigitalOceanMySQLデプロイメントのセットアップ

    ガイドのこの部分では、DigitalOceanで最高のスループットと最低のレイテンシーを提供する、フルマネージドのMySQLホスティングソリューションを使用しています。詳細については、「ベストMySQL DigitalOceanパフォーマンス」の記事を参照して、ScaleGridとDigitalOceanマネージドデータベースの価格、レイテンシ、スループットパフォーマンスを比較してください。

    プロセス全体は20分未満で完了し、最初はMySQLデプロイメント構成をカスタマイズするのに数分、最後はアプリケーションに接続するのに数分かかります。 。

    無料トライアルアカウントにサインアップした後、最初に行うことは、データベースとしてMySQL、クラウドとしてDigitalOcean、および開始する計画として専用ホスティングを選択することです。クラスター作成プロセス:

    ステップ1.MySQLデプロイメントの詳細を入力します

    クラスター作成ウィザードが開き、デプロイメントの基本的な詳細をカスタマイズできる最初のステップが表示されます。英数字を使用してクラスターの名前を入力し、後でクラスターを簡単に認識できるように、一意でわかりやすい名前を使用します。

    次に、クラウドリージョンのドロップダウンからマスターサーバーに使用するDigitalOceanデータセンターを選択します。アプリケーションと同じリージョンを使用することをお勧めしますDigitalOceanドロップレットパフォーマンス。次に、DigitalOcean DropletインスタンスのVMサイズと、使用するMySQLのバージョン(すべてのメジャーバージョンがサポートされています)を選択できます。 InnoDB Storage Engineは、すべてのMySQLデプロイメントのデフォルトです。 [次へ]をクリックします。

    ステップ2.マスター/スレーブレプリケーションを有効にする

    手順2では、DigitalOcean MySQLマスタースレーブレプリケーションを有効にして、デプロイメントに高可用性を追加できます。 DigitalOceanデータセンターリージョンがダウンした場合にユーザーがアプリケーションを利用可能でオンラインに保つには、レプリケーションが重要です。 DigitalOceanは99.99%の稼働率を持つ信頼性の高いクラウドプロバイダーですが、データセンターは必然的にダウンするため、データを追加のデータセンターの場所に複製することで、ユーザーのデータ損失とダウンタイムのリスクを最小限に抑えることができます。

    スタンドアロン展開を続行する場合は、[次へ]をクリックして、マスタースレーブ構成を有効にせずに手順3に進みます。

    注–マスタースレーブ構成は有料アカウントでのみ使用できます。試用モードでは、レプリカセットの展開を設定できません。

    MySQLマスタースレーブセットアップの構成

    MySQLマスタースレーブ設定をカスタマイズするために、ここにいくつかのオプションがあります。まず、展開に2+1クォーラムまたは3ノードから選択できます。どちらも高可用性を提供しますが、2 + 1クォーラムのセットアップでは、クォーラムノードがフェイルオーバーイベントの意思決定者として機能するため、データを保持するノードは2つしかありません。サポートに連絡して、マスタースレーブ構成をカスタマイズし、展開にノードを追加することもできます。

    次に、準同期レプリケーションと非同期レプリケーションのどちらかを選択できます。準同期レプリケーションは、少なくとも1つのスレーブがマスターがコミットしたすべてのデータを受信したことを保証し、適切なスレーブへのフェイルオーバーが無損失であることを保証します。非同期レプリケーションでは、各スレーブがマスターと非同期に同期するため、マスターからスレーブへのフェイルオーバーにより、現在のマスターと完全に同期されていないサーバーへのフェイルオーバーが発生する可能性があります。

    最後に、スレーブノードに使用するDigitalOceanデータセンターの場所をカスタマイズします。完了したら、[次へ]をクリックします。

    DigitalOceanでMySQLを設定する方法クリックしてツイート

    ステップ3.SSLを有効にする

    手順3では、展開でSSLを有効にできます。デフォルトでは、MySQLサーバーは常にSSL構成をインストールして有効にしますが、クライアントがSSLを使用して接続することは強制されません。サーバーは両方のタイプの接続を許可するため、クライアントはSSLの有無を選択できます。このMySQLチュートリアルでSSLの構成と管理の詳細をご覧ください。

    ステップ4.ファイアウォールを構成する

    クラスター作成プロセスの最後のステップで、ファイアウォールルールを設定するためにMySQLデプロイメントへのアクセスを許可するIPCIDRを少なくとも1つ入力します。現在のIPCIDRは、ページの上部にあります。これらは、後でクラスターレベルとアカウントレベルの両方でカスタマイズできます。入力したら、[追加]をクリックします。必要なすべてのIPCIDRを入力し、[次へ]をクリックします。

    ステップ5.レビューと作成

    最後のページには、新しいMySQLDigitalOceanクラスターの簡単な要約が記載されています。すべての詳細を確認し、[前へ]ボタンをクリックして前の手順に戻り、構成を変更します。準備ができたら、[作成]をクリックしてクラスターを起動します。

    これで完了です。これで、デプロイメントがプロビジョニングされます。これには約15分かかるため、待機している間、コンソールのMySQLの管理ツール(バックアップ、復元、スケーリング、アラート、クエリ分析など)に慣れることができます。

    接続して移行

    クラスターのステータスが「作成中」から「実行中」に変わったら、デプロイメントに接続できます。これを行うには、いくつかの異なる方法があります。アプリへの接続文字列、コマンドライン、WordPress、MySQL Workbench、またはその他の一般的なGUIツールを使用します。すべての接続の詳細は、クラスターの詳細ページの[概要]タブの下半分に表示されます。

    上部のタブにアクセスしてMySQLデータベースを作成し、MySQLデータベースユーザーを作成します。これらは、ScaleGridコンソールからいつでもアクセスおよび管理できます。

    既存のMySQLインストールを数分で移行

    移行も自動化されたプロセスであり、既存の展開からいくつかの詳細を必要とします。 [概要]タブの[データのインポート]ボタンをクリックし、サーバー名、ポート、データベース名、ユーザー名、およびパスワードを入力します。詳細および追加の移行オプションについては、MySQLの移行に関するドキュメントを確認してください。

    DigitalOceanでMySQLを自分で試してみませんか?

    ScaleGridを試して、完全無料の30日間の試用版を使用して、いくつかの簡単な手順でDigitalOceanにMySQLをセットアップします。展開を最適化するための最も強力なデータベース管理機能を使用して、クラウドでのMySQLホスティングと管理を自動化します。

    DigitalOceanでのMySQLサーバーの実行

    起動して実行すると、MySQLデプロイメントは仮想的に自動操縦で動作できます。 ScaleGridはフルマネージドサービスであるため、MySQLデータベースの日常的な管理と保守をすべて処理し、アプリの構築に集中できます。ディスク容量が不足しているなど、注意が必要なことが発生した場合は、ログインしてクラスターをスケールアップする準備ができているかどうかを確認できるように、通知が送信されます。

    また、24時間年中無休のサポートを通じてMySQLの専門家といつでも連絡を取り、導入のセットアップとトラブルシューティングを支援することができます。


    1. より長いVARCHAR2列を定義することの影響

    2. MySQLデータベースとテーブルを修復する方法

    3. 可観測性のためのPostgreSQLの構成

    4. SQLServerのGOコマンドについて