溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中5.6與5.7有哪些區(qū)別

發(fā)布時間:2022-03-01 17:15:55 來源:億速云 閱讀:1541 作者:iii 欄目:MySQL數(shù)據(jù)庫

今天小編給大家分享一下mysql中5.6與5.7有哪些區(qū)別的相關知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

mysql中5.6與5.7的區(qū)別:1、5.7版本提供了json格式數(shù)據(jù),而5.6版本沒有提供json版本數(shù)據(jù);2、5.7版本支持多主一從,而5.6版本不支持多主一從;3、5.7版本初始化數(shù)據(jù)時在bin目錄下,而5.6版本在script目錄。

本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。

mysql中5.6與5.7有什么區(qū)別

一、編譯安裝區(qū)別

Mysql5.7版本更新后有很多變化,比如json等,連安裝都有變化,他安裝必須要BOOST庫。mysql的官網(wǎng)源碼有帶boost庫的源碼和不帶boost庫的源碼兩種,不帶boost庫源碼的需要單獨安裝boost。

mysql5.7 支持多主一從 ,做高可用方式不同

下載軟件

wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.20.tar.gz

帶boost的mysql源碼安裝

1.安裝依賴包

yum -y install make gcc-c++ cmake bison-devel  ncurses-devel   bison perl perl-devel  perl perl-devel

2.編譯安裝

cd /usr/local/mysql-5.7.20/
cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
make
make install

不帶boost的mysql源碼安裝

1.安裝依賴包

yum -y install gcc gcc-c++ ncurses ncurses-devel cmake

2.編譯安裝

cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.7.20 \
-DMYSQL_DATADIR=/application/mysql-5.7.20/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.7.20/tmp/mysql.sock \
#開啟BOOST庫
-DDOWNLOAD_BOOST=1 \
#指定boost庫位置
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0 
make
make install

二、初識化時的區(qū)別

#【5.6版本初識化】
cd /usr/local/mysql/scripts/
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#【5.7版本初識化】這種初始化方式,默認密碼在一個文件中
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

–initialize 生成一個隨機密碼寫到一個文件

–initialize-insecure 不生成隨機密碼

三、功能和特性的區(qū)別

安全性

用戶表 mysql.user 的 plugin字段不允許為空, 默認值是mysql_native_password,而不是 mysql_old_password,不再支持舊密碼格式;

增加密碼過期機制,過期后需要修改密碼,否則可能會被禁用,或者進入沙箱模式;

增加密碼過期機制,過期后需要修改密碼,否則可能會被禁用,或者進入沙箱模式;

提供了更為簡單SSL安全訪問配置,并且默認連接就采用SSL的加密方式。

靈活性

MySQL數(shù)據(jù)庫從5.7.8版本開始,也提供了對JSON的支持。

可以混合存儲結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),同時擁有關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫的優(yōu)點

能夠提供完整的事務支持

generated column是MySQL 5.7引入的新特性,所謂generated column,就是數(shù)據(jù)庫中這一列由其他列計算而得

易用性

在MySQL 5.7 之前,如果用戶輸入了錯誤的SQL語句,按下 ctrl+c ,雖然能夠”結(jié)束”SQL語句的運行,但是,也會退出當前會話,MySQL 5.7對這一違反直覺的地方進行了改進,不再退出會話。

MySQL 5.7可以explain一個正在運行的SQL,這對于DBA分析運行時間較長的語句將會非常有用。

sys schema是MySQL 5.7.7中引入的一個系統(tǒng)庫,包含了一系列視圖、函數(shù)和存儲過程, 該項目專注于MySQL的易用性。

可用性

在線設置 復制的過濾規(guī)則 不再需要重啟MySQL,只需要停止SQLthread,修改完成以后,啟動SQLthread。

在線修改buffer pool的大小。

Online DDL MySQL 5.7支持重命名索引和修改varchar的大小,這兩項操作在之前的版本中,都需要重建索引或表。

在線開啟GTID ,在之前的版本中,由于不支持在線開啟GTID,用戶如果希望將低版本的數(shù)據(jù)庫升級到支持GTID的數(shù)據(jù)庫版本,需要先關閉數(shù)據(jù)庫,再以GTID模式啟動,所以導致升級起來特別麻煩。

性能

臨時表的性能改進。

臨時表只在當前會話中可見

臨時表的生命周期是當前連接(MySQL宕機或重啟,則當前連接結(jié)束)

只讀事務性能改進。

MySQL 5.7通過 避免為只讀事務分配事務ID ,不為只讀事務分配回滾段,減少鎖競爭等多種方式,優(yōu)化了只讀事務的開銷,提高了數(shù)據(jù)庫的整體性能。

-加速連接處理

在MySQL 5.7之前,變量的初始化操作(THD、VIO)都是在連接接收線程里面完成的,現(xiàn)在將這些工作下發(fā)給工作線程,以減少連接接收線程的工作量,提高連接的處理速度。這個優(yōu)化對那些頻繁建立短連接的應用,將會非常有用。

復制性能的改進 (支持多線程復制(Multi-Threaded Slaves, 簡稱MTS)

MySQL的默認配置是庫級別的并行復制,為了充分發(fā)揮MySQL 5.7的并行復制的功能,我們需要將slave-parallel-type配置成LOGICAL_CLOCK。

支持多源復制(Multi-source replication)

嚴格性改變

默認啟用 STRICT_TRANS_TABLES 模式。

對 ONLY_FULL_GROUP_BY 模式實現(xiàn)了更復雜的特性支持,并且也被默認啟用。

其他被默認啟用的sql mode還有 NO_ENGINE_SUBSTITUTION。

默認參數(shù)的改變

默認binlog格式調(diào)整為ROW格式

默認binlog錯誤后的操作調(diào)整為ABORT_SERVER

在先前的選項下(binlog_error_action=IGNORE_ERROR),如果一個錯誤發(fā)生,導致無法寫入binlog,mysql-server會在錯誤日志中記錄錯誤并強制關閉binlog功能。這會使mysql-server在不記錄binlog的模式下繼續(xù)運行,導致從庫無法繼續(xù)獲取到主庫的binlog。

默認開啟mysql崩潰時的binlog安全。

默認調(diào)低slave_net_timeout。

安裝不同

mysql_install_db已經(jīng)不再推薦使用了,建議改成mysqld --initialize 完成實例初始化。如果 datadir 指向的目標目錄下已經(jīng)有數(shù)據(jù)文件,則會有[ERROR] Aborting;

在初始化時如果加上 --initial-insecure,則會創(chuàng)建空密碼的 root@localhost 賬號,否則會創(chuàng)建帶密碼的 root@localhost 賬號,密碼直接寫在 log-error 日志文件中;新用戶登入后需要立刻修改密碼,否則無法繼續(xù)后續(xù)的工作。

以上就是“mysql中5.6與5.7有哪些區(qū)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI