一.简介
MySQL InnoDB Cluster提供了一个集成的,本地的,HA解决方案,由以下几部分组成:
MySQL Servers with Group Replication:向集群的所有成员复制数据,同时提供容错、自动故障转移和弹性。 MySQL Router:确保客户端请求是负载平衡的,并在任何数据库故障时路由到正确的服务器。 MySQL Shell:通过内置的管理API创建及管理Innodb集群。
各个组件的关系如下图所示:
每台服务器实例都运行MySQL Group Replication (冗余复制机制,内置failover) MGR有两种模式,一种是Single-Primary,一种是Multi-Primary,即单主或者多主。
注意:模式Multi-Primary中,所有的节点都是主节点,都可以同时被读写,看上去这似乎更好,但是因为多主的复杂性,在功能上如果设置了多主模式,则会有一些使用的限制,比如不支持Foreign Keys with Cascading Constraints。
二.环境声明
环境: ubuntu 16.4 mysql-5.7 多主模式
机器: 192.168.1.1 mysql-1 192.168.1.2 mysql-2 192.168.1.3 mysql-3
三.部署
安装(均操作)
1.下载deb
wget https://repo.mysql.com//mysql-apt-config_0.8.10-1_all.deb
按第一个,然后根据需要选择版本,这里选择mysql-5.7,选择后他会返回到第一页,这时候选择ok即可,会发现第一个的参数变成了5.7了
dpkg -i mysql-apt-config_0.8.10-1_all.deb
更新源
apt-get update
2.安装MySQL及组件,不要加-y,其中会弹出一个mysql设置密码的框,填写即可
apt-get install mysql-server mysql-shell mysql-router
3.添加MySQL用户和权限,默认安装完mysql就是启动的,账号密码根据情况设置,每个节点要一致,可以将root改为其它用户。
mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'password';
GRANT ALL PRIVILEGES ON mysql_innodb_cluster_metadata.* TO root@'%' WITH GRANT OPTION;
GRANT RELOAD,SHUTDOWN,PROCESS,FILE, SUPER,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO root@'%' WITH GRANT OPTION;
GRANT SELECT ON *.* TO root@'%' WITH GRANT OPTION;
4.修改/etc/hosts
vim /etc/hosts
192.168.1.1 mysql-1
192.168.1.2 mysql-2
192.168.1.3 mysql-3