所以,我最近有一個TB的數據庫,我不得不從MySQL 5.0升級到MySQL 5.5。
本博客文章將涉及以下內容:
於是我開始,我不得不先檢查幾件事情。
新的數據庫是
好吧,我寧願有東西SQL_MODE了一個空值。
所以,我讓那去。
你可以閱讀更多有關在這裡設置:
http://dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-other-changes-strict-mode.html
上面的命令讓我至少升級mysql的一個檢查表。 為了安全起見我還是成立了一個bash腳本來轉儲和加載所有的表。 (是他們的所有TBS)
不要走捷徑,並承擔一切正常。
如果您收到錯誤mysqldump的並重新加載該文件。 更好的是安全比遺憾以後。
一旦數據被加載到5.5 + I可以查看和調整變量。
所以,不用說這是要花費一些時間來轉儲和裝載數據的傳輸塊。 我想給所有從機的機會,我可以趕上盡可能快。 雖然我的shell腳本傾銷和加載數據,沒有理由的數據庫無法採集二進制日誌在此期間。
所以,現在當我PROCESSLIST會顯示:
從站狀態顯示:
Slave_IO_Running:是
Slave_SQL_Running:無
因此,我收集日誌,而我清理數據庫。
這應該允許數據庫迅速趕上一次,我準備好了。
本博客文章將涉及以下內容:
- SQL_MODE
- innodb_strict_mode
- SLAVE IO_THREAD
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 |
+------------+
| |
+------------+
mysql> select @@sql_mode;
+--------------------------------------------+
| @@sql_mode |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +--------------------------------------------+
所以,我讓那去。
# 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)
不要走捷徑,並承擔一切正常。
如果您收到錯誤mysqldump的並重新加載該文件。 更好的是安全比遺憾以後。
一旦數據被加載到5.5 + I可以查看和調整變量。
所以,不用說這是要花費一些時間來轉儲和裝載數據的傳輸塊。 我想給所有從機的機會,我可以趕上盡可能快。 雖然我的shell腳本傾銷和加載數據,沒有理由的數據庫無法採集二進制日誌在此期間。
mysql> START SLAVE IO_THREAD ;
SELECT /*!40001 SQL_NO_CACHE */ *
Slave_IO_Running:是
Slave_SQL_Running:無
因此,我收集日誌,而我清理數據庫。
這應該允許數據庫迅速趕上一次,我準備好了。