2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离
技巧提示: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实现负载均衡和读写分离的更多相关文章
- 高并发教程-基础篇-之nginx负载均衡的搭建
温馨提示:请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用. 一.架构图: 服务器准备:3台,ubuntu16.04系统maste ...
- 1.高并发教程-基础篇-之nginx负载均衡的搭建
温馨提示:请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用. 一.架构图: 服务器准备:3台,ubuntu16.04系统maste ...
- 3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建
高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建 如果大家看了我的上一篇<2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离>文章,如果能很好的 ...
- 【高并发解决方案】8、Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...
- SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)
SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...
- 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现
实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...
- 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现
总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...
- 项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现
目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:ng ...
- [转]Nginx+mysql+php-fpm负载均衡配置实例
转 : http://www.jbxue.com/article/7923.html 介绍一个nginx.mysql.php-fpm环境下配置负载均衡的例子,有需要的朋友,可以参考下. 系统环境如下: ...
随机推荐
- CSS样式之a标签(原文网址http://www.divcss5.com/shili/s57.shtml)
这是个人在做网站的时候整理的关于a标签的使用方法,整理一下,方便下次使用. 一.a超链接的代码 <a href="http://www.baidu.com" target=& ...
- 纯小白入手 vue3.0 CLI - 1 - npm 安装与初始化
node 开发环境请先自行准备 npm install -g @vue/cli 安装完成之后命令行则存在 vue 命令 vue -V 查看本地 vue 版本 vue -h 输出帮助 vue creat ...
- js面向对象设计之function类
本文仅探讨如何合理的使用 function 在 javascript中实现一个面向对象设计的类.总所周知,javascript 并不能实现一个真正意义上的类,比如 protect 比如 函数重载.下面 ...
- FineReport中如何用JavaScript解决控件值刷新不及时
我们经常利用按钮进行一些页面值的处理工作,但是默认的逻辑造成,每次新填报的值,需要点击下空白区域或是执行某个其他操作才可以被正确读取,那么我们如何处理呢? 例:当我们用常规取值的时候,虽然B3单元格录 ...
- Vue 框架-06-条件语句 v-if 实现选项卡效果
Vue 框架-06-条件语句 v-if 实现选项卡效果 本片介绍的是 Vue 中条件语句 v-if 第一个小实例是,通过 v-if="布尔值",通过布尔值的真假来决定,某元素是否显 ...
- Condition使用
面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法, 能够支持2个生产者线程以及10个消费者线程的阻塞调用 有两种方法 1.使用wait和notify/notify ...
- 带你从零学ReactNative开发跨平台App开发(五)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- Ionic step by step (1)
刚接触 ionic,一步一步学习,有错误的,望大家指出. 公式 Ionic = Cordova + Angular2 + ionic CSS Cordova: 提供了使用 JavaScript 调用 ...
- PMF:为何硅谷大神把它念奉为创业公司“唯一重要的东西”
产品-市场匹配(Product-market fit,PMF)虽然是精益创业中最重要的概念之一,但也是最不明确的一个概念.2007年,马克?安德森在他的博客里创造了这个概念,并定义为:“在一个好的市场 ...
- Tomcat – Java.Lang.OutOfMemoryError: PermGen Space
很多时候,在开发阶段Tomcat重复的重启过程中会遇到java.lang.OutOfMemoryError : PermGen space 错误. 1 2 3 4 java.lang.OutOfMem ...