技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流。比如,sever1收到的请求就专门链接slave1从mysql读取数据,配合nginx的反向代理实现的分流,就可以优雅的把mysql的query请求分压到不同的mysql-slave实例。如果不会搭建ngnix的同学可以看我上一篇文章《高并发教程-基础篇-之nginx负载均衡的搭建

一、架构图

服务器准备:3台,ubuntu16.04系统+mysql-5.7.22-0ubuntu0.16.04.1
master:192.168.1.190 master-mysql
slave1:192.168.1.191 slave1-mysql
slave2:192.168.1.192 slave2-mysql
slave3:192.168.1.193 slave3-mysql
[注意:nginx集群搭建这里不做说明]

二、MYSQL安装和主从配置(分别在四台服务器上面进行如下操作)

1.ubuntu 16.04下安装mysql

   sudo apt-get install mysql-server mysql-client

2.配置主服务器(master-mysql):

        vim /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]分段下面添加
server-id=190
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=demos_db
binlog_ignore_db=mysql 重启mysql:
service mysql restart 查看是否已经开启二进制日志功能
show variables like 'log%';
如果看到 log_bin ON 说明成功
+----------------------------------------+--------------------------------+
| Variable_name | Value |
+----------------------------------------+--------------------------------+
| log_bin | ON | 查看二进制日志的位置:
show master status;
可以看到
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 | 923 | | | |
+------------------+----------+--------------+------------------+-------------------+ 授权repl用户可以对主服务器二进制日志的读取:
create user repl;
grant replication slave,reload,super on *.* to 'repl'@'192.168.1.%' identified by '123456';
flush privileges;

3.从服务器的配置(以191为例,其他服务器把server-id=191改为对应的IP地址即可):

        vim /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]分段下面添加
server-id=191
log_bin=/var/log/mysql/mysql-bin.log
replicate_do_db=demos_db 登录mysql,然后执行:
stop slave;
确保slave都关闭。
然后设置从master复制日志配置:
change master to master_host='192.168.1.190', master_user='repl', master_password='123456', master_log_file='mysql-bin.000007', master_log_pos=923;
注意1,master_log_file为在master运行show master status;看到的File字段下的文件名称;master_log_pos为Postition下看到的数值.
接着执行:
start slave;
show slave status\G;
可以看到如下信息
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.190
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 923
Relay_Log_File: slave1-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: demos_db
......
注意:在出现的信息中找到 Slave_IO_Running/Slave_SQL_Running ,都为YES则成功了

三、操作测试:

        在master上面:
CREATE DATABASE demos_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE tb1 (id int(11),name varchar(20)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into tb1 values (1, "我是测试1");
然后在其他salves上面查看是否有相关信息

2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离的更多相关文章

  1. 高并发教程-基础篇-之nginx负载均衡的搭建

    温馨提示:请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用. 一.架构图: 服务器准备:3台,ubuntu16.04系统maste ...

  2. 1.高并发教程-基础篇-之nginx负载均衡的搭建

    温馨提示:请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用. 一.架构图: 服务器准备:3台,ubuntu16.04系统maste ...

  3. 3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

    高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建 如果大家看了我的上一篇<2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离>文章,如果能很好的 ...

  4. 【高并发解决方案】8、Nginx/LVS/HAProxy负载均衡软件的优缺点详解

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  5. SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)

    SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...

  6. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

  7. 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现

    总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...

  8. 项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现

    目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:ng ...

  9. [转]Nginx+mysql+php-fpm负载均衡配置实例

    转 : http://www.jbxue.com/article/7923.html 介绍一个nginx.mysql.php-fpm环境下配置负载均衡的例子,有需要的朋友,可以参考下. 系统环境如下: ...

随机推荐

  1. SSRS 报表开发小技巧

    说明: 开发工具为: SQL Server Data Tools (英文版)     开发环境为: SQL Server 2012 (英文版) 一. 饼图数据外部显示 首先我们来看3张效果图:  内部 ...

  2. js原生实现轮播

    前两天同事面试新人,让现场写”轮播的实现”.我一想这玩意貌似我也没写过啊,就在旁边暗搓搓地拖了一张纸也在那写,同事都纳闷了! 这玩意实现方法有很多种,就看喜欢那种,喜欢怎么写而已.我这里是通过对img ...

  3. js获取当前页面url信息方法(JS获取当前网址信息)

    设置或获取对象指定的文件名或路径. alert(window.location.pathname) 设置或获取整个 URL 为字符串. alert(window.location.href); 设置或 ...

  4. 观察者设计模式( Observable类Observer接口)

    如果要想实现观察者模式,则必须依靠Java.util包中提供的Observable类和Observer接口. class House extends Observable{ // 表示房子可以被观察  ...

  5. Pig filter用法举例

    filter:过滤数据,只有符合特定条件的数据才会被保留下来,然后进入下一个数据流.   1)等值比较 filter data by $0 == 1 filter data by $0 != 1   ...

  6. MQTT介绍(1)简单介绍

    MQTT目录: MQTT简单介绍 window安装MQTT服务器和client java模拟MQTT的发布,订阅 MQTT: MQTT(Message Queuing Telemetry Transp ...

  7. CSS 小结笔记之三种样式表

    CSS 引入共有三种方式:内部样式表,内联样式(行内样式)表,外部样式表,当然也可以使用多重样式 内联样式 <div style="color:red;font-size:20px&q ...

  8. 转:C# WinForm窗体及其控件的自适应

    一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率>  ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这 ...

  9. [翻译] SIAlertView

    SIAlertView https://github.com/Sumi-Interactive/SIAlertView An UIAlertView replacement with block sy ...

  10. zabbix 监控iptables

    参看的文章链接忘了...... yum -y install iptstate 1.脚本位置和内容 [root@web1 scripts]# pwd /etc/zabbix/scripts [root ...