mysql主从复制搭建(读写分离)

1.背景介绍

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力。这种方式,在如今很多网站里都有使用,也不是什么新鲜事情,今天总结一下,方便大家学习参考一下。

2.搭建环境

搭设一台Master服务器(win7系统,Ip:120.95.132.174),搭设两台Slave服务器(虚拟机——一台Ubuntu:120.95.132.228,一台 Window7)

3.主从复制原理

主服务器(Master)负责网站NonQuery操作,从服务器负责Query操作,用户可以根据网站功能模特性块固定访问Slave服务器,或者自己写个池或队列,自由为请求分配从服务器连接。主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。
这里写图片描述

4.具体实现

在主从服务器上都装上MySQL数据库,windows系统安装的是mysql 5.7免安装版,Ubuntu可以选择免安装版和自动安装的版本,本人采用apt-get成功安装和配置mysql。安装步骤如下所示:

Ubuntu上安装MySQL非常简单只需要几条命令就可以完成。

 - sudo apt-get install mysql-server

 - apt-get isntall mysql-client

 - sudo apt-get install libmysqlclient-dev//不必须
 - apt-get install vim//Ubuntu中修改文档内容没有Vim,最好把Vim 装上,,不然估计会抓狂。Ubuntu中修改文档内容没有Vim,最好把Vim 装上,,不然估计会抓狂。
4.1 配置Master主服务器

(1)在Master MySQL上创建一个用户‘repl’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。

mysql>create user 'repl'@'120.95.132.%' IDENTIFIED BY 'mysql'; //创建新用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'120.95.132.%' ;


/*建议继续执行以下脚本验证效果*/
 mysql> select user,host,password from mysql.user;//来自host这个地方的人,可以使用master机器上的一个user的账号
mysql>show grants for 'repl'@'120.95.132.%';//查看当前账户权限
/*如果没有授权,重新授权*/
mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'120.95.132.%'

(2)找到MySQL安装文件夹修改my.Ini文件。 在[mysqld]下面增加下面几行代码:

server-id=1   //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
log-bin=master-bin
log-bin-index=master-bin.index

(3)查看日志

mysql> SHOW MASTER STATUS;

(4)重启master服务

4.2 配置Slave服务器(Windows)

(1)找到MySQL安装文件夹修改my.ini文件,在[mysqld]下面增加下面几行代码

[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin 

(2)连接Master

mysql>change master to master_host='120.95.132.174', master_port=3306,master_user='repl',master_password='mysql', master_log_file='master-bin.000001',master_log_pos=0;

(3)重启MYSQL服务
(4)启动Slave:mysql>start slave;

4.3 配置Slave服务器(Ubuntu)

(1)找到MySQL安装文件夹修改my.cnf文件

sudo vi /etc/mysql/my.cnf

添加内容:

[mysqld]
port=3306
server_id=3
relay_log_index=slave-relay-bin.index
relay_log=slave-relay-bin

重启mysql服务

一、 启动方式

1、使用 service 启动:service mysql start

2、使用 mysqld 脚本启动:/etc/inint.d/mysql start

3、使用 safe_mysqld 启动:safe_mysql&

二、停止

1、使用 service 启动:service mysql stop

2、使用 mysqld 脚本启动:/etc/inint.d/mysql stop

3、mysqladmin shutdown

三、重启

1、使用 service 启动:service mysql restart

(2)连接master

change master to master_host='120.95.132.174', master_port=3306,master_user='repl',master_password='mysql', master_log_file='master-bin.000001',master_log_pos=0;

(3)启动slavestart slave

OK所有配置都完成了,这时候大家可以在Master Mysql 中进行测试了,因为我们监视的时Master mysql 所有操作日志,所以,你的任何改变主服务器数据库的操作,都会同步到从服务器上。创建个数据库,表试试吧。。

参考博文:
https://www.cnblogs.com/hellotracy/articles/5183057.html
https://www.cnblogs.com/alvin_xp/p/4162249.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值