2019/04/28 实现galeracluster

刚才的MHA实现了当主服务器出现故障,自动的换一个从上去,但是,本质上主服务器只有一个,而且当从服务器成功切换到主服务器上去了,用户的调度,调度到新的主服务器上操作,可能还需要自己去完成,所以终究不是一个特别好的解决方案 ,因此这里可以实现一个强大的功能,主主模型,
主主模型本质上是既能读又能写

在这里插入图片描述
可以实现多主,每个数据库既可以读又可以写,但是和oracle的双主又不一样,(不需要共享存储)
每个数据库都有自己的硬盘,相互之间是平级的关系,每个数据库都可以对外提供读和写的操作
目前galera cluster有两个版本,一个是percona
一个是mariadb

在这里插入图片描述
还有一个是mariadb提供的解决方案,由于每个服务器都是主,所以每个服务器都可以均衡负载读写操作
在这里插入图片描述
在这里插入图片描述
**由于每个服务器都可以对外提供读和写,也就可以充分利用,浮点的飘动的VIP(虚拟ip)
**
在这里插入图片描述
当一个主服务器宕机,VIP可以飘动到下一个,但是vip只有一个的话比较浪费,因为每个主机都可以读和写,如果只有一个VIP,意味着只有一个地址可以被互联网用户访问,就需要前端弄一个调度器,调度器接收到用户请求发送到某一台主机上面,
调度的时候就有3个ip,3个ip地址对应的不是真实的ip,是3个虚拟ip

在这里插入图片描述
当一台主机坏了,就可以飘动到别的主机上去,这样用户的请求就均匀的分布在每个主机上面
需要配合keepalived

在这里插入图片描述
在这里插入图片描述
客户端发送update指令,其中某一个galera cluster的集群节点,收到指令以后,要在本地执行这个操作,更改之后会提示用户成功,成功以后,(以事务方式执行)就需要提交,并不会立即让事务生产,而是把刚才操作的过程,同步到其他同一节点的服务器上去,同步过去以后,要在另外的服务器上检查提交过来的内容是否合理,如果是合法的,对本地没有冲突,就认为是提交了,是在本机真实发生的 ,如果发现冲突,就会造成失败,失败以后左边的本机器就会收到通知,也在本地进行验证是否成功,如果成功返回,失败直接撤销,
利用这种机制就可以形成多个节点同时读同时写,底层galera cluster是基于数据块的方式复制的,会把数据库的更新,以数据块的方式一块块读取,传递到其他服务器的节点上去

在这里插入图片描述
在这里插入图片描述
默认mariadb-server是不支持的,需要专门安装支持galera cluster的版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
改成国内的yum源快一点
在这里插入图片描述
在这里插入图片描述
在其他机器上也需要做此配置
在这里插入图片描述
装的包不是mariadb-server,是专门带galera cluster的包
在这里插入图片描述
在这里插入图片描述
为什么要用专门版本的数据库,是因为它用了专门的开发接口,跟原来的不一样,用到了galera的复制库,都需要至少三个节点来实现在这里插入图片描述
在这里插入图片描述
这边写上三台主机的IP地址
在这里插入图片描述
集群名字可以定义,如果不定义就是后面的名字
和一般的mysql数据库有点区别
在这里插入图片描述
init.d/mysql启动脚本不是mysqld了
在这里插入图片描述
在这里插入图片描述
mandatory settings强制设置
optional setting 可选设置
把关键的内容加上就可以有些是可选的,有些是必选的
这个模块不在server包里,在刚才的依赖包

