mysql dump工具升級_MySQL數據庫升級

當前不少系統的數據庫依舊是MySQL5.6,由于MySQL5.7及MySQL8.0在性能及安全方面有著很大的提升,因此需要升級數據庫。本文通過邏輯方式、物理方式原地升級來介紹MySQL5.6 升級至MySQL5.7的方法,并介紹其使用場景。

1.? 邏輯方式升級

邏輯方式升級其實就是通過邏輯備份工具(例如mysqldump工具)將數據庫、表、其他相關對象及數據邏輯備份成SQL腳本,再將其還原至MySQL5.7的實例中。

詳細步驟如下:

1.1? 備份數據庫

當前數據庫的版本為MySQL5.6.27,現在準備備份

1bd42e790ea1bfebd9ebe9f3b8c8a7b1.png

因為庫比較小,因此使用mysqldump進行備份即可。mysqldump備份的方法可以參考歷史文章進行了解

備份腳本:

/*備份所有庫及相關對象*/

/usr/local/mysql/bin/mysqldump -uroot -p --socket=/app/data/mysql3307/tmp/mysql.sock --master-data=2 --default-character-set=utf8 --routines --triggers --events --flush-logs --flush-privileges --single-transaction --all-databases > all_db.sql

1.2? 部署一套MySQL5.7實例

MySQL5.7 的部署歷史文章里也有,如果不太熟悉的同學可以參考如下鏈接文章

安裝過程比較簡單,本文不再贅述。

1.3? 數據導入MySQL5.7

將備份的MySQL5.6的數據導入到MySQL5.7 中即可。

1.4 應用場景

數據量小的情況下使用,此方式通常不會失敗

在跨大版本升級的時候使用較多,例如,從MySQL5.6(或更低版本)直接升級到8.0版本

不同MySQL分支之間升級

2.? mysql_update方式升級

使用mysql_update方式升級時,時間相對較快,尤其是數據庫體量較大時,此方式可以原地直接升級。

步驟如下:

2.1? 下載MySQL5.7

下載需要升級到的版本的數據庫,例如本次升級到MySQL5.7.25-28版本(percona分支),則下載對應安裝包,解壓后配置軟連接

2.2? 修改配置文件

因MySQL5.6 的部分參數再MySQL5.7 中已經廢棄或者默認值發生變化,另外也為了使用MySQL5.7的新特性,需要添加對應的參數配置,例如:

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION   # 保持和MySQL5.6一致

innodb_large_prefix =OFF             ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 保持和MySQL5.6 一致

log_timestamps=SYSTEM? ? ? ? ? ? # 新增參數,如果不添加,默認日志里采用UTC時間格式記錄,我們看上去可能不太方便

secure_file_priv=/tmp? ? ? ? ? ? ? ? ? # MySQL5.7對安全性做了很多提升,此參數不配置的話默認無法使用load file 及ELECT …OUTFILE等

character_set_server= utf8? ? ? ? ?# 雖然建議使用utf8mb4字符集,但是如果需要保持和原庫一致,需要指定

當日,還有很多新特性的參數需要調整,在此不再一一列舉,需要的同學直接聯系我 或者參考歷史文章配置即可

2.3 關閉MySQL5.6 實例

MySQL5.6的關閉可以使用停止服務的方式,也可以通過命令行方式,命令如下:

/*mysql5.6 關閉實例的方式需要使用mysqladmin*/

/usr/local/mysql/bin/mysqladmin --socket=/app/data/mysql3307/tmp/mysql.sock -uroot -p shutdown

建議: 生產環境中,如果可以使用此方式升級,強烈建議先直接冷備一下整個數據庫的數據目錄,已防止升級失敗等情況出現。

2.4? 使用MySQL5.7 啟動原庫

此時需要用MySQL5.7來啟動數據庫,啟動后日志里會有一些報錯信息。

啟動數據庫

/usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/app/data/mysql3307/etc/my.cnf &

日志里內容如下,出現很多錯誤,其中也提示到需要使用mysql_upgrade進行修復:

731eb097a7bcc929cd4fef91659fa06a.png

2.5? 升級數據庫

MySQL升級工具是mysql_upgrade,錯誤日志里也提到了使用mysql_upgrade進行修復相應的錯誤。升級的方法如下:

/*升級系統庫及業務庫*/

/usr/local/mysql5.7/bin/mysql_upgrade --socket=/app/data/mysql3307/tmp/mysql.sock -uroot -p

7a67fad5394ea97f82191c0d052b2521.png

6430bff2d641be6c17225af5f107e269.png

如果只需要升級系統庫,則加-s參數; 如果升級過程中有錯誤或者中斷后想再次升級 可以添加--force參數強制升級

/*只升級系統庫*/

