MySQL 5.7 には、オンライン DDL、マルチソース レプリケーション、拡張された半同期、テーブルスペース転送、sys ライブラリ、グループ レプリケーションなど、多くの新機能が追加されています。最近、ようやく MySQL を 5.7 にアップグレードする機会があり、とても興奮しています。 MySQL アップグレードの概要 MySQL アップグレードの本質: データ辞書のアップグレード データ辞書は、mysql、information_schema、performance_schema、sys schema です。 MySQL をアップグレードするには 2 つの方法があります。 インプレースアップグレード: マイナーバージョンのアップグレードに適しています。 つまり、現在の MySQL をシャットダウンし、現在のバイナリ ファイルまたはパッケージを置き換え、既存のデータ ディレクトリで MySQL を再起動して、mysql_upgrade を実行します。 機能: データ ファイルに変更はなく、アップグレード速度は高速です。ただし、オペレーティング システム間やメジャー バージョン間 (5.5 -> 5.7) は移行できません。 論理アップグレード: 異なるオペレーティング システム上の MySQL のアップグレードやメジャー バージョン間のアップグレードに適しています。 つまり、mysqldump または mydumper を使用してデータをインポートおよびエクスポートし、バージョン アップグレードを実現します。 特徴: オペレーティングシステムやメジャーバージョンを超えて使用できますが、アップグレード速度が遅く、文字化けなどの問題が発生しやすくなります。 アップグレード前の準備: 事前にバックアップを作成してください。 新しいバージョンの変更点(互換性がなくなったもの、サポートされなくなった機能)について学習します 公式サイトの一般情報 -> MySQL 5.7の新機能 アップグレードに関する注意事項: 新しいバージョンに大きな変更がないか確認する SQLモードの変更に注意してください たとえば、MySQL 5.7 では SQL モードが変更されました。サポートされなくなった SQL モードでは、一部の SQL ステートメントが機能しなくなります。この場合、SQL モードをクリアし、操作が完了した後に SQL モードを設定することができます。 アップグレードが成功したら、ビジネスSQLがスムーズに実行できるかどうかを確認します。 プログラム層は正常ですか? 場合によっては、元のプログラミング言語の一部が、データベースの新しいバージョンでサポートされないことがあります。たとえば、以前は PHP 5.1 で PHP4.0 を使用していましたが、5.6 にアップグレードすると、一部の PHP 関数がサポートされなくなりました。 アップグレードが完了したら、必ずオンライン版と同じプログラムを使用してテストし、問題がないか確認してください。 ストレージエンジンの変更 たとえば、将来のバージョン 5.8 では、myisam エンジンはサポートされなくなります。 文字化けした文字セットの問題に注意する 次に、インプレース アップグレード方式を使用して、MySQL 5.6 を MySQL 5.7 にアップグレードします。 インプレースアップグレード 環境: 5.6.15 —>5.7.20 アップグレード前の準備: バックアップ + 新バージョンの変更点に注意してアップグレード操作を実行してください。 1. 5.7ソフトウェアパッケージをダウンロードして解凍します # tar -xzvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz # ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql5.7 2. 現在のMySQL(5.6)を閉じます。 # mysql -u root -p -S /data/mysql3308/mysql3308.sock --execute="SET GLOBAL innodb_fast_shutdown=0" # mysqladmin -u root -p -S /data/mysql3308/mysql3308.sock シャットダウン 3. バイナリ ファイルを置き換える (5.7 は 5.6 を置き換えます) # cd /usr/local # mysql5.6 をアップグレードしてください # mv mysql5.7 mysql 4. 既存のデータディレクトリを使用してMySQLを起動する # mysqld_safe --user=mysql --socket=/data/mysql3308/mysql3308.sock -p --skip-grant-tables --datadir=/data/mysql3308/data 5. すべてのテーブルが現在のバージョンと互換性があるかどうかを確認し、システムライブラリを更新します。 # mysql_upgrade -uroot -p -S /data/mysql3308/mysql3308.sock 注: mysql_upgrade の機能は、すべてのライブラリ内のすべてのテーブルが現在の新しいバージョンと互換性があるかどうかを確認し、システム ライブラリを更新することです。 6. システムテーブルに加えられた変更が有効になるように再起動します。 # mysqld --defaults-file=/data/mysql3308/my3308.cnf & # mysql -uroot -p -S /data/mysql3308/mysql3308.sock この時点でアップグレードは完了です。 質問: MySQL のアップグレードが失敗した場合はどうすればよいですか? アップグレードする場合、通常はアップグレード用のスレーブ ライブラリが作成されます。アップグレードが失敗しても、マスター ライブラリには影響しません。アップグレードが成功し、テストも成功した場合、他のスレーブ ライブラリも徐々に新しいバージョンにアップグレードされます。最後に、マスター ライブラリがオフラインになり、スレーブ ライブラリが新しいマスター ライブラリに昇格され、古いマスター ライブラリがアップグレードされます。 以下もご興味があるかもしれません:
|
<<: Linux Tensorflow2.0のインストール問題を解決する
>>: Node.js コード実行をバイパスするためのヒントのまとめ
1. Dockerfile 内の ENV 命令は、イメージの環境変数を定義するために使用されます。次...
この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、およ...
SQL の基礎知識がある友人は、「クロステーブル クエリ」について聞いたことがあるはずですが、クロス...
ベースイメージベースイメージには 2 つの意味があります。他のイメージに依存せず、ゼロから構築します...
iPad でページをデバッグするにはどうすればいいですか? iOS 5 をご利用の場合、iPad の...
目次フラット化とは何か再帰トストリング減らすアンダーコア_.平坦化_。連合_。違い要約するフラット化...
ElementUIページングコンポーネントPagination in Vueの使用は参考になります。...
mysql5.7.17のインストールチュートリアルを参考までに共有します。具体的な内容は次のとおりで...
1. ファイアウォール設定ファイルを変更する # vi /etc/sysconfig/iptable...
この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...
オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...
この記事では、参考までに、スネークゲームを実装するためのWeChatアプレットの具体的なコードを紹介...
IMG タグの基本分析 HTML5 では、img タグには 4 つの要素があります。 (1) src...
少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...
MySQL インストール パッケージをダウンロードします。mysql-8.0.11-winx64 を...