phpstudy から Linux への MySQL の移行に関するチュートリアル

phpstudy から Linux への MySQL の移行に関するチュートリアル

プロジェクトの目的

元のWindows環境でphpstudyを使用して構築されたMySQL 5.5.53のデータを新しいホストLinux環境に移行する

環境条件

新しいホストシステムプラットフォーム:

CentOS リリース 7.4 (最終) カーネル 3.10.0-693.el7.x86_64

mysql 環境:

mysql> ステータス
サーバーバージョン: 5.6.39-log MySQL コミュニティサーバー (GPL)
サーバー文字セット: utf8
Db 文字セット: utf8
クライアントの文字セット: utf8
接続文字セット: utf8

mysql> '%storage_engine%' のような変数を表示します。
+----------------------------+--------+
| 変数名 | 値 |
+----------------------------+--------+
| デフォルトのストレージエンジン | InnoDB |
| default_tmp_storage_engine | InnoDB |
| ストレージ エンジン | InnoDB |
+----------------------------+--------+

旧ホスト:
システムプラットフォーム:

Windows 2012 R2 SE X64

mysql 環境:

サーバーバージョン: 5.5.53 MySQL コミュニティサーバー (GPL)
サーバー文字セット: utf8
Db 文字セット: utf8
クライアントの文字セット: utf8
接続文字セット: utf8

mysql> '%storage_engine%' のような変数を表示します。
+------------------------+--------+
| 変数名 | 値 |
+------------------------+--------+
| デフォルトのストレージエンジン | MyISAM |
| ストレージ エンジン | MyISAM |
+------------------------+--------+

テーブルのストレージエンジン

mysql> データベースからテーブルステータスを表示します\G;
エンジン: InnoDB
エンジン: MyISAM

移行プロセス

1. phpstudyの独自のツールを使用して各データベースをエクスポートする

画像

操作にはmysqldumpも使用されていることがわかりました。

2. 元のテーブルエンジンだけを残しておきたい場合は、次のようにします。

mysql> データベース zentao を作成します。
mysql> zentao を使用します。
mysql> ソース zentao20180413161534.sql;
mysql> テーブルを表示します。
+-------------------+
| テーブル_in_zentao |
+-------------------+
| zt_アクション |
| zt_バグ |
| zt_ビルド |
...

オリジナルのテーブルエンジンはそのまま残っています。

mysql> zentao\G からテーブルステータスを表示します。
************************** 1. 行 ****************************
名前: zt_action
エンジン: MyISAM
バージョン: 10
行形式: 動的

3. 元のデータベースのテーブルエンジンをInnoDBに変更する

エクスポートされたテーブル構造 zentao.sql で ENGINE=MyISAM を見つけて、ENGINE=InnoDB に変更します。 どのように置き換えるかは、好みに応じて異なります。

# vim zentao.sql
:%s/ENGINE=MyISAM/ENGINE=InnoDB/g

4. 指定されたデータベースにデータをインポートする

mysql> zentao を使用します。
mysql> ソース zentao.sql;

テーブルエンジンをInnoDBに変更しました

mysql> zentao\G からテーブルステータスを表示します。
************************** 1. 行 ****************************
名前: zt_action
エンジン: InnoDB
バージョン: 10
行形式: コンパクト

5. しかし、問題があります。テーブルの詳細情報を確認すると、Data_free がゼロではないことがわかります。これは、データの断片化があり、最適化が必要であることを示しています。

mysql> information_schema.tables から table_schema、table_name、data_free、engine を選択します。ここで、table_schema は ('information_schema'、'mysql') 内になく、data_free != 0 です。
+--------------+------------+-----------+---------+
| テーブルスキーマ | テーブル名 | データフリー | エンジン |
+--------------+------------+-----------+---------+
| zentao | zt_bug | 4194304 | InnoDB |
| zentao | zt_history | 4194304 | InnoDB |
+--------------+------------+-----------+---------+

6. テーブルをデフラグする

