大型网站处理高并发问题,除了web实现分布式负载均衡。数据业务层、数据访问层,如果仅仅采用一台服务器,服务器压力会比较大,有可能导致服务器宕机,数据丢失等问题。如果仅仅依靠优化程序代码,带来的效果并不大,此时就可以采用搭建数据库集群的方式来解决高并发。
服务器:一台Master服务器(win server 2008R2 Standard),一台Slave服务器(win server 2008R2 Standard)
数据库集群描述:主服务器(Master)负责网站noquery操作,从服务器负责query操作。主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。
一、前期准备:
在Master及Slave机器上分别安装好mysql数据库软件,并分别安装好所需读写分离的数据库实例,自行操作!
二、配置:
1.配置Master数据库:
修改mysql配置文件
# 数据库id,唯一
server-id = 1
# 二进制日志文件,必填项,否则不能同步数据;如果不取名字的话,会以计算机的名字加编号命名二进制文件;
log-bin=master-bin
log-bin-index=master-bin.index
# 需要同步的数据库,如果还需要同步其他库,继续添加,如果不写默认同步所有库。
# binlog-do-db=test
# 不需要同步的数据库
binlog-ignore-db=mysql
保存文件后重启mysql服务
在Master MySQL上创建一个用户‘dev’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
1) mysql>create user dev; //创建新用户
2) # dev用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明dev用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以dev用户登陆主服务器。
3) mysql> GRANT REPLICATION SLAVE ON *.* TO 'dev'@'192.168.0.%' IDENTIFIED BY 'mysql';
授权root用户可以远程访问本机mysql数据库。或者使用Navicat软件连接本机mysql,点击用户按钮,添加root远程用户,授权后也可以达到相同效果。
5) 然后在mysql命令行界面,运行命令:
show master status;
查看主数据库的日志文件名称及当前日志的最新位置,以便配置从数据库。
至此,mysql主数据库配置完成。
2.配置从数据库
1) 找到MySQL安装文件夹修改my.ini文件,在[mysqld]下面增加下面几行代码
# 数据库id,唯一
server-id = 2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
replicate-ignore-db=mysql
保存后,重启mysql服务,使之生效。
2) 打开从库命令行界面,运行命令,关闭同步功能。
stop slave;
3) 然后运行关键语句:
change master to master_host='192.168.0.1',master_user='dev',master_password='mysql',master_log_file='master-bin.000001',master_log_pos=932061774;
注意:master_log_file(master服务器产生的日志)及master_log_pos以实际Master库配置为准,不能搞错。
之后,运行命令,重启同步功能:
start slave;
三、数据同步测试
1.在主库中更改数据:
2.查看从库相应数据:
测试完毕。