mysql 5.6 中的新特性:


1.gtid复制:在一主多从的架构中,当主服务器挂掉之后,需要从其他的从服务器中选出一台作为新的主服务器,

一台从服务器成为新的主服务器之后,其他的从服务器需要连接新的主服务器,从新的主服务器中获得数据。

在普通的复制架构中,从服务器连接新主服务器无法找到复制位置(mmm,mha架构除外),因此只能重新做主从,

这个操作是相当痛苦的和耗时的。gtid复制可以很好的解决这个问题,从服务器链接新的主服务器的时候,

不需要人为指定复制位置,这个mysql自动完成。

详情请见:http://dwchaoyue.blog.51cto.com/2826417/1559764


2.多线程复制:

MySQL 5.6之前的版本,同步复制是单线程的,队列的,只能一个一个执行,

在5.6里,可以做到多个库之间的多线程复制,例如数据库里,存放着用户表,商品表,价格表,订单表,那么将每个业务表单独放在一个库里,

这时就可以做到多线程复制,但一个库里的表,多线程复制是无效的。

注,每个数据库仅能使用一个线程,复制涉及到多个数据库时多线程复制才有意义。


mysql> show global  variables  like  'slave_pa%';

+------------------------+-------+

| Variable_name          | Value |

+------------------------+-------+

| slave_parallel_workers | 2     |

+------------------------+-------+

这里显示的两个sql线程,一般情况下,在复制架构中有几个库,就将slave_parallel_workers 设置为多少。

使每个库各自对应一个库。


3.缓存预热:在机器刚开始开启的一段时间内,内存基本上是空的,没人任何的数据,

所以在启动之后的一段时间内,机器显得很慢。mysql 5.6 专门针对innodb设计了一种

缓存预热机制。这个可以通过变量进行设置:

mysql> show global  variables  like  'innodb_buffer_pool_%at%';

+-------------------------------------+-------+

| Variable_name                       | Value |

+-------------------------------------+-------+

| innodb_buffer_pool_dump_at_shutdown | OFF   |

| innodb_buffer_pool_load_at_startup  | OFF   |

+-------------------------------------+-------+


参数解释:

innodb_buffer_pool_dump_at_shutdown:当机器正常关闭的时候讲内存中的数据dump到磁盘上

并且默认生成一个缓存文件 ib_buffer_pool

innodb_buffer_pool_load_at_startup:当机器启动的时候将ib_buffer_pool 中的数据加载到内存中。

http://qdjalone.blog.51cto.com/1222376/1119804



4.mysql5.6之前的版本不支持now()作为默认值

例如:

version:5.1.34-log 

mysql> use  tempDB  ;

Database changed

mysql> select version();

+------------+

| version()  |

+------------+

| 5.1.34-log | 

+------------+

1 row in set (0.00 sec)


mysql> drop table if exists  tt  ;

Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql> CREATE TABLE `tt` (

    ->   `db` char(64) NOT NULL,

    ->    dt  datetime not null  default now()  

    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ERROR 1067 (42000): Invalid default value for 'dt'


versoon:5.6.20-log

mysql> use Test  ;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

mysql> drop table if exists  tt  ;

CREATE TABLE `tt` (

  `db` char(64) NOT NULL,

   dt  datetime not null  default now()  

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Query OK, 0 rows affected, 1 warning (0.05 sec)


mysql> CREATE TABLE `tt` (

    ->   `db` char(64) NOT NULL,

    ->    dt  datetime not null  default now()  

    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Query OK, 0 rows affected (0.16 sec)


mysql> 

mysql> select version();

+------------+

| version()  |

+------------+

| 5.6.20-log |

+------------+

1 row in set (0.03 sec)



mysql5.6 的相关介绍:

http://blog.csdn.net/zuiaituantuan/article/details/8608533