mysql> zentao を使用します。
mysql> テーブル zt_bug、zt_history を最適化します。
+-------------------+----------+----------+-------------------------------------------------------------------+
| テーブル | Op | メッセージ タイプ | メッセージ テキスト |
+-------------------+----------+----------+-------------------------------------------------------------------+
| zentao.zt_bug | 最適化 | 注記 | テーブルは最適化をサポートしていないため、代わりに再作成 + 分析を実行します |
| zentao.zt_bug | 最適化 | ステータス | OK |
| zentao.zt_history | 最適化 | 注記 | テーブルは最適化をサポートしていないため、代わりに再作成 + 分析を実行します |
| zentao.zt_history | 最適化 | ステータス | OK |
+-------------------+----------+----------+-------------------------------------------------------------------+

テーブルが最適化をサポートしていないというメッセージが表示されますが、下には OK と表示されます。実際には正常に実行されています。バージョン5.6.Xは実際にInnodbをサポートしています

mysql> information_schema.tables から table_name、engine、table_rows、data_length+index_length length、DATA_FREE を選択します。ここで、TABLE_SCHEMA='zentao'、data_free =0 です。
+-------------------+--------+------------+----------+-----------+
| テーブル名 | エンジン | テーブル行 | 長さ | DATA_FREE |
+-------------------+--------+------------+----------+-----------+
| zt_bug | InnoDB | 1018 | 1589248 | 0 |
| zt_history | InnoDB | 2584 | 1589248 | 0 |

複数のデータベース メソッドに対して同じ操作を実行できます。

以下もご興味があるかもしれません:
  • phpstudy をインストールした後に MySQL を起動できない問題に対する完璧なソリューション (元のデータベースを削除する必要はなく、設定を変更する必要もなく、ポートを変更する必要もありません) 直接共存
  • phpstudy2018 MySQL 5.5 から 5.7 へのアップグレードに関するチュートリアル (画像とテキスト付き)
  • phpStudy で MySQL バージョンを 5.7.17 にアップグレードする方法
  • WindowsシステムでPhPStudy MySQLの起動に失敗する問題を解決する

<<:  JS での Reduce Fold Unfold の使用法の詳細な説明

>>:  Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

推薦する

MySQL がデフォルトの分離レベルとして繰り返し読み取りを選択する理由

目次Oracle 分離​​レベルMySQL 分離レベル要約する多くの読者は、MySQL のトランザク...

Kubernetes コントローラーとラベルの簡単な分析

目次01 k8sの一般的なコントローラーRCコントローラーデプロイメント コントローラーステートフル...

Nginx ベースの Mencached キャッシュ構成の詳細な説明

導入Memcached は分散キャッシュ システムです。Memcached には認証とセキュリティ制...

MySQL マスタースレーブレプリケーションの実装手順

目次mysql マスタースレーブレプリケーションMySQL マスタースレーブレプリケーション方式My...

HTML で複数のクラス属性を定義する場合の無効な解決策

HTML を記述する過程で、クラス属性に複数の値を定義することがよくありますが、定義した値が無効であ...

ハイパーリンクを使用してリンクファイルを開く HTML 方式の紹介

a および href 属性 HTML では、英語ではアンカーと呼ばれるハイパーリンクを表すために &...

MySQLデータベースで列を追加、削除、変更する方法

この記事では、例を使用して、MySQL データベースの列を追加、削除、および変更する方法について説明...

Vueのリストレンダリングの詳細な説明

目次1. v-for: 配列の内容を走査する(よく使われる) 2. v-for: オブジェクトのプロ...

CSS3 のカラー値 RGBA とグラデーションカラーの使用方法の紹介

CSS3以前は、グラデーション画像は背景画像としてのみ使用できました。 CSS3 のグラデーション構...

Linux システムにおける時間設定の概要

1. 時間の種類は次のように分けられます。 1. ネットワーク時間(タイムゾーンの設定、ntpサーバ...

HTML テーブルタグチュートリアル (45): テーブル本体タグ

<tbody> タグは、テーブル本体のスタイルを定義するために使用されます。基本構文 &...

Mysql でサーバーの UUID を変更する方法

問題の原因:スレーブサーバーがクローンマスターサーバーである場合、server-uuidの値は同じで...

LinuxとGNUシステムの関係の詳細な説明

目次私たちが毎日実行している Linux システムとは何でしょうか? LinuxカーネルとGNUシス...

JavaScript でグレイウルフのポットビーティングゲームを実装

1. プロジェクト文書 2. ページレイアウトにHTMLとCSSを使用するHTML部分 <di...

画像の半透明処理 画像と半透明の背景の実装のアイデアとコード

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...