インストールと設定(2)



MySQLのアップグレード


1.アップグレード・タイプ


サーバーをアップグレードする方法は大きく2つあります.
  • In-Place Upgrade
    MySQLサーバ上のデータファイルを保持およびアップグレードする方法
  • Logical Upgrade
    mysqldumpツールを使用して、MySQLサーバ上のデータをSQL文またはテキストファイルにダンプし、新しいアップグレードされたMySQLサーバからダンプされたデータをロードする方法.
  • 「オンサイトアップグレード」の制限要因が多く、アップグレード速度が速い.
    論理アップグレードはほとんど制限されず、アップグレードは遅い.
    オンサイトアップグレードの制限要因としては、以前の制作バージョンでのみアップグレードできます.
    たとえば、5.5から8.0へのアップグレードには、5.5>5.6>5.7>8.0のプロセスが必要です.
    論理アップグレードでは、符号化、sql/プロシージャ構文もチェックする必要があります.

    2.MySQL 8.0アップグレードの注意事項


    MySQL 8.0には、改善、変更、削除の機能があります.
    アップグレードする前に影響する内容を確認します.

  • ユーザー認証方式の変更
    MySQL 8.0は、DefaultとしてCaching SHA-2認証(以下、SHA-2と略す)の使用を開始します.Native Authenticatioを引き続き使用する場合は、--default-authentication-plugin=mysql native passwordパラメータをアクティブにするだけです.

  • MySQL 8.0との互換性チェック
    mysqlcheckユーティリティを使用して検証できます.互換性タイプ、破損したデータファイルを確認する

  • 外部キー名の長さ
    MySQL 8.0外部キー名の長さを64文字に制限します.

  • 索引のヒント
    MySQL 5.xが使用するインデックスプロンプトがある場合は、MySQL 8.0のアップグレード後にパフォーマンステストを実行します.旧バージョンはパフォーマンスの向上に役立ちますが、MySQL 8.0ではパフォーマンスが低下する可能性があります.

  • GROUP BYで使用するソートオプション
    MySQL8.0からこの構文はサポートされていません.

  • パーティションの共通テーブルスペース
    MySQL 8.x各テーブルスペースを共通テーブルスペースに保存することはできません.共通テーブルスペースに保存されている場合、ALTER TABLE...REORGANSIZEコマンドを実行し、単一の表領域を使用するように変更します.
  • 3.MySQL 8.0のアップグレード


    MySQL 5.7から8.0へのアップグレードは2つの段階に分かれています.
  • データバイナリアップグレード
  • 元の情報を含むFRMファイル->表領域ファイル管理
  • 既存MyIsamエンジン->InnoDBエンジン
  • サーバのアップグレード
  • 性能schema,変更Information schema構造
  • MySQL 8.0.16のバージョンから5番まで、8.0.16のバージョンから4番までです.
  • MySQLシャットダウン
  • 削除
  • MySQL 5.7プログラム
  • MySQL 8.0プログラムインストール
  • MySQL 8.0サーバ起動
  • mysql upgradeプログラム
  • を実行
    MySQL 8.0.16以降では、4番目のバージョンでデータ複製のアップグレード、5番目のバージョンでサーバのアップグレードが行われます.

    サーバの設定


    通常、MySQLサーバでは1つのプロファイルのみが使用され、UNIXシリーズでは「my.cnf」、ウィンドウシリーズでは「my.ini」が使用されます.MySQLサーバは起動時のみこのプロファイルを参照します.このプロファイルのパスは固定されていません.MySQLサーバは、指定した複数のディレクトリを順にブラウズし、myを初めて発見します.cnfを使用します.
    ファイルのパスを設定するには、次のコマンドを使用して検証し、デーモンプロセスを使用して検証しないようにします.
    # 데몬을 사용하여 조회
    $ mysqld --verbose --help |grep my.cnf
    
    # 클라이언트 유틸을 사용하여 조회
    $ mysql --help |grep my.cnf
    
    #출력
    [root@191 mysql]# mysqld --verbose --help |grep my.cnf
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
                          my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
                          
    [root@191 mysql]# mysql --help |grep my.cnf
                          order of preference, my.cnf, $MYSQL_TCP_PORT,
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
    
    ファイルパスのナビゲーション順序の設定
  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /usr/etc/my.cnf
  • ~/.my.cnf
  • 設定ファイルの設定


    MySQLプロファイルには複数の設定グループが含まれており、通常は実行プログラム名をグループ名として使用します.
    [mysqld]
    port            = 3306
    .
    .
    .
     
    [mysqldump]
    quick
    max_allowed_packet = 64M
    default_character_set = utf8
     
    [mysql]
    no_auto_rehash
    prompt=mysql (\d)>
     
    [mysqld_safe]
    open-files-limit = 65535

    システム変数の特徴


    MySQLサーバは、起動時にシフォンファイルの内容を読み込み、メモリまたは動作を初期化し、これらの値を個別に保存して接続するユーザーを制御します.
    mysql> show variables\G;
    *************************** 1. row ***************************
    Variable_name: activate_all_roles_on_login
            Value: OFF
    *************************** 2. row ***************************
    Variable_name: admin_address
            Value:
    *************************** 3. row ***************************
    Variable_name: admin_port
            Value: 33062
    *************************** 4. row ***************************
    Variable_name: admin_ssl_ca
            Value:
    *************************** 5. row ***************************
    Variable_name: admin_ssl_capath
            Value:
    *************************** 6. row ***************************
    Variable_name: admin_ssl_cert
            Value:
    *************************** 7. row ***************************
    Variable_name: admin_ssl_cipher
            Value:
    *************************** 8. row ***************************
    Variable_name: admin_ssl_crl
            Value:
    *************************** 9. row ***************************
    Variable_name: admin_ssl_crlpath
            Value:
    *************************** 10. row ***************************
    Variable_name: admin_ssl_key
            Value:
    *************************** 11. row ***************************
    Variable_name: admin_tls_ciphersuites
            Value:
    💡 ドキュメントにはシステム変数の説明があり、5種類の属性に分けられます.
    YUMCMD-LINECLIまたはOption file設定ファイル(my.cnf)、制御またはシステムVarシステム変数「-」、「」に変更できます.Var Scopeシステム変数の適用範囲(GLOBAL/SESION)を動的に変更できるかどうかご注意ください

    1.グローバル変数とセッション変数


  • グローバル変数
    グローバル範囲内のシステム変数は、MySQLサーバのインスタンスでグローバルに影響するシステム変数です.
    MySQLサーバにはinnodb buffer poolなどが1つしか存在しません.

  • セッション変数
    セッション範囲内のシステム変数は、MySQLクライアントがMySQLサーバに接続されたときのデフォルトオプションのデフォルト値を制御するために使用されます.
    DEFAULT値はグローバル変数であり、autocommitを表します.
  • 2.静的変数と動的変数


    サーバの起動中に変更できる場合は動的変数、変更できない場合は静的変数です.
    mysql> show variables where variable_name like 'innodb_fast_shutdown';
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | innodb_fast_shutdown | 1     |
    +----------------------+-------+
    1 row in set (0.00 sec)
    
    mysql> SET GLOBAL innodb_fast_shutdown=0;
    
    mysql> show variables where variable_name like 'innodb_fast_shutdown';
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | innodb_fast_shutdown | 0     |
    +----------------------+-------+
    1 row in set (0.00 sec)
    動的変数には、再起動時のdefaultオプションとmyが含まれます.注意cnfオプションを使用して初期化

    3. 👍SET PERSIST


    MySQL 8.0バージョンで追加されたSET PERSISTコマンドを使用して、反映される動的変数mysqld-autoを指定します.cnfに記録する.MySQLサーバーmyを再起動します.cnfとmysqld-auto.cnfの両方は、システム変数を反映するために参照される.
    #「」を参照してください.
    白恩彬李晟旭2021、Real MySQL 8.0(1冊).Wekibooks
    MySQL 8.0 Reference Manual