我们知道应用对数据库的訪问通常情况下大部分都是读操作,写仅仅占非常少一部分。因此读写分离(read-write-splitting)能有效减少主库压力,从而解决站点发展过程中遇到的第一次数据库瓶颈。

主从复制

首先必须开启master库的bin-log,由于mysql的主从复制是异步的。所以master库必须将更新操作记录下来以供slave库读取。

假设如今有A, B两台机器,A为master, B为slave。

Master

ssh至A服务器,登陆mysql, 创建一个复制专用用户repl:

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'B的IP' IDENTIFIED BY '111111';

改动my.cnf文件。开启bin-log并设置server-id:

[mysqld]

log-bin = /XXXX/mysql-bin.log

server-id = 1

重新启动mysql使配置生效。

然后设置读锁,确保在配置好slave库之前master库没有读写操作:

flush tables with read lock;

查看master库当前bin-log的文件名称和偏移量:

show master status;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000002 | 1075 | | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

记下文件名称和偏移量。此时master已经停止了全部的数据更新操作,这时候我们要把master库的数据进行备份,然后还原到slave库中。推荐通过mysqldump命令完毕该操作。master备份完毕后就可以取消锁:

unlock tables;

Slave

ssh至B服务器,改动配置文件:

[mysqld]

server-id = 2

通过mysqld_safe启动从库。加入--skip-slave-start參数:

mysqld_safe --skip-slave-start

这样做的目的是不要让从库启动时就启动复制线程。由于我们还没有配置主库信息。

mysql> CHANGE MASTER TO

-> MASTER_HOST='主库地址',-> MASTER_PORT=3306,-> MASTER_USER='repl',-> MASTER_PASSWORD='111111',-> MASTER_LOG_FILE='mysql-bin.000002', -> MASTER_LOG_POS=1075;

启动slave线程:

start slave;

至此从库配置完毕。假设一切顺利的话,此时在主库运行一条更新操作,从库也会立即跟进。

假设发现有问题,能够运行

show slave status;

查看具体信息。

读写分离

眼下读写分离有两种方案:

控制应用程序,写操作连接主库,读操作连接从库。

引入数据库中间件。如官方的mysql-proxy。

优点是读写分离相应用程序全然透明,不须要对程序代码做不论什么改动。

可是眼下mysql-proxy依旧仅仅有alpha版本号,而且官方也不推荐将其用在生产环境中。

事实上对于方案一另一个比較优雅的解决方式。那就是使用ReplicationDriver。

MySQL的JDBC驱动中自带ReplicationDriver。它能够将JDBC中全部conn.setReadOnly(true)的连接路由到从库中,从而使得我们不必对程序代码动大手术。

配合Spring, 我们能够使用@Transactional(readOnly = true)注解。

由于MySQL主从复制有延迟,所以对于实时性要求高的操作,我们能够将readOnly设为false来让ReplicationDriver从主库中读取数据,这也是一种能够接受的方案。

配置演示样例:

