Mysql读写分离与主从数据库设置方案

何谓读写分离?
Mysql无非四个功能:增,删,改,读.而将增删改分离操做.这样有利于提升系统性能.
试着想一想,进搬退改货又卖货改为了前门只卖货,其它去后门.这样是否是就很清晰了?
每每看起来高大上的东西,作起来也是挺简单的.
下面是写给小白的,都是很是直观的操做.php

1.配置:
两台服务器同配置的mysql如mysql5.7
PS:若是条件有限,一台也能够,只须要安装两个mysql服务(不一样端口如3306,3307),只是这就有点违背效率初衷了
2.代码:
1.通常直接在代码层将mysql操做类的读写如update,insertselect * from进行路由分离.使之对应不一样的服务器.
2.中间件代理,即不改动代码的前提下,由中间件将读写请求发送至主从服务器.mysql

如今讲讲主从如何配置:
1.开放端口:大部分主机都默认Mysql端口3306,那么先将两台机子的安全组防火墙里把3306端口打开并重启.
2.端口打开了,如今配置两个服务器(一台主机两个Mysql服务器的同理):
下文以主ip:192.168.0.1,从ip:192.168.0.2,建立同步帐号spec,密码spec_password为例:sql

主服务器(增删改):安全

#1.Mysql配置改如下并重启服务(命令行里直接重启:service mysql restart)
[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

#2.命令行mysql执行或phpmyadmin里执行:
GRANT REPLICATION SLAVE ON *.* TO 'spec'@'192.168.0.2' IDENTIFIED BY 'spec_password';
flush privileges;

这样,主服务器就完工了.服务器

从服务器配置:性能

#1.Mysql配置改如下并重启服务(命令行里直接重启:service mysql restart)
[mysqld]
server-id=2
relay-log-index=slave-bin.index
relay-log=slave-bin

#2.命令行mysql执行或phpmyadmin里执行:
change master to master_host='192.168.0.1',master_port=3306,master_user='spec',master_password='spec_password',master_log_file='master-bin.000001',master_log_pos=0;
start slave

通常来讲,配置到此就完成了.测试

3.测试:
从服务器中查询语句:show slave status
若是Slave_IO_State=Waiting for master to send event就成功了.
其他状态一般都是如下缘由:
1.主从的安全组或防火墙未打开3306端口
2.主从之间ping不通.
3.上面的spec帐密错误命令行

如今起,在主服务器随便增删改,都会同步到从服务器了.代理

4.建议:
1.切记从服务器只操做读,不操做增删改.保持数据的同步性,这样当一台服务器故障的时候,另外一台就能够顶上去(其实主服务器宕机的时候确定会丢失一部分最新数据).
2.从服务器的带宽必定>=主服务器,尽可能减小同步延迟.要是小水管,同步天然慢一步嘛.rest

相关文章
相关标签/搜索