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 クラスターの構築と使用方法の詳細な説明

推薦する

Linuxでファイルの作成時間を表示する方法

1. はじめにLinux でファイルの作成時刻が見つかるかどうかは、ファイル システムの種類によって...

MySQL ストレージ エンジンの基礎

前回の記事では、MySQL トランザクションについて説明しました。これで、MySQL トランザクショ...

Dockerコンテナでyumを呼び出すときのエラーの解決方法

dockerfile またはコンテナ内で yum を実行すると、エラーが報告され、ソースが見つかりま...

MySQL 8.0.11 インストール概要チュートリアル図

インストール環境: CAT /etc/os-release CentOS システムのバージョン情報を...

Ubuntu 20.04 デスクトップのインストールとルート権限の有効化および SSH インストールの詳細

記事は主にUbuntu 20.04の簡単なインストールプロセスを記録し、インストール後に国内ソースを...

ファイルのダウンロードを実現する javascript Blob オブジェクト

目次例示する1. ブロブオブジェクト2. フロントエンド3. バックエンド要約する例示する最近、ファ...

Nginx+tomcat ロードバランシングクラスタの実装方法

実験環境は以下のとおりですここでは、4 台のサーバー (1 台の nginx、負荷用の 2 台の t...

IE環境では、divの高さはフォントの高さよりも大きくなければならないと規定されています。

コードをコピーコードは次のとおりです。 <div class="content&qu...

JS を使用してデータ型を決定する 4 つの方法

目次序文1. 型2. インスタンス3. コンストラクター詳細: 4. 文字列要約する序文Javasc...

JavaScript イベント委任 (プロキシ) の使用例の詳細

目次導入例: イベントの委任記述方法1: イベント委譲書き方2: 各子要素がイベントをバインドする例...

DOCTYPE HTMLを使用する理由

これがないと、ブラウザはページをレンダリングするときに Quirks モードを使用することがわかって...

Vueは携帯電話のカメラとアルバムを呼び出す機能を実装します

この記事では、携帯電話のカメラとアルバムにアクセスするためのVueの具体的なコードを参考までに共有し...

HTML テーブルの行間および列間の操作 (rowspan、colspan)

一般的に、<td> 要素の colspan 属性はセルの列間操作を実装するために使用され...

MYSQL 左結合の最適化 (10 秒から 20 ミリ秒)

目次【機能背景】 [生のSQL] 【独自SQL解析】 【分析手順】 [最適化されたSQL] 【最適化...

JavaScript の instanceof メソッドの手動実装

1. instanceofの使用法instanceof演算子は、コンストラクター関数のprototy...