最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳細(xì)講解安全升級(jí)MySQL的方法

 更新時(shí)間:2015年06月25日 10:35:13   投稿:goldensun  
這篇文章主要介紹了詳細(xì)講解安全升級(jí)MySQL的方法,在此特別推薦使用Percona Toolkit來輔助升級(jí),當(dāng)然,本文示例基于Linux環(huán)境,需要的朋友可以參考下

MySQL升級(jí)是非常必要的. 我們?cè)?a target="_blank" >Percona Support上列出了關(guān)于MySQL升級(jí)最佳實(shí)踐的各種問題.這篇文章推薦了一些不同情況下升級(jí)MySQL的方法.

為什么MySQL升級(jí)是必須的? 原因有很多,比如:為了使用新增的特性,基于性能方面的考量, 修復(fù)的bug. 但是在沒有充分的測(cè)試以前就應(yīng)用到你的應(yīng)用中是非常危險(xiǎn)的, 因?yàn)樯?jí)可以能會(huì)讓你的應(yīng)用不能正常運(yùn)作- 也可能引起性能的問題. 此外, 我建議你關(guān)注MySQL的發(fā)布信息和Percona Server - 看看最近的版本有什么變化. 也許在在最新的版本中已修復(fù)了某個(gè)你正在煩惱的問題.

通過SQL Dump升級(jí)主版本:

把Percona Server從5.1升級(jí)到5.5版本或者是從5.5升級(jí)到5.6版本的升級(jí)模式同樣適用于Oracle MySQL.

首先, 主版本升級(jí)并不是說可以不做任何準(zhǔn)備,或者沒有任何風(fēng)險(xiǎn). 在升級(jí)之前你需要閱讀相關(guān)的“升級(jí)”文檔,比如:MySQL5.1到MySQL5.5的升級(jí)文檔,MySQL5.5到MySQL5.6的升級(jí)文檔.在這些文檔里面你需要特別注意“Incompatible Change”部分,并檢查你是否會(huì)受到這些變化的影響.它們可能是配置參數(shù)名字變更, 去掉舊的參數(shù),引入新的參數(shù)等- 你需要根據(jù)這些變化在my.cnf文件做相應(yīng)的變更.Percona Server 5.5需要特別注意的文檔在這里, Percona Server 5.6需要特別注意的文檔在這里.

現(xiàn)在,你有幾種可行的方式升級(jí),其中一種較靈活,另一種則依賴你當(dāng)前系統(tǒng)的拓?fù)浣Y(jié)構(gòu)和數(shù)據(jù)庫數(shù)據(jù)大小 - 這種方法比前一種更安全。我們看個(gè)例子從 Percona Server 5.5 升級(jí)到 Percona Server 5.6,來具體看一下彼此的升級(jí)過程。

通常情況下,有兩中升級(jí)方式:

  1.     直接升級(jí):安裝好新版本數(shù)據(jù)庫后,利用已經(jīng)存在的數(shù)據(jù)文件夾,同時(shí)運(yùn)行mysql_upgrade腳本來升級(jí)。
  2.     SQL 導(dǎo)出: 從一個(gè)較老版本的mysql把數(shù)據(jù)導(dǎo)出,然后恢復(fù)到新版本的數(shù)據(jù)庫中。(利用mysqldump工具)。

相比之下,第二種方式更安全些,但是這也會(huì)使得升級(jí)的過程要慢一些。

理論上講,最安全的方式是:

  •     導(dǎo)出所有用戶的權(quán)限
  •     導(dǎo)出所有數(shù)據(jù)并恢復(fù)到新版本數(shù)據(jù)庫中
  •     恢復(fù)用戶權(quán)限到新數(shù)據(jù)庫中


下面是基本的操作步驟(在開始之前最好停止有關(guān)數(shù)據(jù)庫操作的應(yīng)用).

1) 獲取用戶和權(quán)限信息. 該操作會(huì)備份所有用戶的權(quán)限.
 

$ wget percona.com/get/pt-show-grants;
$ perl pt-show-grants --user=root --ask-pass --flush > /root/grants.sql

2) dump 5.5數(shù)據(jù)庫實(shí)例的所有信息(除去mysql, information_schema 和performance_schema數(shù)據(jù)庫).
 

