(1)高可用:
所谓高可用就是说,如果数据库突然宕机了一台机器,比如说主库或者从库宕机了,那么数据库还能正常使用吗?如果从库宕机影响并不是很大,因为大不了就是让所有的读流量都从主库去读
就可以了,但是如果主库宕机了呢?那就真的麻烦了,因为主库一旦宕机,就没法写入数据了,从库毕竟是不允许写入的,只允许读取。所以有没有一种办法,可以在主库宕机之后,立即把从库切换为主库?
然后所有的请求都对从库切换为主库的库去写入和读取,如果能实现这样的一个效果,那数据库就实现了高可用,这就是数据库的高可用架构。
(2)高可用工具:
一般生产环境里进行数据库高可用架构管理的工具室MHA,也就是 Master High Availability Manager and Tools For MySQL,是小日本写的,用perl脚本写的一个工具,这个工具就是专门用于监控主库的状态,如果感觉不对,可以把从库切换为主库。
这个MHA自己也是需要单独部署的,分为两种节点,一个是Manager节点,一个是Node节点,Manager节点一般是单独部署一台机器的,Node节点一般是部署在每台MySQL机器上的,因为Node节点的通过分析各个MySQL的日志来进行一些操作。
Manager节点会通过探测集群里的Node节点去判断各个Node所在机器的MySQL运行是否正常,如果发现某个Master故障了,就直接把他的一个Slave提升为Master,然后让其他Slave都挂到新的Master上去,完全透明。
其实这个原理是非常简单的,不过搭建的过程非常的复杂,因此可能要用一周时间来说搭建过程。
(3)搭建方式:
首先准备4台机器,其中一台机器装一个MySQL作为master,另外两台机器都装MySQL作为slave,然后在每个机器上都得部署一个MHA的node节点,然后用单独的最后一台机器装MHA的master节点,整体就这么一个架构。
确保4台机器之间都是免密码互相通信的,这个可以自行搜索,就是4台机器之间要不依靠密码就可以直接ssh登陆上去,因为这个MHA的perl脚本要用的,接着大家就部署一个MySQL master和两个MySQL slave,搭建的过程就按照之前的就行。
搭建过程 网上可以找到