将我们的应用从一台服务器转到多台服务器,了解负载均衡,集群
理解负载均衡
服务器集群实际上就是做数据冗余(某一服务器发生故障,下一服务器返回响应)
比如数据库,存在一个正常的数据库服务器A和备份数据库服务器B,如果A正常,B不工作,如果A出了故障,那么B开始接收A的工作,让外部用户看不出系统故障,从而为用户提供持续性的服务。
Mysql数据库,作为一个开源数据库,Mysql无疑使成功的,现在很多大型的互联网公司都在使用它
可能有人会说,mysql只适合中小型应用,大型应用一般都使用sqlserver,oracle,db2这些数据库,那么我要告诉你,你错了。作为一个互联网公司,对于成本问题肯定是要控制的,当然,对于国企,肯定例外了啊。如果使用一个oracle数据库,那么一年上百万的资金,对于一般公司貌似的确是承受不了的。举个例子:淘宝,在最开始的时候,它的构架采用的是经典的LAMP(linux+apache+mysql+php),然后就使用了oracle+javaee(貌似是这样),最后,改为mysql集群。
mysql对于上千万级的数据反应比较慢(这可能也是很多人觉得它不适合做大型应用的原因吧),如果对于单一服务器,可能要让它速度更快,也就是做数据库的优化,比如建立合适的索引
有两种技术,数据库的垂直分表,水平分表和mysql分区技术 这个可以去了解一下
Mysql的主从复制。(减少mysql服务器压力,同时也备份了数据)
什么是mysql的主从,主服务器我们一般称为master,从服务器称为slave,主服务器主要负责除了查询以外的其他操作,而从服务器就专门负责查询操作,那么,对于单个服务器的压力就顿时减少了很多。
如果要将CURD的操作分开,那么就需要保证主从服务器的数据是一致的,那么这种一致性怎么保证呢,就要实现mysql的主从复制了。
使用LAMP构造
1.在两台LINUX机器上(虚拟机或某云上的主机)搭建LAMP环境,配置IP地址,保证两个主机之间可以连通(ping通)
(开启web服务:apache(/etc/init.d/httpd start或者service httpd start) 在windows浏览器中输入web服务器IP地址,如果出现apache启动页面,则成功,否则,可能是防火墙的问题)
2.配置主从服务器(mysql)
{大概配置流程,实际配置中,参考资料进行配置}
主:/etc/my.cnf
主要需要设置两样,server-id和log-bin
然后重启mysql,进入mysql,执行grantreplication slave on *.* to '用户名'@'从服务器地址' identified by '密码',然后flush privileges,然后show master status
从:/etc/my.cnf
server-id和log-bin
然后重启mysql,然后进入mysql执行slavestart,然后ERROR了,为什么呢,因为mysql默认已经打开了slave,所以需要首先slave stop,再slave start,然后show slave status\G.,\G是把信息显示的方式调了一个方向,看着比较好看,然后如果出现
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
就说明你的从服务器搭好了。
3.现在可以建立一个test数据库,在test数据库建立一个test表(在主从服务器都需要执行这个SQL,如果你只是在主服务器建立了SQL,那么需要使用mysqldump命令备份过来),然后在主服务执行一条insert语句,然后在从服务器看看,OK,从服务器也已经有了一条记录。
建立好了主从服务器,那么将查询操作和其他操作分开