/usr/local/mysql5.7/bin/mysql_upgrade --socket=/app/data/mysql3307/tmp/mysql.sock -uroot -p -s/*強制升級*/

/usr/local/mysql5.7/bin/mysql_upgrade --socket=/app/data/mysql3307/tmp/mysql.sock -uroot -p --force

2.6 后續工作

升級完成后建議再進行以下工作

重啟數據庫,以便所有功能生效;且重啟后再次查看數據庫日志

修改環境變量及軟連接,以便默認使用MySQL5.7的相關命令

附: 升級后數據庫啟動日志

9105784f8a6f74e27440d3ace7567802.png

2.7? 使用場景

相同大版本之間的小版本升級

數據量較大,提前測試過兩個版本之間可以原地升級時再用。

3.? 小結

MySQL的邏輯升級及mysql_upgrade的原地升級都有各自的應用場景。但是無論用哪種方式,都要注意以下幾點:

a)? ?在生產環境上進行升級操作之前一定需要先在測試環境中多次進行相同版本的升級測試工作;

b) 實際工作中,測試環境升級成功后需要經過相關業務的回歸測試,確保相關功能升級后能正常使用后再在生產環境進行升級,建議測試環境進行1個月以上的測試

c)? ?生產環境升級前一定要進行備份

d)? ?生產環境的升級順序建議是先升級從節點,再升級主節點或進行主從切換

以上就是MySQL5.6升級至MySQL5.7的2種主要方式,如有問題或建議,歡迎與我溝通或投稿(公眾號:數據庫干貨鋪)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529526.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529526.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529526.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java int 128 ==_為什么 Java Integer 中“128==128”為false,而”100==100“為true?

這是一個挺有意思的討論話題,讓我們用代碼說話吧!運行下面的代碼:Integer a 128, b 128;System.out.println(a b);Integer c 100, d 100;System.out.println(c d);你會得到:falsetrue基本知識:我們知道,如果兩個引用指向同一個對象&…

mysql課程表學時_Mysql 鞏固提升 (學生表_課程表_成績表_教師表)

方便Mysql 鞏固提升創建表并插入數據:-- ------------------------------ Table structure for student-- ----------------------------DROP TABLE IF EXISTS student;CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT,sname varchar(32) DEFAULT NULL,s…

初始java_第一章__初始JAVA

1.java的三個發展方向:JAVASE(面向對象、API、JVM)、JAVAME(移動設備、游戲、通信)、JAVAEE(JSP、EJB、服務)2.開發JAVA的程序步驟:1.編寫源程序 2.編譯 3.運行3.JDKJRE開發工具下載java環境jdk 安裝并配置環境變量,.安裝直接下一步下一步直到…

python最常用的版本、也稱為classic_2021年中國大學《創新思維與創業》單元測試答案...

2021年中國大學《創新思維與創業》單元測試答案被人們稱為 “寒地水稻第一人”的是袁隆平答:錯地圖數據的基本特征包括答:時間屬性 空間定位屬性 地理屬性對賣方征稅導致商品價格上升答:√( )是在床榻上使用的一種矮形家具。答:炕…

java 泛型 繼承_java基礎之泛型的繼承

關于泛型的基本介紹和理解請參考以下幾篇文章&#xff0c;或查詢更多資料&#xff1a;本篇以簡單的List<>方式來進行說明。ArrayList繼承了List,ArrayList沒有繼承ListList>等價于List extends Object>請參考以下代碼&#xff1a;/*** author Ding Chengyun* 2014-…

appium java環境_Appium環境搭建(Windows版)

注&#xff1a;appium安裝到C盤&#xff0c;node.js安裝到C盤一、安裝node.js1、到官網下載node.js&#xff1a;https://nodejs.org/en/download/2、獲取到安裝文件后&#xff0c;直接雙擊安裝文件&#xff0c;根據程序的提示&#xff0c;完成nodejs的安裝。3、安裝完成后&…

ci mysql pdo_CI框架中pdo的使用方法

