2017年4月12日,Oracle官方推出的的一套完整的的高可用解决方案Innodb Cluster,完全是原生的高可用。MySQL所有的高可用,包括集群,全部是Sharing nothing,这也是和Oracle数据库很明显的一个区别。主要包含了三个组件:
1.Group Replication(5.7以上才有)
Group Replication 可以把数据同步到集群内的所有成员中,并支持自动故障转移、灵活扩展等重要特性。
2.MySQL Shell
通过内置的AdminAPI来创建和管理整个InnoDB Cluster
3.MySQL Router
缓存InnoDB cluster的元数据,负责把客户端Read/Write请求路由到当前的主数据库节点。还可以对来自客户端的请求进行负载均衡,并且还能在主数据库节点出现故障时,保证客户端的请求被路由到新的主服务器节点。
软件下载链接
https://dev.MySQL.com/downloads/MySQL/
https://dev.MySQL.com/downloads/Shell/
https://dev.MySQL.com/downloads/router/
通过Sandbox部署实验环境
如果是新手,可以通过Sandbox的方式来做实验,下图是windows上部署时的图片
也可以通过docker来实现,更多详情请参考链接https://github.com/mattlord/Docker-InnoDB-Cluster
在生产环境上,要考虑高可用
node01、02、03上安装好MySQL(最多支持九个节点的集群)和MySQL Shellnode04、05 上安装 MySQL Shell和MySQL Router
在node01上创建集群
先配置好MySQL并启动,然后通 node01上的MySQL Shell连接node01的MySQL,执行配置命令dba.configureLocalInstance();
再通过node04的MySQL Shell连接node01 的 MySQL,执行创建集群的命令dba.createCluster()
添加节点到集群中
集群创建起来后,接下来就可以添加节点了。配置node02和node03上的MySQL并启动,然后使用各自的MySQL Shell通过dba.configureLocalInstance()对其进行配置,最后通过node04 的MySQL Shell 执行添加实例的命令cluster.addInstance()把 node02和node03添加到集群中。
最后使用MySQL Router连接集群
集群搭建完成后,把node04上的MySQL Router启动起来,并连接到集群。在这个里面MySQL Route这个是单点,我们可以再配置一台实现HA。最后应用就可以通过MySQL Route对数据库进行操作了。Reference
http://mysqlserverteam.com/mysql-innodb-cluster-ga/
https://mysqlserverteam.com/mysql-innodb-cluster-setting-up-a-real-world-cluster/
http://mysqlserverteam.com/mysql-innodb-cluster-a-hands-on-tutorial/
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysql-innodb-cluster-working-with-cluster.html
http://datacharmer.org/
https://datacharmer.blogspot.com/2017/05/getting-to-know-mysql-innodb-cluster.html
http://datacharmer.blogspot.com/2017/05/how-to-break-mysql-innodb-cluster.html
https://dev.MySQL.com/doc/refman/8.0/en/MySQL-innodb-cluster-userguide.html
https://dev.MySQL.com/doc/refman/8.0/en/MySQL-innodb-cluster-creating.htmlhttps://dev.MySQL.com/doc/refman/8.0/en/MySQL-innodb-cluster-using-router.html
https://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster-sandbox-deployment.html
https://www.oracle.com/MySQL/enterprise/