mysql中5.6與5.7的區別:1、5.7版本提供了json格式數據,而5.6版本沒有提供json版本數據;2、5.7版本支援多主一從,而5.6版本不支援多主一從;3、5.7版本初始化資料時在bin目錄下,而5.6版本在script目錄。
本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
Mysql5.7版本更新後有很多變化,像是json等,連安裝都有變化,他安裝必須要BOOST函式庫。 mysql的官網源碼有帶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
#【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 不產生隨機密碼
安全性
使用者表 mysql.user 的 plugin欄位不允許為空, 預設值為mysql_native_password,而非 mysql_old_password,不再支援舊密碼格式;
增加密碼過期機制,過期後需要修改密碼,否則可能會停用,或進入沙箱模式;
增加密碼過期機制,過期後需要修改密碼,否則可能會被停用,或進入沙箱模式;
提供了更為簡單SSL安全存取配置,並且預設連線就採用SSL的加密方式。
靈活性
MySQL資料庫從5.7.8版本開始,也提供了對JSON的支援。
可以混合儲存結構化資料和非結構化數據,同時擁有關聯式資料庫和非關係型資料庫的優點
能夠提供完整的事務支援
generated column是MySQL 5.7引入的新特性,所謂generated column,就是資料庫中這一列由其他列計算而得
易用性
##在MySQL 5.7 之前,如果使用者輸入了錯誤的SQL語句,按下 ctrl c ,雖然能夠」結束」SQL語句的運行,但是,也會退出當前會話,MySQL 5.7對這違反直覺的地方進行了改進,不再退出會話。 MySQL 5.7可以explain一個正在執行的SQL,這對於DBA分析運行時間較長的語句將會非常有用。 sys schema是MySQL 5.7.7中引入的系統函式庫,包含了一系列視圖、函數和預存過程, 該專案專注於MySQL的易用性。可用性
線上設定 複製的篩選規則 不再需要重新啟動MySQL,只需停止SQLthread,並修改完成以後,啟動SQLthread。 線上修改buffer pool的大小。 Online DDL MySQL 5.7支援重新命名索引和修改varchar的大小,這兩個動作在先前的版本中,都需要重建索引或表格。 在線上開啟GTID ,在先前的版本中,由於不支援線上開啟GTID,使用者若希望將低版的資料庫升級至支援GTID的資料庫版本,則需要先關閉資料庫,再以GTID模式啟動,所以導致升級起來特別麻煩。效能
臨時表的效能改進。 臨時表只在目前會話中可見臨時表的生命週期是目前連線(MySQL宕機或重啟,則目前連線結束)只讀交易效能改進。 MySQL 5.7透過 避免為唯讀事務分配事務ID ,不為唯讀事務分配回滾段,減少鎖定競爭等多種方式,優化了只讀事務的開銷,提高了資料庫的整體效能。 -加速連線處理在MySQL 5.7之前,變數的初始化操作(THD、VIO)都是在連線接收執行緒裡面完成的,現在將這些工作下發給工作線程,以減少連線接收執行緒的工作量,提高連線的處理速度。這個優化對那些頻繁建立短連接的應用,將會非常有用。 複製效能的改進 (支援多執行緒複製(Multi-Threaded Slaves, 簡稱MTS)MySQL的預設設定是函式庫層級的平行複製,為了充分發揮MySQL 5.7的並行複製的功能,我們需要將slave-parallel-type配置成LOGICAL_CLOCK。支援多來源複製(Multi-source replication)##嚴格性改變預設啟用 STRICT_TRANS_TABLES 模式。
對 ONLY_FULL_GROUP_BY 模式實現了更複雜的特性支持,並且也被預設啟用。
其他預設啟用的sql mode還有 NO_ENGINE_SUBSTITUTION。
##預設參數的改變預設binlog格式調整為ROW格式 預設binlog錯誤後的操作調整為ABORT_SERVER 在先前的選項下(binlog_error_action=IGNORE_ERROR),如果一個錯誤發生,導致無法寫入binlog,mysql-server會在錯誤日誌中記錄錯誤並強制關閉binlog功能。這會使mysql-server在不記錄binlog的模式下繼續運行,導致從庫無法繼續取得到主庫的binlog。 預設開啟mysql崩潰時的binlog安全。 預設調低slave_net_timeout。 安裝不同 mysql_install_db已經不再建議使用了,建議改成mysqld --initialize 完成實例初始化。如果 datadir 指向的目標目錄下已經有資料文件,則會有[ERROR] Aborting; 在初始化時如果加上 --initial-insecure,則會建立空密碼的 root@localhost 帳號,否則會建立有密碼的 root@localhost 帳號,密碼直接寫在 log-error 日誌檔案中;新使用者登入後需要立即修改密碼,否則無法繼續後續的工作。 推薦學習:mysql影片教學
以上是mysql中5.6與5.7有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!