$ mysql -BNe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'performance_schema', 'information_schema')" | tr 'n' ' ' > /root/dbs-to-dump.sql
$ mysqldump --routines --events --single-transaction --databases $(cat /root/dbs-to-dump.sql) > /root/full-data-dump.sql

3) 停止數(shù)據(jù)庫

 

$ service mysql stop

or

$ /etc/init.d/mysql stop

4) 移動(dòng)舊數(shù)據(jù)庫(5.5版本)的數(shù)據(jù)目錄(假設(shè)是/var/lib/mysql,此處應(yīng)該改為你自己的數(shù)據(jù)目錄)
 

$ mv /var/lib/mysql/ /var/lib/mysql-55

5) 安裝5.6版本(按照正常安裝流程). 如果你不是用的yum/apt-get方式安裝的,你需要執(zhí)行 mysql_install_db 和mysql_upgrade兩個(gè)命令.

6) 將在1)操作中導(dǎo)出的用戶信息導(dǎo)入到新數(shù)據(jù)庫中.

 
mysql -uroot < /root/grants.sql

7) 將2)導(dǎo)出的數(shù)據(jù)導(dǎo)入到新數(shù)據(jù)庫.
 

$ mysql -e "SET GLOBAL max_allowed_packet=1024*1024*1024";
$ mysql -uroot -p --max-allowed-packet=1G < /root/full-data-dump.sql;

此時(shí), 所有的表都在MySQL 5.6中重建及重新加載完成,所以所有的二進(jìn)制文件對(duì)MySQL 5.6可用. 同時(shí)也你完成了最干凈/最穩(wěn)定的升級(jí)過程,你可以恢復(fù)你的應(yīng)用- 這個(gè)升級(jí)過程和valina MySQL與Percona Server的升級(jí)過程是一樣的.甚至你可以把Oracle MySQL升級(jí)到Percona Server. 比如: 把Oracle MySQL 5.5升級(jí)到Percona Server 5.6. 再次強(qiáng)調(diào): MySQL的升級(jí)過程和Percona Server的升級(jí)過程是一樣的,只需要將Percona Server 替換成Oracle MySQL即可.

"SQL dump" 也可以稱為邏輯備份.用升級(jí)后的MySQL二進(jìn)制文件來重建所有的表基本沒有兼容問題,從這一方面來說"SQL dump"更安全. 但是對(duì)于TB, GB級(jí)的大數(shù)據(jù)來說,這種方法非常的耗時(shí). 另一方面, 備份/重新加載如此大的數(shù)據(jù)集,比如重建InnoDB表,你需要恢復(fù)很多的空閑磁盤,這樣會(huì)引起的磁盤碎片整理優(yōu)化.對(duì)于常更新或者刪除的數(shù)據(jù)來說, 這么做是有益的.

用In-Place升級(jí)小版本:

這種升級(jí)方式是在一個(gè)主版本內(nèi)做小版本升級(jí), 比如把MySQL 5.5.35升級(jí)到MySQL 5.5.38或者是把Percona Server 5.6.14升級(jí)到最新的Percona Server 5.6.20

這被稱為一個(gè)就地升級(jí),你只安裝一個(gè)新的二進(jìn)制包,然后運(yùn)行mysql_upgrade腳本,如果必要的話,檢查和更新系統(tǒng)表。仍然,就地升級(jí)我們強(qiáng)烈推薦檢查新功能的發(fā)布說明,bug修復(fù)等。Percona Server 5.5 和 Percona Server 5.6 發(fā)行說明可以分別在這兒和那兒找到。

當(dāng)我們需要升級(jí)Percona服務(wù)器時(shí),針對(duì)它的Percona-specific的一些特性,對(duì)于Percona服務(wù)器我們有額外的文檔描述一些細(xì)節(jié),可以在這兒和那兒找到。這也包括完成就地升級(jí)過程的和yum/apt的包管理器。

同時(shí),在安全方面你可以升級(jí)那些使用較早描述的邏輯轉(zhuǎn)儲(chǔ)程序,mysqldump或mydumper程序——前者并行備份和恢復(fù)和邏輯備份,升級(jí)是最安全的方法。

直接升級(jí)到最新版本:

