为了缓解大量的并发访问,除了在网站实现分布式负载均衡。在数据库层面,单台mysql服务器肯定无法满足大数据量的读写。于是我们需要搭建mysql集群。一个主(master)库,搭载多个从库(slave),把数据连接的分流到多个从库,来分担主库的压力。
利用Mysql主从配置,实现读写分离,数据同步。主库负责写入数据,从库负责查询数据。
前期准备(继续阅读下文,我认为你具备了windows系统安装mysql和一些基本的sql读写能力):
1.搭建一台master主库服务器(win7系统,Ip:192.168.1.150),在该服务器上安装mysql(我的版本是mysql-5.5.56)。
2.搭建一台slave从库服务器(win10系统,Ip:192.168.1.168),在该服务器上安装mysql(我的版本是mysql-5.5.56)。
主从库数据同步原理:
Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改数据库的sql语句。主从复制的原理其实就是把主服务器上的bin日志复制到从服务器上执行一次,这样从服务器上的数据就和主服务器的数据同步了。
闲话少续,切入正题。开始配置主从库。
1.主库配置
在win7系统,Ip:192.168.1.150的服务器上配置mysql为主库(master)。
1)我的主库的用户名:root,密码为:12345,下面的代码是给主库设置从库可以远程连接主库,并且可以通过该账号读取二进制日志,实现数据同步。192.168.1.%是可以远程访问主库的从库IP地址。%是个通配符,表示192.168.1.0-192.168.1.255的服务器都可通过root用户登录主服务器。当然你也可以指定固定IP。但是为了以后从库的增加方便,我此刻用的通配符,你可以根据实际情况,进行配置。
mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY '12345';
2)修改mysql的安装路径下的配置文件my.ini。(默认路径为:C:\Program Files\MySQL\MySQL Server 5.5)。
在my.ini文件中增加如下几行代码:
#给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
server-id = 150
log-bin = master-bin
log-bin-index = master-bin.index
3)查看主库日志名称,通过下面sql即可获取。
mysql> show master status;
查询结果如下图所示,master-bin.000004为我的主库bin日志文件,2580是log_position。配置从库连接主库需要上述两个值。
至此,主库master已经基本配置完成,重启mysql服务,配置完成。接下来咱继续配置从库。
2.从库配置
在win10系统,Ip:192.168.1.168的服务器上配置mysql为从库(slave)。
1)修改mysql的安装路径下的配置文件my.ini。(默认路径为:C:\Program Files\MySQL\MySQL Server 5.5)。
在my.ini文件中增加如下几行代码:
#给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
server-id=168
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
重启服务器,使配置生效。
2)在从库中执行如下sql代码,使从库连接主库,并可以实时同步数据。
mysql> change master to master_host='192.168.1.150',
->master_port=3306,
->master_user='root',
->master_password='12345',
->master_log_file='master-bin.000004',
->master_log_pos=2580;
3)启动slave,代码如下:
mysql> start slave;
至此,从库也配置完毕。如果你想配置多台从库,配置和上诉配置一致。
此刻。主从库都已经配置完成。那咱接下来,就验证一下可以数据实时同步。OK。闲话少续,开始搞。
3.在主库中创建数据库,并且建一个表。具体代码如下:
mysql> create table if not exists `table1` (
-> `t_id` int auto_increment,
-> `t_username` varchar(64) not null,
-> primary key(`t_id`)
-> )engine=innodb default charset=utf8;
在往该表插入一条数据,代码如下:
mysql> insert into `table1` (`t_username`) values('fubo');
4.在从库中验证数据是否同步。
1)查看从库中是否创建主库的数据库具体代码如下:
mysql>show databases;
2)切换到demo1数据库,查看是否同步主库的表和数据。代码如下:
mysql>use demo1;
mysql>select * from `table1`;
结果如下图:恭喜你主从库配置完成。可以创建你的集群服务器了。