mysql5.7新特性

一、MySQL服務功能增強
1.數據庫初始化方式變更
mysql 5.7之前通過初始化腳本初始化:
scripts/mysql_install_db --user=mysql\
--datadir=/var/lib/mysql \
--socket=/var/lib/mysql/mysql.sock \
 --pid-file=/var/run/mysqld/mysqld.pid \
 --basedir=/usr 
mysql之後:
bin/mysqld --initialize --user=mysql \
--datadir=/var/lib/mysql \
--socket=/var/lib/mysql/mysql.sock \
 --pid-file=/var/run/mysqld/mysqld.pid \
 --basedir=/usr
安裝後,通過service mysqld start 啓動服務,會自動初始化

執行初始化腳本,日誌:


會生成一個root的默認密碼:=1l3cehiMfRe
需要使用該密碼登錄後,修改root密碼,再以前版本初始化數據庫後root密碼是空的。
初始化後,數據目錄:

初始化後使用,使用如下命令啓動:
nohup mysqld_safe  –defaults-file=/etc/my.cnf &
2,爲表增加計算列
mysql 5.7之前需要通過觸發器實現,如表t_temp(a int , b int ,c int ),其中c存儲爲a+b之和,當然通過視圖的方式可以實現。
mysql 5.7之後,通過計算列實現
在create table 或 alter table 語句增加計算列
col_name data_type[generated always] as (experssion) [virtual | stored] [unique [key]] [comment comment] [[not] null] [[primary] key]
如:
create table t (id int auto_increment not null, c1 int,c2 int,c3 int as (c1+c2), primary key(id))
3,引入json列數據類型及相關函數
mysql 5.7之前,如果存儲json類型(json對象和json數組),只能存儲在varchar和text等字符類型的列中存儲,並通過存儲進行解析json字符串。
mysql 5.7之後,增加json列類型,以及json開頭的相關處理函數,如:
json_type
json_object 轉換爲json對象 json_object('name','tom','age',20)-->{"name":"tom","age":20}
json_merge
json_array  轉換爲json數組  json_array('a','b',now()) -->["a","b","2016-05-06 10:00:01.000000"]
4,內建中文全文索引
二、.Replication相關增強
1,支持多源複製   
 可以分表之後彙總
2,基於庫或邏輯鎖多線程複製
mysql5.6 開始支持多線程複製,但是針對每一個庫一個線程複製
mysql5.7後對多線程複製功能進行了加強,增加slave_parallel_type參數可以控制併發同步是基於database還是logical_clock
3,在線變更復制方式
mysql5.7之前,要把基於日誌點的複製方式改爲基於gtid的複製方式,或者把基於gtid的複製方式改爲基於日誌點的複製方式,必須要重啓master服務
mysql5.7之後,允許在線變更復制方式,而無需重啓master服務
在線變更步驟:
在slave服務器上
(1) SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=WARN
執行完後要保證再所有服務器都沒有警告發送
(2) SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON
(3) SET @@GLOBAL.GTID_MODE=OFF_PERMISSIVE
(4) SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE
(5) SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
(6) SET @@GLOBAL.GTID_MODE =ON;並加gtid-mode=on到my.cnf
(7) STOP SLAVE [FOR CHANNEL 'channel'];
    CHANGE MASTER TO MASTER_AUTO_POSITION=1 [FOR CHANNEL 'channel'];
    START SLAVE [FOR CHANNEL 'channel'];
三、 InnoDB引擎增強
1.支持緩池區大小在線變更
之前需要修改配置文件my.cnf ,innodb_buffer_pool大小重新啓動服務器
mysql5.7之後可以在線調整innodb_buffer_pool參數大小

innodb_buffer_pool_size 緩區大小
innodb_buffer_pool_chunk_size 緩區塊的大小  默認128M
innodb_buffer_pool_instances 緩區實例的個數
innodb_buffer_pool_size  必須是innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances倍數,如果不是mysql也會自動取整爲倍數。
修改緩衝的大小,會對運行的事務有影響,儘量下少操作的情況下修改。
2.增加innodb_buffer_pool導入導出功能
增加如下參數控制innodb_buffer_pool的導入導出:
innodb_buffer_pool_filename  如果開啓InnoDB預熱功能,停止MySQL服務時,MySQL將InnoDB緩衝池中的熱數據保存到數據庫根目錄中,默認文件名爲ib_buffer_pool.
innodb_buffer_pool_dump_pct     導出緩存池的百分比 默認25%
innodb_buffer_pool_dump_now  用手工方式立刻做一次把熱數據dump到本地磁盤。
innodb_buffer_pool_dump_at_shutdown  默認爲關閉OFF。如果開啓該參數,正常停止MySQL服務時,InnoDB將InnoDB緩衝池中的熱數據保存到本地硬盤。
innodb_buffer_pool_load_now 默認爲關閉OFF。如果開啓該參數,停止MySQL服務時,以手動方式立刻做一次將InnoDB緩存池中的熱數據保存到本地硬盤。
innodb_buffer_pool_load_abort 默認爲關閉OFF。如果開啓該參數,即便開啓InnoDB預熱功能,啓動MySQL服務時,MySQL也不會將本地硬盤的熱數據加載到InnoDB緩衝池中。
innodb_buffer_pool_load_at_startup  默認爲關閉OFF。如果開啓該參數,啓動MySQL服務時,MySQL將本地熱數據加載到InnoDB緩衝池中。
3.支持爲innodb表建立表空間
mysql5.7之前,具有系統表空間以及可以爲每個表建一個獨立的表空間。
mysql5.7之後,支持create tablespace 爲一個或多個表建立公用的表空間
create tablespace  ts1 add datafile 'ts1.ibd' engine=innodb;
即會在數據庫數據目錄下建立ts1.ibd表空間
使用表空間
在創建表的時候指定 表空間  create table t1 (....) tablespace ts1;
show create table t1; //顯示錶結構
使用公用表空間優點:節約內存,可以將表空間文件放在ssd磁盤,提高速度。
缺點:和系統表空間一樣,不利於磁盤空間回收,即便刪除表,也不會釋放。
四、安全及管理方面增強
1.不再支持old_password認證
             plugin: mysql_native_password
 authentication_string: *6691484EA6B50DDDE1926A220DA01FA9E575C18A
      password_expired: N
 password_last_changed: 2016-05-07 08:04:47
     password_lifetime: NULL
        account_locked: N
2.增加賬戶默認過期時間
通過闡述default_password_lifetime控制,單位天,0 標識關閉

通過語句修改過期時間
ALTER USER 'root'@localhost' PASSWORD EXPIRE INTERVAL 90 DAYS;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE DEFAULT;
3.增強對賬戶的管理功能
查看幫助:help create user;
CREATE USER 'jeffrey'@'localhost'
  IDENTIFIED WITH sha256_password BY 'new_password'
  PASSWORD EXPIRE INTERVAL 180 DAY;
指定密碼過期時間和加密方式
4.增加sys管理數據庫表
創建多張視圖,方便管理員維護管理,真實數據源來源:performance_schema
再mysql5.7以後不能關閉 performance_schema庫,如
global_status、global_variables全局參數也遷移到其中(以前位於information_schema)。

發佈了404 篇原創文章 · 獲贊 205 · 訪問量 227萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章