跳過5.1版本直接把MySQL從5.0版本升級(jí)到5.5版本,或者跳過5.5版本直接從MySQL 5.1升級(jí)到5.6.甚至,可以直接從MySQL 5.0升級(jí)到MySQL 5.6雖然現(xiàn)在只有少數(shù)人還在使用MySQL 5.0版本. 這種同樣使用于Percona Server.

在這里我們假設(shè)跳過5.5版本,把Oracle MySQL或者Percona Server直接從5.1版本升級(jí)到5.6版本.


在開始之前,你要意識(shí)到這是一個(gè)很慎重的操作,將一步跨過一個(gè)重要的MySQL版本。也就是說,這是有風(fēng)險(xiǎn)的。用二進(jìn)制文件升級(jí)是不建議的,而且這樣直接跨越一個(gè)重要版本也是不安全的,所以你絕不能這樣5.0->5.5,5.1->5.6,或者5.0->5.6做。有一個(gè)問題是,MySQL版本不是所有改變都前向兼容的。新版本中介紹的一些改變可能不僅會(huì)影響數(shù)據(jù)如何處理,還會(huì)影響服務(wù)器行為包括SQL語句和MySQL服務(wù)器和內(nèi)部存儲(chǔ)引擎(此處不知標(biāo)準(zhǔn)否)。另一個(gè)問題是MySQL5.0與5.6版本之間的變化,一些默認(rèn)的設(shè)置變量被改變了,這可能會(huì)導(dǎo)致結(jié)果完全不一樣或者行為完全不同。例如:MySQL5.5的默認(rèn)存儲(chǔ)引擎是InnoDB,MySQL5.6的存儲(chǔ)引擎InnoDB將可以為每個(gè)數(shù)據(jù)庫表創(chuàng)建單獨(dú)表空間(separate tablespace),還有GTID復(fù)制(GTID replication)也被引入。有太多細(xì)節(jié)這里就不一一列舉了,所有這些改變都被描述在MySQL的“升級(jí)文檔”中,詳情可以查看升級(jí)文檔。


這里重點(diǎn)提一下,極不推薦跳過一個(gè)重要版本來升級(jí)。從MySQL5.1升級(jí)到5.6不應(yīng)該一步完成,我建議先從5.1升級(jí)到5.5,再從5.5升級(jí)到5.6,每步都要運(yùn)行MySQL自動(dòng)升級(jí)(mysql_upgrade)。這將比較有效處理手冊(cè)上所說的升級(jí)改變。

MySQL的升級(jí)預(yù)防措施:

MySQL的升級(jí)預(yù)防措施是升級(jí)的一個(gè)基本部分。在你升級(jí)之前,確保你在新的MySQL版本中徹底測(cè)試了所有的應(yīng)用功能。這對(duì)重要版本之間的升級(jí)尤為重要,對(duì)重要版本之間的跨越升級(jí)也很重要(例如,從MySQL5.1升級(jí)到MySQL5.6)。

確保你認(rèn)真閱讀了發(fā)行說明,并且你清楚所有改變。你可以從以下鏈接中獲取Oracle MySQL 5.5和5.6的發(fā)行說明:

http://dev.mysql.com/doc/relnotes/mysql/5.5/en/

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/

Percona Server有單獨(dú)的發(fā)行說明,按上面說的順序可以參看以下鏈接:

http://www.percona.com/doc/percona-server/5.5/release-notes/release-notes_index.html
http://www.percona.com/doc/percona-server/5.6/release-notes/release-notes_index.html

如果你計(jì)劃升級(jí)到 Oracle MySQL 5.6 或者 Percona Server 5.6,我建議你首先檢查以下已經(jīng)存在的關(guān)鍵bugs。以下是你需要注意的一些bugs:

http://bugs.mysql.com/bug.php?id=66546
http://bugs.mysql.com/bug.php?id=68953
http://bugs.mysql.com/bug.php?id=69444
http://bugs.mysql.com/bug.php?id=70922
http://bugs.mysql.com/bug.php?id=72794
http://bugs.mysql.com/bug.php?id=73820


升級(jí)的層次結(jié)構(gòu):

這也是每一次MySQL升級(jí)的關(guān)鍵。你需要根據(jù)一個(gè)升級(jí)層次結(jié)構(gòu)來做你的每次升級(jí)。建議的次序結(jié)構(gòu)是:首先升級(jí) dev/QA servers,然后升級(jí) staging server,最后升級(jí)到 production servers上。實(shí)際上,你可以縮小升級(jí)的步伐,一步一步升級(jí)到你想要的版本,每步都可以充分地測(cè)試原來的應(yīng)用。

一旦你對(duì)在test servers, staging servers等上運(yùn)行的升級(jí)感到滿意后,你就可以在你的production servers上進(jìn)行升級(jí)了。在副本環(huán)境下,我建議你先升級(jí)MySQL slaves(一個(gè)接一個(gè)的)最后升級(jí)MySQL master。實(shí)際上,你可以先升級(jí)一個(gè)slaves,讓它在安全環(huán)境下運(yùn)行幾天,同時(shí)觀察仔細(xì)觀察它的運(yùn)行情況。如果你的服務(wù)器中沒有副本環(huán)境的設(shè)置,那么還是值得建立一個(gè)副本環(huán)境來測(cè)試新版的MySQL的。一旦你對(duì)升級(jí)結(jié)果感到滿意,你可以升級(jí)其他的slaves,最后升級(jí)master。

Percona軟件包幫助你MySQL升級(jí):

在MySQL升級(jí)中,Percona Toolkit 都能幫助你。Percona Toolkit 的一些工具將會(huì)起到很大的作用。

pt-upgrade 是其中的一個(gè)工具。它使你能測(cè)試新版MySQL實(shí)例是否能夠達(dá)到像老版本處理一些特定查詢的時(shí)候一樣的速度。新版本可能有一些本質(zhì)上的改變,因?yàn)镸ySQL的查詢優(yōu)化器從5.1到5.6已經(jīng)有了重大改變,還有數(shù)據(jù)統(tǒng)計(jì)可能刷新,因此查詢計(jì)劃會(huì)改變。你可以在手冊(cè)中看到更多優(yōu)化器的改變。

pt-query-digest 是另一個(gè)能給你極大幫助的工具。你可以多次運(yùn)行你的slow query log,以比較確認(rèn)在現(xiàn)在的版本和新版本之間的表現(xiàn)差別。

你也可以從MySQL的Percona Cloud Tools中獲得幫助,這是一個(gè)托管服務(wù),可以為所有MySQL的使用提供查詢性能分析?,F(xiàn)在你可以免費(fèi)注冊(cè)這個(gè)服務(wù),因?yàn)楝F(xiàn)在這項(xiàng)服務(wù)在進(jìn)行公開測(cè)試。Percona Cloud Tools在許多同類產(chǎn)品中,能讓你可視化的觀察到每次MySQL升級(jí)后的查詢表現(xiàn)。

再次重申,強(qiáng)烈建議你每次更新MySQL前備份數(shù)據(jù)。Percona XtraBackup就是一款免費(fèi)、開源的(就像所有Percona軟件一樣)。這是一個(gè)熱備份工具,它允許你在線備份數(shù)據(jù)而不影響你對(duì)數(shù)據(jù)庫的讀寫操作,而且它備份數(shù)據(jù)時(shí)產(chǎn)生很小的影響。 
結(jié)論:

一次MySQL升級(jí)看起來是個(gè)簡(jiǎn)單的任務(wù),但實(shí)際上并沒有那么簡(jiǎn)單。我試圖在這篇文章中最大限度覆蓋所有有關(guān)MySQL升級(jí)中你可能遇到的情況。再次強(qiáng)調(diào),我建議你在應(yīng)用更新的版本之前,先測(cè)試一下你的應(yīng)用在新版本中的效果。否則,可能會(huì)使你的應(yīng)用崩潰,或者得到的不是提高查詢效率而是降低查詢效率。最后,我建議你準(zhǔn)備一個(gè)降級(jí)計(jì)劃或措施,以防你升級(jí)之后出現(xiàn)不可預(yù)料的錯(cuò)誤。在問題出現(xiàn)的時(shí)候,有一個(gè)規(guī)劃好的降級(jí)程序?qū)?huì)極大的減少你的應(yīng)用停工期。期待你在下面發(fā)表評(píng)論和提問。

