下文主要給大家帶來‘In Place’ 幫助MySQL5.0直接升級至5.7,希望這些內容能夠帶給大家實際用處,這也是我編輯‘In Place’ 幫助MySQL5.0直接升級至5.7這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
西峽網站建設公司成都創新互聯公司,西峽網站設計制作,有大型網站制作公司豐富經驗。已為西峽近千家提供企業網站建設服務。企業網站搭建\成都外貿網站建設公司要多少錢,請找那個售后服務好的西峽做網站的公司定做!
'In Place' 升級比'Dump'升級要快,因為你省去了導入數據的步驟。這樣節省了時間,但升級前的備份就更加重要,因為你就是在原始目錄上執行升級操作。你使用相同的數據文件,你就不能使用一些需要重建數據庫才能使用的新功能,比如創建undo tablespaces(在5.6.3版本引入)或將已經存在的表改到獨立表空間中(innodb_file_per_table 在5.6.6開始支持)。
我使用如下步驟進行升級:
啟動5.0.96版本實例,導入sakila schema數據。為了簡單,使用 --no-defaults。
$ cd <mysql 5.0.96 basedir> $ ./scripts/mysql_install_db --no-defaults --datadir=<DATADIR> --basedir=. $ ./bin/mysqld_safe --no-defaults --datadir=<DATADIR> --basedir=. --port=<PORT> --socket=<SOCKET> & $ ./bin/mysql -uroot --socket=<SOCKET> --execute="create database sakila;" $ ./bin/mysql -uroot --socket=<SOCKET> --execute="source sakila-schema.sql" --database=sakila $ ./bin/mysql -uroot --socket=<SOCKET> --execute="source sakila-data.sql" --database=sakila
關閉數據庫服務。這是你備份數據庫的好時間。然后,進入新版本MySQL的文件夾,啟動數據庫。使用相同的數據目錄,所以你的所有數據都在<DATADIR>中
$ cd <mysql 5.0.96 basedir> $ ./bin/mysqladmin -uroot --socket=<SOCKET> shutdown $ cd <mysql 5.7.9 basedir> $ ./bin/mysqld_safe --no-defaults --datadir=<DATADIR> --basedir=. --port=< PORT> --socket=<SOCKET> --skip-grant-tables &
請注意,當第一次啟動5.7版本數據庫時,必須使用 --skip-grant-tables。
運行 mysql_upgrade。這樣會升級所有的系統表和檢查用戶庫。
$ ./bin/mysql_upgrade -uroot --socket=<SOCKET>
導入幫助表(可選)
$ ./bin/mysql -uroot --socket=<SOCKET> --execute="source ./share/fill_help_tables.sql" mysql
重啟MySQL服務
$ ./bin/mysqladmin -uroot --socket=<SOCKET> shutdown $ ./bin/mysqld_safe --no-defaults --datadir=<DATADIR> --basedir=. --port=<PORT> --socket=<SOCKET> &
運行mysqlcheck檢查數據庫狀態
$ ./bin/mysqlcheck -uroot --socket=<SOCKET> --all-databases
如果從5.0.96升級,這種升級方法可能需要重建一些表或觸發器。在本文使用的sakila 條件下,我收到了下面的警告信息:
Warning : Triggers for table `sakila`.`customer` have no creation context Warning : Triggers for table `sakila`.`film` have no creation context Warning : Triggers for table `sakila`.`payment` have no creation context Warning : Triggers for table `sakila`.`rental` have no creation context
由于觸發器存儲的元數據的更改,需要重載。我使用下面的步驟重建觸發器:
使用mysqldump導出觸發器
$ ./bin/mysqldump --socket=<SOCKET> -uroot --triggers --no-create-db --no-data --no-create-info --all-databases > addtriggers.sql
生成一個sql去刪掉存在的觸發器。排除sys庫,因為上面的mysqldump不會導出sys庫中的觸發器。
mysql> SELECT CONCAT('DROP TRIGGER ', TRIGGER_SCHEMA, '.', TRIGGER_NAME, ';') FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_schema not in ('sys') INTO OUTFILE 'droptriggers.sql';
刪掉存在的觸發器
$ ./bin/mysql --socket=<SOCKET> -uroot --execute="source droptriggers.sql"
重載觸發器
$ ./bin/mysql --socket=<SOCKET> -uroot --execute="source addtriggers.sql"
運行mysqlcheck
$ ./bin/mysqlcheck -uroot --socket=<SOCKET> --all-databases
使用上面的步驟從5.0.96、5.1.73、5.5.46和5.6.27 升級到5.7.9,均是成功的。使用mysqlcheck,統計所有庫的表、列和程序的數量,運行基礎的select/insert/update/delete 語句并執行、調用用戶函數和存儲過程來進行驗證。
(注:在這篇文章寫的時候,還不支持5.5到5.7版本的復制,在5.7.13版本時,修復了該bug)
對于以上關于‘In Place’ 幫助MySQL5.0直接升級至5.7,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。
本文標題:‘InPlace’幫助MySQL5.0直接升級至5.7
文章地址:http://vcdvsql.cn/article4/pdesie.html
成都網站建設公司_創新互聯,為您提供企業建站、外貿建站、手機網站建設、面包屑導航、全網營銷推廣、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