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版本初識化】這種初始化方式,默認(rèn)密碼在一個文件中 /usr/local/mysql/bin/mysqld?--initialize?--user=mysql?--basedir=/usr/local/mysql?--datadir=/usr/local/mysql/data
–initialize?生成一個隨機密碼寫到一個文件
–initialize-insecure?不生成隨機密碼
三、功能和特性的區(qū)別
安全性
用戶表?mysql.user?的?plugin字段不允許為空,?默認(rèn)值是mysql_native_password,而不是?mysql_old_password,不再支持舊密碼格式;
增加密碼過期機制,過期后需要修改密碼,否則可能會被禁用,或者進入沙箱模式;
增加密碼過期機制,過期后需要修改密碼,否則可能會被禁用,或者進入沙箱模式;
提供了更為簡單SSL安全訪問配置,并且默認(rèn)連接就采用SSL的加密方式。
靈活性
MySQL數(shù)據(jù)庫從5.7.8版本開始,也提供了對JSON的支持。
可以混合存儲結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),同時擁有關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的優(yōu)點
能夠提供完整的事務(wù)支持
generated?column是MySQL?5.7引入的新特性,所謂generated?column,就是數(shù)據(jù)庫中這一列由其他列計算而得
易用性
在MySQL?5.7?之前,如果用戶輸入了錯誤的SQL語句,按下?ctrl+c?,雖然能夠”結(jié)束”SQL語句的運行,但是,也會退出當(dāng)前會話,MySQL?5.7對這一違反直覺的地方進行了改進,不再退出會話。
MySQL?5.7可以explain一個正在運行的SQL,這對于dba分析運行時間較長的語句將會非常有用。
sys?schema是MySQL?5.7.7中引入的一個系統(tǒng)庫,包含了一系列視圖、函數(shù)和存儲過程,?該項目專注于MySQL的易用性。
可用性
在線設(shè)置?復(fù)制的過濾規(guī)則?不再需要重啟MySQL,只需要停止SQLthread,修改完成以后,啟動SQLthread。
在線修改buffer?pool的大小。
Online?DDL?MySQL?5.7支持重命名索引和修改varchar的大小,這兩項操作在之前的版本中,都需要重建索引或表。
在線開啟GTID?,在之前的版本中,由于不支持在線開啟GTID,用戶如果希望將低版本的數(shù)據(jù)庫升級到支持GTID的數(shù)據(jù)庫版本,需要先關(guān)閉數(shù)據(jù)庫,再以GTID模式啟動,所以導(dǎo)致升級起來特別麻煩。
性能
臨時表的性能改進。
臨時表只在當(dāng)前會話中可見
臨時表的生命周期是當(dāng)前連接(MySQL宕機或重啟,則當(dāng)前連接結(jié)束)
只讀事務(wù)性能改進。
MySQL?5.7通過?避免為只讀事務(wù)分配事務(wù)ID?,不為只讀事務(wù)分配回滾段,減少鎖競爭等多種方式,優(yōu)化了只讀事務(wù)的開銷,提高了數(shù)據(jù)庫的整體性能。
-加速連接處理
在MySQL?5.7之前,變量的初始化操作(THD、VIO)都是在連接接收線程里面完成的,現(xiàn)在將這些工作下發(fā)給工作線程,以減少連接接收線程的工作量,提高連接的處理速度。這個優(yōu)化對那些頻繁建立短連接的應(yīng)用,將會非常有用。
復(fù)制性能的改進?(支持多線程復(fù)制(Multi-Threaded?Slaves,?簡稱MTS)
MySQL的默認(rèn)配置是庫級別的并行復(fù)制,為了充分發(fā)揮MySQL?5.7的并行復(fù)制的功能,我們需要將slave-parallel-type配置成LOGICAL_CLOCK。
支持多源復(fù)制(Multi-source?replication)
嚴(yán)格性改變
默認(rèn)啟用?STRICT_TRANS_TABLES?模式。
對?ONLY_FULL_GROUP_BY?模式實現(xiàn)了更復(fù)雜的特性支持,并且也被默認(rèn)啟用。
其他被默認(rèn)啟用的sql?mode還有?NO_ENGINE_SUBSTITUTION。
默認(rèn)參數(shù)的改變
默認(rèn)binlog格式調(diào)整為ROW格式
默認(rèn)binlog錯誤后的操作調(diào)整為ABORT_SERVER
在先前的選項下(binlog_Error_action=IGNORE_ERROR),如果一個錯誤發(fā)生,導(dǎo)致無法寫入binlog,mysql-server會在錯誤日志中記錄錯誤并強制關(guān)閉binlog功能。這會使mysql-server在不記錄binlog的模式下繼續(xù)運行,導(dǎo)致從庫無法繼續(xù)獲取到主庫的binlog。
默認(rèn)開啟mysql崩潰時的binlog安全。
默認(rèn)調(diào)低slave_net_timeout。
安裝不同
mysql_install_db已經(jīng)不再推薦使用了,建議改成mysqld?–initialize?完成實例初始化。如果?datadir?指向的目標(biāo)目錄下已經(jīng)有數(shù)據(jù)文件,則會有[ERROR]?Aborting;
在初始化時如果加上?–initial-insecure,則會創(chuàng)建空密碼的?root@localhost?賬號,否則會創(chuàng)建帶密碼的?root@localhost?賬號,密碼直接寫在?log-error?日志文件中;新用戶登入后需要立刻修改密碼,否則無法繼續(xù)后續(xù)的工作。
推薦學(xué)習(xí):mysql視頻教程