相關(guān)文章

  • win7下MySql 5.7安裝配置方法圖文教程

    win7下MySql 5.7安裝配置方法圖文教程

    這篇文章主要為大家分享了win7下MySql 5.7安裝配置方法圖文教程,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Mysql獲取指定時(shí)間范圍數(shù)據(jù)的各種實(shí)例

    Mysql獲取指定時(shí)間范圍數(shù)據(jù)的各種實(shí)例

    最近在做管理后臺(tái)報(bào)表時(shí),給定一個(gè)日期范圍,查出庫中這個(gè)日期范圍內(nèi)的每一天數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Mysql獲取指定時(shí)間范圍數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 深入mysql主從復(fù)制延遲問題的詳解

    深入mysql主從復(fù)制延遲問題的詳解

    本篇文章是對(duì)mysql中主從復(fù)制延遲的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL慢查詢?nèi)罩緎lowlog的具體使用

    MySQL慢查詢?nèi)罩緎lowlog的具體使用

    本文主要介紹了MySQL慢查詢?nèi)罩緎lowlog的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • MySQL查詢表中重復(fù)數(shù)據(jù)的實(shí)現(xiàn)

    MySQL查詢表中重復(fù)數(shù)據(jù)的實(shí)現(xiàn)

    在數(shù)據(jù)庫中,我們經(jīng)常需要查詢重復(fù)字段來確保數(shù)據(jù)的準(zhǔn)確性,如果數(shù)據(jù)中有重復(fù)字段,則可能會(huì)導(dǎo)致查詢結(jié)果錯(cuò)誤,本文就想詳細(xì)的介紹了MySQL查詢表中重復(fù)數(shù)據(jù),感興趣的可以了解一下
    2023-08-08
  • MySQL多表查詢的具體實(shí)例

    MySQL多表查詢的具體實(shí)例

    這篇文章主要介紹了MySQL多表查詢的具體實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • mysql 5.7.21 winx64免安裝版配置方法圖文教程

    mysql 5.7.21 winx64免安裝版配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.21 winx64免安裝版配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • SQL實(shí)戰(zhàn)之行列互轉(zhuǎn)

    SQL實(shí)戰(zhàn)之行列互轉(zhuǎn)

    本文介紹了在Hive中進(jìn)行行轉(zhuǎn)列的幾種方法,包括使用CASE?WHEN/IF、Get_Json_Object、Str_To_Map以及UNION?ALL和EXPLODE函數(shù),每種方法都有其適用場(chǎng)景,感興趣的可以了解一下
    2024-12-12
  • 一文帶你玩轉(zhuǎn)MySQL獲取時(shí)間和格式轉(zhuǎn)換各類操作方法詳解

    一文帶你玩轉(zhuǎn)MySQL獲取時(shí)間和格式轉(zhuǎn)換各類操作方法詳解

    最近在開發(fā)中常常使用時(shí)間的轉(zhuǎn)換函數(shù),所以一直都想整理一下這些函數(shù),下面這篇文章主要給大家介紹了關(guān)于MySQL獲取時(shí)間和格式轉(zhuǎn)換各類操作方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 使用MySQL生成最近24小時(shí)整點(diǎn)時(shí)間臨時(shí)表

    使用MySQL生成最近24小時(shí)整點(diǎn)時(shí)間臨時(shí)表

    MySQL臨時(shí)表是一種只存在于當(dāng)前數(shù)據(jù)庫連接或會(huì)話期間的表,它們可以被用來存儲(chǔ)臨時(shí)數(shù)據(jù),這些數(shù)據(jù)可以在查詢中被使用,但是它們不會(huì)在數(shù)據(jù)庫中永久存儲(chǔ),這篇文章主要給大家介紹了關(guān)于如何使用MySQL生成最近24小時(shí)整點(diǎn)時(shí)間臨時(shí)表的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

怀仁县| 宁阳县| 永昌县| 平昌县| 江川县| 德江县| 开化县| 饶河县| 陇南市| 临沧市| 东阿县| 阳泉市| 弥勒县| 崇州市| 开封县| 柳江县| 岳阳市| SHOW| 祁门县| 石渠县| 大名县| 庆元县| 垣曲县| 和龙市| 呼伦贝尔市| 精河县| 屏东县| 桦甸市| 古交市| 买车| 洛川县| 同仁县| 综艺| 西充县| 双鸭山市| 中超| 郧西县| 饶河县| 濮阳市| 博客| 克东县|