Tuesday, May 6, 2014

MySQLエラー1118(42000)上のMySQL 5.0のMySQL 5.5以上

Original post: http://anothermysqldba.blogspot.com/2014/05/mysql-error-1118-42000-mysql-50-to.html 

だから私は最近、私は、MySQL 5.0からMySQLの5.5にアップグレードしなければならなかったことのTBSのデータベースを持っていた。 
このブログの記事は、以下に触れたいと思います。 
  • のsql_mode
  • innodb_strict_mode
  • SLAVE IO_THREAD
(mysqlcheckは行いませ)mysql_upgradeはプロセスの間に私はすぐに次のエラーが気づいた。 

ERROR 1118 (42000) at line 23: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

だから私は、私が最初にいくつかのことを確認しなければならなかった始めた。 

# The master DB was > select @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
新しいDBがあった 
mysql> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +--------------------------------------------+ 
[OK]を私はむしろ空の値以上のsql_modeのために何かを持っているでしょう。 
だから私はそれを手放す。 
# MASTER SERVER
select @@innodb_strict_mode;
ERROR 1193 (HY000): Unknown system variable 'innodb_strict_mode'

# NEW SERVER mysql> select @@innodb_strict_mode;
+----------------------+
| @@innodb_strict_mode |
+----------------------+
| 1 |
+----------------------+
この設定についての詳細をここに読むことができます。 
http://dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-other-changes-strict-mode.html 
mysql> SET GLOBAL innodb_strict_mode=0;

上記のコマンドは、私は、少なくともMySQLのテーブルをチェックアップグレードすることができました。 安全のために、私はまだすべてのテーブルをダンプしてロードするbashスクリプトを設定します。 (はい、それらのすべてのTBS) 

近道を取ると、すべてがOKであるとは限りません。 

あなたが取得している場合はエラーがmysqldumpをし、ファイルを再ロードします。 より良い申し訳ありませんが、後でよりも安全であること。 

データは5.5 +にロードされると、私は確認して変数を調整することができます。 

それは、データのTBのをダンプしてロードするためにいくつかの時間を取るつもりだと言ってそう言うまでもなく。 私は可能な限り高速に追いつくために、スレーブに私ができるすべての機会を与えたいと思う。 私のシェルスクリプトをダンプし、データをロードしている間、データベースはその間にバイナリログを収集することはできません理由はありません。 

mysql> START SLAVE IO_THREAD ; 
だから今、私のPROCESSLISTが表示されている間。 

SELECT /*!40001 SQL_NO_CACHE */ * 
スレーブの状態が示して​​います。 
Slave_IO_Running:はい 
Slave_SQL_Running:いいえ 

私は、データベースをきれいにしながら、だから私は、ログを収集しています。 
これは私が行く準備ができていたら、データベースがすぐに追いつくようにする必要があります。