1、配置文件修改application/config文件夾下的database.php文件 $db[default] array(dsn > mysql:dbnameci_ecshop;host127.0.0.1,username > root,password > ,dbdriver > pdo,2、查詢操作$sql select * from aaa where id :id;$sql_array array(:id > …

ie11加載java插件_IE瀏覽器中ActiveX插件的使用

在某些行業的B/S應用系統中會不可避免的要用到ActiveX瀏覽器插件&#xff0c;而ActiveX插件只能在IE內核瀏覽器中運行&#xff0c;而常用的IE瀏覽器的版本眾多&#xff0c;從IE6到IE11&#xff0c;總共有6個版本&#xff0c;這就給開發的應用系統造成了不小的困擾&#xff1a;如…

netty java開發文檔_Netty簡明教學文檔

寫個簡單點&#xff0c;比較小白的文檔&#xff0c;言語比較接地氣Netty是什么&#xff1f;NIO的高層封裝&#xff0c;NIO很難寫&#xff0c;所以有了Netty&#xff0c;方便異步的操作service的主要代碼片段public void run() throws Exception {EventLoopGroup bossGroup new…

mysql 全局不重復_php uniqid() 通過MYSQL實現全局不重復的唯一ID

看了國外文章&#xff1a;https://jason.pureconcepts.net/2013/09/php-convert-uniqid-to-timestamp/ 不想寫&#xff50;&#xff48;&#xff50;腳本uniqid()處理&#xff0c;想到用mysql一次性把數據庫的ID改過來的方法&#xff0c;所以開始了以下研究方法一: 效率最高&…

java接口允許ajax訪問_服務允許AJAX請求,允許跨域請求

當工作時間&#xff0c;因為需要JS 進行AJAX請求&#xff0c;這時候存在跨域問題&#xff0c;當出現這種情況時&#xff0c;有多種方案解決比如使用JSONP&#xff0c;也有一種簡單的方式&#xff0c;就是在過濾器里面增加返回請求允許跨域head配置。代碼如下&#xff1a;/**** …

mysql的增_MySQL之增_insert-replace

MySQL增刪改查之增insert、replace一、INSERT語句帶有values子句的insert語句&#xff0c;用于數據的增加語法&#xff1a;INSERT [INTO] tbl_name[(col_name,...)]{VALUES | VALUE} (expr ,...),(...),...①用來把一個新行插入到表中②為和其它數據庫保持一致&#xff0c;不要…

python manager詳解_python 多進程共享全局變量之Manager()詳解

Manager支持的類型有list,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Queue,Value和Array。但當使用Manager處理list、dict等可變數據類型時&#xff0c;需要注意一個陷阱&#xff0c;即Manager對象無法監測到它引用的可變對象值的修改&#xff0c…

java 添加等待時間_Java中線程等待特定時間的最有效方法 - java

我知道這個問題here&#xff0c;但是我有一個稍微不同的問題。如果我希望自己通過各種Thread方法(而不是通過實用程序類或Quartz)手動編碼某個線程在特定時間的運行&#xff0c;那么最有效(就開銷而言)進行編碼。我考慮過:boolean wasInterrupted false;while (System.current…

PHP微信app接口退款,10.PHP接入微信退款接口

推薦文章摘要環境搭建開啟配置服務器環境核心類驗證回復拓展推薦文章今天網上和朋友圈炸開了鍋&#xff0c;原因是微信小程序正式上線了。吃瓜群眾表示不理解&#xff0c;于是去搜了下。不搜不要緊&#xff0c;搜了嚇一跳&#xff0c;原來微信小程序早在2016年9月份就已經進行了…

java線程讀取流的時候卡死,java – 線程中斷沒有結束阻塞調用輸入流讀取

我正在使用RXTX從串口讀取數據.讀取是在以下列方式生成的線程內完成的&#xff1a;CommPortIdentifier portIdentifier CommPortIdentifier.getPortIdentifier(port);CommPort comm portIdentifier.open("Whatever", 2000);SerialPort serial (SerialPort)comm;..…

php poi,GitHub - satthi/poi-php: poi-php

poi-phpvarsion 0.1(2013/10/21)このプラグインはJavaのpoiをPHPから叩いてエクセルを入出力するプラグインです。必須要件jdk1.7.0_40poi-3.9opencsv-2.3使い方①poi-phpを任意の場所に設置②PHPを記述//デフォルト読み込みrequire_once(poi-php.phpのディレクトリパス);$this…

php hmac sha256簽名,HMAC-SHA256簽名錯誤?

#2.連接商戶key&#xff1a;act_name3333321ss&client_ip118.89.65.223&mch_billnoa0000000000000000001&mch_id1529243621&nonce_str905Qh0J59d69JjDtD7QkyRAm576kh5hU&re_openidoiW0l03-60UfHJfo0olLt3wOLb0E&remark111&remark222dddd&send_…

php傳輸的多個id集中為一條記錄,如何將多個ID應用于Mysql中的一條記錄?

在實體關系語言中,這稱為多對多關系.一個產品可以有多個類別,一個類別可以有多個產品.要在關系數據庫中執行此操作,您需要三個表.product: product_id, name, description, etccategory: category_id, catname, catdescription, etc然后用這個所謂的聯接表建立產品和類別之間的…

php redis 傳遞閉包,通過緩存構建高性能 Laravel 應用

通過緩存構建高性能 Laravel 應用由 學院君 創建于3年前, 最后更新于 11個月前版本號 #220678 views9 likes1 collects配置Laravel 為不同的緩存系統提供了統一的 API。緩存配置位于 config/cache.php。在該文件中你可以指定在應用中默認使用哪個緩存驅動。Laravel 開箱支持主流…