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