mysql主从复制从机开启读_MySQL主从复制和读写分离相关推荐

  1. 【开源访谈】Kingshard 作者陈非访谈实录【项目简介】 Kingshard 是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQ

    [项目简介] Kingshard 是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作:能够让DBA通过kingshard ...

  2. mysql读写分离_MySQL基于amoeba读写分离实验

    =========================================== 主从复制只是一个同步数据的方式 读写分离:只在主的上面写,只在从的上面读 读写分离方案:[1]基于程序代码内部 ...

  3. mysql读写分离_Mysql数据库09MySQL读写分离

    Mysql数据库09-MySQL读写分离 一.读写分离应用案例分析 在企业用户中,在大量的数据请求下,单台数据库将无法承担所有读写操作.解决方法:配置多台数据库服务器以实现主从复制+读写分离. 二.读 ...

  4. mysql读写分离中间件都有哪些_MySQL cetus 中间件 读写分离

    首先需要确保mysql 的主从同步成功. CentOS 系统可以通过以下命令安装依赖包: yum install cmake gcc glib2-devel flex mysql-devel gper ...

  5. mysql慢sql增加读写分离_MySQL主从同步+读写分离

    MySQL主从同步+读写分离 实验拓扑: 三台mysql数据库: 192.168.80.101 主服务器 mysql 192.168.80.102 从1服务器 mysql 192.168.80.103 ...

  6. 1051 mysql 主从_mysql配置主从读写分离的一些想法

    这篇文章不是记录如何配置读写分离的技术文章,关于如何使用变形虫进行读写分离配置的文章网上一搜一大把.这篇文章旨在描述在实施主从读写分离过程中可能会遇到的问题,以及一些解决方案和想法. 数据库引擎的选择 ...

  7. 使用MySQL Router实现高可用、负载均衡、读写分离

    目录 一.MySQL Router简介 1. 功能 2. 架构 3. 使用 二.安装配置 三.自动失败切换 四.负载均衡 五.读写分离 六.多实例 1. 环境 2. 配置文件 3. 功能测试 参考: ...

  8. mysql router 多台写入_Centos7部署MySQL-router实现读写分离及从库负载均衡

    简介 MySQL Router是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client,是mysql-proxy的一个替代品 ...

  9. mysql多个实例 主从库_mysql主从复制系列(1)搭建多个mysql实例环境

    搭建多个mysql实例(均使用Ubuntu18虚拟机,mysql5.7) 两种方式 1. 不同主机上分别创建mysql服务,一台机一个mysql.[这个最简单,推荐实用,只要在不同主机上装mysql服 ...

  10. mysql主主复制半同步_mysql主从复制中的半同步复制

    实验mysql借助google提供的插件,完成半同步复制模型: 物理机依然是win7系统,虚拟机为centos7: 主节点:192.168.255.2 从节点:192.168.255.3 先配置为主从 ...

最新文章

  1. 自定义msi安装包的执行过程
  2. 首届清华智班30人名单公布:贵校第一批AI本科生,状元金牌云集,与姚班“抢人”...
  3. 13 款 JavaScript 模板引擎
  4. [Java]==和equals()的区别(按照数据类型区分)
  5. 观看实验中微型计算机虚拟拆装演示,虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0...
  6. DataList多行数据后如何添加一条分隔线
  7. c++ switch/case 使用 string的方法
  8. Map3D中获取地图中心及Zoom到新的中心点
  9. android学习1:初识Activity
  10. class path resource [logback.xml] cannot be resolved to URL because it does not exist 问题解决
  11. 100 个 pandas 案例,强烈建议保存
  12. 能打开2D、3D图文件的小工具abviewer
  13. 一文看懂有刷电机与无刷电机的工作原理及区别
  14. 阿里云对象存储Java-SDK实战
  15. java身份证工具类(校验身份证是否合法、通过身份证获取年龄、性别、生日,将15位身份证转为18位等)
  16. 技术创业者必读:从验证想法到技术产品商业化的全方位解析
  17. 张一鸣:一个技术男的BAT突围战
  18. Linux部署人大金仓(Kingbase8)
  19. 一文读懂伪回归、协整、格兰杰
  20. FlashFXP上传文件没数据,为0KB

热门文章

  1. POST的Response数据问题
  2. javascript 浮点计算问题解决思路
  3. shell十三问-3) 別人 echo、你也 echo ,是问 echo 知多少
  4. Windows server 2003 ××× 配置实例(Site to Site)
  5. 证书激励法——VBA课程第二次讨论2007年12月6日
  6. php自动加载 依赖,php自动加载
  7. JAVA开发的APP怎么上传_苹果App Store上传应用流程详解
  8. fatal: empty string is not a valid pathspec, please use . instead if you meant to match all paths
  9. java div和table_详细为你讲解,DIV+CSS布局和TABLE布局的优缺点(经典)
  10. 疑似BAT的BUG及避错办法