web-dev-qa-db-ja.com

RDSでのMySQL 8.0「アップグレードチェッカー」の使用

MySQL 8.0シェルには「アップグレードチェッカー」が付属しています。

テーブル構造などの互換性のない問題を検出する可能性があるため、アップグレード前に実行すると便利です。

シェルからpython versionを実行すると、次のようになります。

util.check_for_server_upgrade()

残念ながら、AWSのRDSを使用すると、次のエラーが発生します。

SystemError:LogicError:Util.check_for_server_upgrade:アップグレードチェックは、すべての権限を持つユーザーが実行する必要があります。

何ができますか?

1
Lavi Avigdor

util.check_for_server_upgrade()は、ALL PRIVILEGESを持つMysqlユーザーで実行できます。 AWS RDSを使用しているため、マスターMySQLユーザーにはSUPER user権限がないため、このエラーが発生します。SHOW GRANTS FOR 'user'@'Host'でユーザー権限を確認できます。 rdsadminユーザーのみがAWS RDS MySQLインスタンスにALL PRIVILEGESを持っています。 rdsadminは、Amazonがリリースやバージョンの更新を実行し、バックアップやその他のメンテナンスタスクを実行するために使用する、Amazon自身のユーザーです。 Amazonのサポートは、このトピックについてより的確にアドバイスできるはずです。

2
Ferdous Ahmed

SystemError:LogicError:Util.check_for_server_upgrade:アップグレードチェックは、すべての権限を持つユーザーが実行する必要があります。

エラーログに従って、アップグレードチェッカーユーティリティの実行に使用されるユーザーアカウントのパスワード。 _ALL privileges_を含むuserアカウントが必要です。

MySQLのドキュメントに従って pgrade Checker Utility util.checkForServerUpgrade()関数は、MySQLサーバーインスタンスがアップグレードの準備ができているかどうかを確認できるアップグレードチェッカーユーティリティです。 MySQL Shell 8.0.13から、最初のMySQL Server 8.0 General Availability(GA)リリース(8.0.11)から、一致するMySQL Serverリリース番号まで、アップグレードする予定のターゲットMySQL Serverリリースを選択できます。現在のMySQL Shellリリース番号。アップグレードチェッカーユーティリティは、指定されたターゲットリリースに関連するチェックを実行します。

アップグレードチェッカーユーティリティを使用して、MySQL 5.7サーバーインスタンスで互換性エラーやアップグレードの問題をチェックできます。 MySQL Shell 8.0.13以降、これを使用して、別のGA MySQL 8.0リリースシリーズ内のステータスリリースでMySQL 8.0サーバーインスタンスをチェックすることもできます。checkForServerUpgrade()を呼び出さずにMySQLサーバーインスタンスを指定すると、現在グローバルセッションに接続されているインスタンスがチェックされます。現在接続されているインスタンスを確認するには、_\status_コマンドを発行します。

アップグレードチェッカーユーティリティは、TCPまたはUnixソケットを使用して、Xプロトコル接続または従来のMySQLプロトコル接続のいずれかで動作します。接続を事前に作成するか、関数の引数として指定できます。ユーティリティは常にサーバーに接続するための新しいセッションを作成するため、MySQL Shellグローバルセッションは影響を受けません。

アップグレードチェッカーユーティリティには、次のシグネチャがあります。

_checkForServerUpgrade (ConnectionData connectionData, Dictionary options)
_

両方の引数はオプションです。 1つ目は接続がまだ存在しない場合に接続データを提供し、2つ目は次のオプションを指定するために使用できるディクショナリです。

パスワード

アップグレードチェッカーユーティリティの実行に使用されるユーザーアカウントのパスワード。 ALL権限を持つユーザーアカウントが必要です。この辞書オプションを使用するか、接続の詳細の一部としてパスワードを指定できます。パスワードを指定しない場合、ユーティリティはサーバーに接続するときにパスワードを要求します。

targetVersion

アップグレードする予定のターゲットMySQLサーバーのバージョン。 MySQL Shell 8.0.13では、リリース8.0.11(最初のMySQL Server 8.0 GA release))、8.0.12、または8.0.13を指定できます。短い形式のバージョン番号を指定した場合8.0、またはtargetVersionオプションを省略すると、ユーティリティは、現在のMySQL Shellリリース番号と一致するMySQL Serverリリース番号へのアップグレードをチェックします。

outputFormat

アップグレードチェッカーユーティリティからの出力が返される形式。オプションを省略した場合のデフォルトはテキスト形式(TEXT)です。 JSONを指定した場合、適切な形式のJSON出力が アップグレードチェッカーユーティリティのJSON出力 にリストされている形式で返されます。 MySQL Shellコマンドラインオプション--jsonをアップグレードチェッカーユーティリティで使用しないでください。このオプションはコンテキストに対応しておらず、ユーティリティからのテキスト出力をJSONオブジェクトにラップするだけです。

たとえば、次のコマンドは、現在グローバルセッションに接続されているMySQLサーバーインスタンスを確認し、テキスト形式の出力で確認します。

_mysqlsh> \status
MySQL Shell version 8.0.13
...
Server version:               5.7.21-log MySQL Community Server (GPL)
...
mysqlsh> util.checkForServerUpgrade()
_

次のコマンドは、URI [email protected]:3306にあるMySQLサーバーをチェックして、最初のMySQLサーバー8.0 GAステータスリリース(8.0.11)にアップグレードします。ユーザーパスワードは、オプションディクショナリ。出力はデフォルトのテキスト形式で返されます。

_mysqlsh> util.checkForServerUpgrade('[email protected]:3306', {"password":"password", "targetVersion":"8.0.11"})
_

次のコマンドは、同じMySQLサーバーをチェックして、現在のMySQLシェルのリリース番号(デフォルト)と一致するMySQLサーバーのリリース番号にアップグレードし、以降の処理のためにJSON出力を返します。

_mysqlsh> util.checkForServerUpgrade('[email protected]:3306', {"password":"password", "outputFormat":"JSON"})
_

さらに参考にするために here および here

0