Mysql
將mysql伺服器從5.1升級到5.6?
我的伺服器有 CentOS6。目前我正在使用 Percona 5.1.47 版本。想升級到5.6。
什麼是最好的方法,以及在這樣做之前要記住的先決條件是什麼。
添加此伺服器是主-主複製拓撲。
我有一個更直接的方法來從 MySQL 5.1 升級到 5.6
想法是執行以下操作:
將 MySQL 5.1 中的 mysql 模式作為純 SQL 轉儲到授權文件中
將沒有 mysql 模式的 MySQL 5.1 中的數據轉儲到數據文件中
解除安裝 MySQL 5.1
安裝 MySQL 5.6
將授權文件載入到 MySQL 5.6
將數據文件載入到 MySQL 5.6
擷取數據
MYSQL_USER=root MYSQL_PASS=rootpassword MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}" SQL="SET group_concat_max_len = 1048576;" SQL="${SQL} SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata" SQL="${SQL} WHERE schema_name NOT IN" SQL="${SQL} ('information_schema','mysql','performance_schema')" DBLIST=`mysql -ANe"${SQL}" | sed 's/,/ /g'` mysqldump ${MYSQL_CONN} --databases ${DBLIST} > MySQLData.sql
擷取補助金
這是我個人模擬pt-show-grants以擷取 SQL Grants
MYSQL_USER=root MYSQL_PASS=rootpassword MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}" SQL="SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';')" SQL="${SQL} FROM mysql.user WHERE user<>''" mysql ${MYSQL_CONN} -ANe"${SQL}"|mysql ${MYSQL_CONN} -AN|sed 's/$/;/g' > MySQLGrants.sql
這是我之前討論過這些事情的文章
Mar 26, 2015
: mysql 從 5.1 升級 –> 5.6 升級前我必須做 mysqldump 嗎?Oct 17, 2014
:從 MySQL 5.1.73 升級到 5.6.21 的任何已知問題?試一試 !!!
警告:這些步驟中遺漏了許多細節。閱讀文件;查找更多論壇條目;等等。
假設您從 A<->B 開始,這意味著複製是在兩個方向上建立的。還假設您目前只寫給 A。
計劃 A,只有 2 台伺服器
- 更改為 A->B:即
STOP SLAVE
在 A 上。- 將原地 B 升級到 5.5。(保持二進制日誌打開。)
- 將 B 地升級到 5.6。
- 故障轉移。B 現在是可寫的。A 未使用。(您現在很容易受到攻擊。您需要 3 台伺服器來避免該漏洞。)
STOP SLAVE
在 B 上。- 將 A 升級到 5.5 到 5.6
START SLAVE
在 A 和 B 上。方案 B,添加新伺服器
最好將第三台機器 C 加入其中。
- 5.6 十攝氏度。
- 從 A 複製 C。
- 使 C 成為 A 的奴隸:B <-> A -> C(5.6)
- 將 C 複製到 B 上並使其成為 C 的從屬:A -> C(5.6) -> B(5.6)
- 投擲A;建立雙主:A(未使用);C(5.6) <-> B(5.6)
計劃 C mysqldump
- 停止寫入
- mysql轉儲
- 停止 B,載入 5.6,載入數據,開始寫入。
- A 上同上。(注意二進制日誌等)
腳註:Percona Xtradbdump 在很多方面都比較好,而且步驟會有所不同。