在这里插入图片描述
在这里插入图片描述
这个模块是装在属于galera的包里的
在这里插入图片描述
修改这个三行
在这里插入图片描述
在其他主机上也这么设置
在这里插入图片描述
执行第一个节点,后续的就不要了启动,只需要启动服务就可以
在这里插入图片描述
其他主机启动数据库
在这里插入图片描述
登录数据库查询相关变量
在这里插入图片描述
在这里插入图片描述
3个成员
在这里插入图片描述
现在等于一下,测试是否每个数据库都能写
在这里插入图片描述
创建数据库
在这里插入图片描述
查看是否同步到其他数据库
在这里插入图片描述
测试效率高不高,用函数批量创建试试
在这里插入图片描述
其他数据库在涨
在这里插入图片描述
在这里插入图片描述
两边能否同时改,是否有自动递增的编号冲突问题
在这里插入图片描述
别的地方已经同步了
在这里插入图片描述
在7上插入数据
在这里插入图片描述
上来就是4,其他主机插入数据就是8
在这里插入图片描述
在这里插入图片描述
一次性插入几条数据怎么
在这里插入图片描述
内部也控制这个属性,避免auto-increment的冲突
galera-glaster还没有大规模开始使用
一般来讲还是主从复制,主主避免不了同时写数据的 可能
可以做一个测试

在这里插入图片描述
在这里插入图片描述
测试往里面插入一条记录,相当于在每个终端同时执行
在这里插入图片描述
查询插入的结果怎么样的
在这里插入图片描述
那么要是id设置为主键呢
在这里插入图片描述
其他的失败了,有一个成功了
在这里插入图片描述
按照原理只能一个成功,其他失败在这里插入图片描述
在这里插入图片描述
解决了同时插入的问题,配置也比较简单
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
服务器地址
在这里插入图片描述
集群名
在这里插入图片描述
想换个名字,可以在配置文件里改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在复制过程中遇到的问题如何解决
主服务器一般配合:MHA(解决主服务器宕机自动切换到从服务器上)和半同步 (保证主服务器始终能把数据传到从服务器)(这样基本可以避免数据丢失)
从服务器

在这里插入图片描述
serverid必须唯一,就会复制失败,因为是通过serverid来判断事务日志是谁的
在这里插入图片描述
复制延迟需要借助第三方工具,
一从多主,可以从多个主服务器复制多个数据库,实例

在这里插入图片描述
qps每秒中的查询次数
tps每秒中执行的事务次数(事务就是对数据库的更改)

在这里插入图片描述
对于mysql性能好坏,有一些测试工具
在这里插入图片描述
这个是自带的工具
在这里插入图片描述
会生成一个测试用的数据库,和数据,然后对表进行测试
在这里插入图片描述
可以修改不同类型的测试操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
-a就是生成测试数据库
在这里插入图片描述
并发一百次访问
在这里插入图片描述
在这里插入图片描述
发起1000次请求,并发是50,100分别测,用myisam,innodb分别的去进行测试
在这里插入图片描述
myisam的速度还是更快一些,不支持事务
在这里插入图片描述
单机的相交做的集群的稍微好点
在这里插入图片描述
生产中配置my.cnf的范例
maxconnections并发链接数

一般的设置是不支持这么大的并发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最大连接数是151
在这里插入图片描述
链接满了,后续的就需要排队,至少不会拒绝
在这里插入图片描述
用户错误链接1000次,就不允许链接了。可以用flush hosts恢复
在这里插入图片描述
打开文件个数
在这里插入图片描述
mysql默认设置都太小了,不符合生产环境设置
在这里插入图片描述
一张表可能有个字段类型是BLOB,可以设置为这个字段的最大值大小
在这里插入图片描述
全表扫描,进行多表链接的时候,内存多大
在这里插入图片描述
查询缓存默认是0,不启用的
在这里插入图片描述
单个查询缓存最大是多少
在这里插入图片描述
事务隔离级别,可重复读
在这里插入图片描述
如果栈太小,进行存储过程和复杂语句的时候,有可能失败
在这里插入图片描述相当重要,数据库在使用存储情况的时候最多使用128M数据,来存储你的数据,如果服务器是32G内存,用128M来缓存你的数据,效率是 很低的,一般都是要物理内存的百分之80
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
并发线程数,建议是cpu个数+磁盘数量的两倍
在这里插入图片描述
innodb事务日志默认是5M,默认只有两个
在这里插入图片描述
当对一行修改时候,就会进行加锁,别人也访问就需要等待,120S超时
慢查询时长,两秒已经很慢了,10秒有点太长了

在这里插入图片描述
如果没有利用索引查询,可以记录下来进行优化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
服务器端的字符集设置不是utf-8
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值