一、編譯安裝區別
- 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 日志文件中;新用戶登入后需要立刻修改密碼,否則無法繼續后續的工作。