<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 服務功能增強 * 數據庫初始化方式變更 * 支持為表增加計算列 * 引入json列類型及相關函數 ## 初始化方式的變更 注意各人路徑有些不同 mysql5.7之前 ~~~ scripts/mysql_install_db \ --datadir=/data/sql_data \ --user=mysql --basedir=/home/mysql ~~~ --- mysql5.7之后 ~~~ bin/mysqld --initialize --user=mysql \ --basedir=/home/mysql \ --datadir=/home/mysql/data ~~~ 初始化后會提供個root用戶的默認密碼,我們要記錄下來 我們要改變密碼后才可對數據庫操作,這也是mysql對安全方面加強 ## 支持為表增加計算列 當一個表的某個列是其他列計算而來的列叫計算列 mysql5.7之前要靠觸發器來實現 **而且要寫更新觸發器和插入觸發器,因為他的數據要隨著其他列改變而改變** 視圖也可以達到相同效果 --- mysql5.7之后 在create table及alter tablel語句中支持增加計算列的方式 ~~~ col_name data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [UNIQUE [KEY]] [COMMENT comment] [[NOT] NULL] [[PRIMARY] KEY] ~~~ 比如創建 ~~~ create table t ( id int(11) not null auto_increment, c1 int(11) default null, c2 int(11) default null, c3 int(11) GENERATED ALWAYS AS (c1+c2) VIRTUAL, primary key (id) )engine=innodb default charset=utf8 ~~~ ## 引入json列類型及相關函數 mysql5.7之前 只能在varchar或text等字符類型的列中存儲json類型的字符串,并通過程序解析使用json字符串 mysql5.7之后 增加了json列類型及json_開頭的相關處理函數,如json_type(), json_object(), json_merge()等 比如我們要創建個數組轉為json ~~~ select json_array('a','b',now()); ~~~ 比如json對象 ~~~ select json_object('key1',1,'key2',2); ~~~ 比如建表 ~~~ create table t1(jdoc json); insert into t (jdoc) values (json_array('a','b',now())); ~~~ # Replication相關增強 * 支持多源復制 * 基于庫或是邏輯鎖的多線程復制 * 在線變更復制方式 ## 支持多源復制 mysql5.7之前的一主多從 ![](https://box.kancloud.cn/afea98bfe13373f85b884bdbcc8bc59f_1662x722.jpg) 可以分擔主服務器的負載,可以在遠距離分發數據,如果我們想要多個主或是在主上進行數據庫的合并,在mysql5.7之前是無法完成的,除非是有一些第三方的插件 mysql5.7支持多源復制 ![](https://box.kancloud.cn/7154ec77a8d3559cbeaad1096e02af91_2543x963.jpg) 比如把訂單表分布上不同的主服務器上 這樣可以在從服務器上進行數據的匯總 他是走channel實現的,不同的channel走不同的復制鏈路 ## 基于表的多線程復制 mysql5.7之前 從mysql5.6開始支持多線程復制,只不過是對于每一個庫一個復制線程,對于一些庫的讀寫非常頻繁,這樣多線程的復制是沒有什么用的,有時反而比單線程慢 mysql5.7之后 mysql5.7后對多線程復制功能進行了加強,增加了slave_parallel_type參數可以控制并發同步是基于database還是logical_clock(邏輯鎖) 基于邏輯鎖,比如在主上執行事務的時候,給這個事務加上時間戳,從上根據時間戳并行的執行事務,這樣就大大的降低延遲復制 ## 在線變更復制方式 mysql5.7之前 要把基于日志點的復制方式變為基于gtid的復制方式或是把基于日志點的復制方式必須要重啟master服務器 gtid復制方式無論在安全方式還是數據一致性方面上都是優于基于日志點的復制方式 mysql5.7之后 允許在線變更復制方式,而不用重啟master服務器 --- 在線變更復制方式有7步 ![](https://box.kancloud.cn/5e9092f1ede23b8ba7a06917a20d676b_2314x904.jpg) 第一步有警告就處理警告 # Innodb引擎增強 * 支持緩沖池大小在線變更 * 增加innodb_buffer_pool導入導出功能 * 支持為innodb建立表空間 ## 支持緩沖池大小在線變更 mysql5.7之前 要變更innodb_buffer_pool大小必須更改my.cnf文件后重啟數據庫服務器 mysql5.7之后 innodb_buffer_poll_size 參數變為動態參數,可以在線調整innodb緩存池大小 我們查看innodb_buffer的相關參數 ~~~ mysql> show variables like 'innodb_buffer%'; +-------------------------------------+----------------+ | Variable_name | Value | +-------------------------------------+----------------+ | innodb_buffer_pool_chunk_size | 134217728 | | innodb_buffer_pool_dump_at_shutdown | ON | | innodb_buffer_pool_dump_now | OFF | | innodb_buffer_pool_dump_pct | 25 | | innodb_buffer_pool_filename | ib_buffer_pool | | innodb_buffer_pool_instances | 1 | | innodb_buffer_pool_load_abort | OFF | | innodb_buffer_pool_load_at_startup | ON | | innodb_buffer_pool_load_now | OFF | | innodb_buffer_pool_size | 134217728 | +-------------------------------------+----------------+ ~~~ 他大小調整是以chunk為單位的,每次調整都是一個chunk大小 ~~~ mysql> select 134217728/(1024*1024); +-----------------------+ | 134217728/(1024*1024) | +-----------------------+ | 128.0000 | +-----------------------+ 1 row in set (0.00 sec) ~~~ 如果我們定義這個 innodb_buffer_pool_instances ,我們就要用chunk的大小乘以這個倍數來調整 所以大小調整的范圍是 ~~~ mysql> select 128*1; +-------+ | 128*1 | +-------+ | 128 | +-------+ 1 row in set (0.00 sec) ~~~ 如果設置的不是這個倍數,他也會自動調整為這個倍數 ## 增加innodb_buffer_pool導入導出功能 ![](https://box.kancloud.cn/91e52ae6350b5eb00c4787570d140a37_1450x496.jpg) ~~~ mysql> show variables like 'innodb_buffer_pool%'; +-------------------------------------+----------------+ | Variable_name | Value | +-------------------------------------+----------------+ | innodb_buffer_pool_chunk_size | 134217728 | | innodb_buffer_pool_dump_at_shutdown | ON | | innodb_buffer_pool_dump_now | OFF | | innodb_buffer_pool_dump_pct | 25 | | innodb_buffer_pool_filename | ib_buffer_pool | | innodb_buffer_pool_instances | 1 | | innodb_buffer_pool_load_abort | OFF | | innodb_buffer_pool_load_at_startup | ON | | innodb_buffer_pool_load_now | OFF | | innodb_buffer_pool_size | 134217728 | +-------------------------------------+----------------+ ~~~ innodb_buffer_pool_dump_at_shutdown innodb_buffer_pool_load_at_startup 這2個參數決定了宕機的時候需要導入和導出參數 innodb_buffer_pool_dump_pct 決定了導出導入緩沖池的百分比,默認25%導入到磁盤 innodb_buffer_pool_filename 決定了導出的文件名 innodb_buffer_pool_dump_now把這個設為on就開始導出了 ## 支持為innodb建立表空間 mysql5.7之前 具有系統表空間以及可以為每個表建立一個獨立表空間 mysql5.7之后 支持create tablespace 語法為一個表或多個表建立共用的表空間 ~~~ create tablespace ts1 add datafile 'ts1.ibd' engine=innodb; ~~~ 這樣就建立好了一個ts1的表空間 ~~~ create table t2(c1 int primary key) tablespace ts1; ~~~ 這樣就創建了一個公共表空間 使用公共表空間 優點: 和系統表類似,能被一個表和多個表 比獨立使用的表更節約內存 文件可以不放在數據目錄下 缺點: 不能使用drop table對表空間進行回收 空間不容易回收 # 安全管理方面的增強 * 不再支持old_password認證 * 增加賬號默認過期時間 * 加強了對賬號的管理 * 增加sys對數據庫管理 刪除了匿名賬戶 ~~~ mysql> show variables like 'default_password_lifetime'; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | default_password_lifetime | 0 | +---------------------------+-------+ ~~~ 查看賬號默認過期時間,0是關閉,有些賬號默認是360就是默認360天過期,在這天數里面不改密碼,過了這天數就不能連接了 --- 創建用戶的時候可以增加用戶過期時間和密碼加密方式 ![](https://box.kancloud.cn/3353552a16fea39a1d5fc6e5180d4c60_2212x376.jpg) 我們也可以對用戶進行鎖定 ~~~ select * from mysql.user \G; ~~~ 會在最下面看到account_locked這個表示賬號是否被鎖定,修改這個值可以讓賬號鎖定 有時候一些賬號測試sql注入,我們可以對這個賬號進行鎖定 --- mysql5.7之后建議不要關閉performance_shcmea這個庫,mysql5.7之前有些場景我們會關閉,5.7之后就不要這樣了 一些全局變量以前是在informatiion_schema這個里面,5.7是在performance_shcmea
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看