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

LinuxでデフォルトのMySQL/MariaDBデータディレクトリを変更する方法

    LAMPスタックのコンポーネントをCentOS/RHEL 7サーバーにインストールした後、実行したいことがいくつかあります。

    それらのいくつかは、ApacheとMySQL / MariaDBのセキュリティを強化することに関係していますが、その他は、セットアップやニーズに応じて適用できる場合とできない場合があります。

    たとえば、データベースサーバーの予想される使用法に基づいて、デフォルトのデータを変更したい場合があります。 ディレクトリ(/var/lib/mysql )別の場所に。これは、使用率が高いためにそのようなディレクトリが大きくなることが予想される場合です。

    それ以外の場合、/varのファイルシステム 保存されているものは、ある時点で崩壊し、システム全体に障害が発生する可能性があります。デフォルトのディレクトリを変更するもう1つのシナリオは、実際のデータを保存するために使用する専用のネットワーク共有がある場合です。

    このため、この記事では、デフォルトのMySQL/MariaDBデータディレクトリをCentOS/RHEL7サーバーおよびUbuntu/Debianディストリビューションで別のパスに変更する方法について説明します。

    MariaDBを使用しますが 、説明されている概念とこの記事で実行されている手順は、 MySQLの両方に適用されます。 およびMariaDB 特に明記されていない限り。

    デフォルトのMySQL/MariaDBデータディレクトリの変更

    注 :新しいデータディレクトリは/mnt/mysql-dataであると想定します。 。このディレクトリはmysql:mysqlが所有する必要があることに注意してください。 。

    # mkdir /mnt/mysql-data
    # chown -R mysql:mysql /mnt/mysql-data
    

    ご参考までに、プロセスを5つのわかりやすいステップに分割しました。

    ステップ1:現在のMySQLデータディレクトリを特定する

    まず、次のコマンドを使用して現在のデータディレクトリを特定することをお勧めします。まだ/var/lib/mysqlであると思い込まないでください 過去に変更された可能性があるためです。

    # mysql -u root -p -e "SELECT @@datadir;"
    

    MySQLパスワードを入力すると、出力は次のようになります。

    ステップ2:MySQLデータディレクトリを新しい場所にコピーする

    データの破損を防ぐために、サービスが現在実行中の場合は、続行する前にサービスを停止してください。 systemdを使用する そうするためのよく知られたコマンド:

    ------------- On SystemD ------------- 
    # systemctl stop mariadb
    # systemctl is-active mariadb
    
    ------------- On SysVInit ------------- 
    # service mysqld stop
    # service mysqld status
    
    OR
    
    # service mysql stop
    # service mysql status
    

    サービスが停止した場合、最後のコマンドの出力は次のようになります。

    次に、/var/lib/mysqlの内容を再帰的にコピーします /mnt/mysql-dataへ 元の権限とタイムスタンプを保持する:

    # cp -R -p /var/lib/mysql/* /mnt/mysql-data
    

    ステップ3:新しいMySQLデータディレクトリを構成する

    構成ファイルを編集します(my.cnf )新しいデータディレクトリ(/mnt/mysql-data この場合)。

    # vi /etc/my.cnf
    OR
    # vi /etc/mysql/my.cnf
    

    [mysqld]を見つけます および[client] セクションを作成し、次の変更を加えます。

    Under [mysqld]:
    datadir=/mnt/mysql-data
    socket=/mnt/mysql-data/mysql.sock
    
    Under [client]:
    port=3306
    socket=/mnt/mysql-data/mysql.sock
    

    変更を保存してから、次の手順に進みます。

    ステップ4:SELinuxセキュリティコンテキストをデータディレクトリに設定する

    この手順は、 RHEL / CentOSにのみ適用されます およびその派生物。

    SELinuxセキュリティコンテキストを/mnt/mysql-dataに追加します MariaDBを再起動する前に。

    # semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
    # restorecon -R /mnt/mysql-data
    

    次に、MySQLサービスを再起動します。

    ------------- On SystemD ------------- 
    # systemctl stop mariadb
    # systemctl is-active mariadb
    
    ------------- On SysVInit ------------- 
    # service mysqld stop
    # service mysqld status
    
    OR
    
    # service mysql stop
    # service mysql status
    

    ここで、ステップ1と同じコマンドを使用します 新しいデータディレクトリの場所を確認するには:

    # mysql -u root -p -e "SELECT @@datadir;"
    

    ステップ5:データディレクトリを確認するためのMySQLデータベースを作成する

    MariaDBにログインし、新しいデータベースを作成してから、/mnt/mysql-dataを確認します。 :

    # mysql -u root -p -e "CREATE DATABASE tecmint;"
    

    おめでとう! MySQLまたはMariaDBのデータディレクトリが正常に変更されました。

    概要

    この投稿では、CentOS /RHEL7およびUbuntu/Debianディストリビューションで実行されているMySQLまたはMariaDBサーバーのデータディレクトリを変更する方法について説明しました。

    この記事について質問やコメントがありますか?以下のフォームを使用して、お気軽にお知らせください。いつでもご連絡をお待ちしております。


    1. 最後に挿入されたIDのPostgreSQL関数

    2. SpringJDBCで現在のConnectionオブジェクトを取得する方法

    3. SQL ServerビューへのODBCリンクテーブルをプログラムで作成し、編集可能にするにはどうすればよいですか?

    4. 高いCLR_MANUAL_EVENT待機を追跡する