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

MySQL構成変数の設定–MySQL5.7とMySQL8.0

    MySQL構成変数は、サーバーの操作と動作を構成するために使用されるサーバーシステム変数のセットです。このブログ投稿では、MySQL5.7とMySQL8.0の構成変数の管理の違いについて説明します。

    ユースケースに基づいて構成変数を設定する3つの異なる方法を説明します。実行時に設定できる構成変数は動的変数と呼ばれ、有効にするためにMySQLサーバーの再起動が必要な構成変数は非動的変数と呼ばれます。

    1:実行中のMySQLサーバーの現在のライフスパンの構成を設定します

    ほとんどのMySQL構成は本質的に動的であり、SETコマンドを使用して実行時に設定できます。これは、変更が永続的ではなく、MySQLサーバーが再起動すると失われることを意味します。これは、構成を永続化する前に、構成変更の動作をテストするのに役立ちます。

    MySQL 5.7と8.0の両方で、コマンドSET GLOBAL

    を使用してこれを実行できます。

    例:

    mysql> set global max_connect_errors=10000;
    

    2:MySQLの再起動後も構成変更を設定して永続化する

    構成変更の設定に満足したら、それを永続的にする必要があります。

    MySQL 5.7では、これを2つのステップで行う必要があります:

    1. コマンドSETGLOBALを使用して実行時構成設定を設定します
    mysql> set global max_connect_errors=10000;
    
    1. max_connect_errorsの既存のエントリを更新するか、新しいエントリを追加して、この変更をmy.cnfファイルに保存します。

    これはMySQL8.0ではるかに簡単になりました。これは、コマンドSET PERSIST

    を使用して1つのステップで実行できます。
    mysql> set persist max_connect_errors=10000;
    
    構成変数の設定方法-MySQL5.7とMySQL8.0ClickTo Tweet

    これにより、構成の実行時の値が設定され、データディレクトリに存在するファイルmysqld-auto.cnfに保存することで変更が保持されます。これはjsonファイルであり、ファイルに次のエントリが表示されます。

    {
    
    "Version": 1,
    
    "mysql_server": {
    
    "max_connect_errors": {
    
    "Value": "10000",
    
    "Metadata": {
    
    "Timestamp": 1581135119397374,
    
    "User": "sgroot",
    
    "Host": "localhost"
    
    }
    
    }
    
    }
    
    }
    

    注: mysqld-auto.cnfに存在する構成設定は、my.cnfファイルに存在する値を常にオーバーライドします。したがって、変数「max_connect_errors」に対してmy.cnfファイルで行ったそれ以上の変更は有効になりません。これは、MySQL 5.7から移行するユーザーにとって、すべての設定をmy.cnfに保存するために使用される可能性があるため混乱する可能性があります

    3:動的ではない構成変数の設定

    一部の構成変数は実行時に設定できず、有効にするにはMySQLを再起動する必要があります。

    MySQL 5.7では、my.cnfファイルにこれらの変数のエントリを作成し、MySQLサーバーを再起動して有効にします。このような変数の例は、innodb_log_file_sizeです。

    MySQL 8.0では、mysqld-auto.cnfにエントリを作成するSETPERSISTONLYというコマンドを実行できます。

    例:

    mysql> set persist_only innodb_log_file_size=134217728;
    

    RESTARTコマンドを使用して、コマンドラインからMySQLサーバーを再起動することもできます。これにより、変更されたinnodb_log_file_sizeの値が有効になります。

    注: RESTARTコマンドは、MySQLがsystemdやmysqld_safeなどの外部プログラムを使用して管理されている場合にのみ機能します。詳細については、こちらをご覧ください。

    それ以外の場合、RESTARTコマンドは次のようなメッセージで失敗します。

    mysql> RESTART;
    
    ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).
    

    複数のサーバーにわたるMySQL構成管理

    異なるMySQLバージョンを実行している複数のクラスターを管理する必要がある場合、ソースレプリカ環境でのMySQL構成の管理は面倒なプロセスです。これは、ScaleGridのようなマネージドソリューションが有益な場合です。

    ScaleGrid UIコンソールを使用して、さまざまな構成変数の現在の設定を確認したり、それらの値を設定したりできます。

    ScaleGridは、構成設定が動的でない場合を認識し、値を有効にするためにMySQLの再起動が必要な場合にユーザーに警告します。 ScaleGridは、新しい構成変更を適用する前に、現在のmy.cnfファイルのバックアップも作成します。

    ソースレプリカ環境では、ScaleGridは一度に1台のサーバーで構成設定をローリング方式で変更します。非動的変数を設定する必要がある場合、ScaleGridは現在のマスターのフェイルオーバーを実行して、MySQLを再起動する必要がある場合に発生するダウンタイムを最小限に抑えます。

    以下のリンクにアクセスして、ScaleGridMySQLホスティングソリューションのさまざまな機能の詳細を確認してください。


    1. IN値リストによる注文

    2. DATEDIFF_BIG()SQLServerの例

    3. OracleのSOUNDEX()関数

    4. oracle-多くの日付形式を単一の形式の日付に変換します