mysql主从配置

MySQL主从复制与读写分离

喜夏-厌秋 提交于 2019-11-27 06:21:46
MySQL 主从复制与读写分离 MySQL 主从复制 (Master-Slave) 与读写分离 (MySQL-Proxy) 实践 Mysql 作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台 Mysql 作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。 因此,一般来说都是通过 主从复制( Master-Slave )的方式来同步数据,再通过读写分离( MySQL-Proxy )来提升数据库的并发负载能力 这样的方案来进行部署与实施的。 如下图所示: 下面是我在实际工作过程中所整理的笔记,在此分享出来,以供大家参考。 一、 MySQL 的安装与配置 具体的安装过程,建议参考我的这一篇文章: http://heylinux.com/archives/993.html 值得一提的是,我的安装过程都是源码包编译安装的,并且所有的配置与数据等都统一规划到了 /opt/mysql 目录中,因此在一台服务器上安装完成以后,可以将整个 mysql 目录打包,然后传到其它服务器上解包,便可立即使用。 二、 MySQL 主从复制 场景描述: 主数据库服务器: 192.168.10.130 , MySQL 已经安装,并且无应用数据。 从数据库服务器: 192.168.10.131 , MySQL 已经安装

实现Mysql主从复制读写分离

故事扮演 提交于 2019-11-27 06:21:17
实现Mysql主从复制读写分离记录 本次研究是通过配置Mysql实现主从复制,使用Amoeba代理实现读写分离。 参照资料 : http://my.oschina.net/u/1169079/blog/390726 Mysql主从复制: 根据查资料发现,只需修改对应的mysql文件目录下的my.ini配置文件,之后在命令行界面执行相关命令后,即可实现主从复制。分工及工具如下 主数据库:董胜燕 IP:192.168.1.102 Mysql版本:5.7 从数据库:高宇飞 IP:192.168.1.103 Mysql版本:5.7 修改主数据库配置 首先,修改主数据库的my.ini配置文件 : 在[mysqld] 下增加如图所示部分语句,其中字段代表含义: binlog-ignore-db 指定忽略复制的数据库 log-bin 指定 数据库操作日志,复制数据读取此日志 server-id Mysql服务id,多个主从时一定不能重复。 symbolic-links 禁用符号链接,防止安全风险 修改完成后,重启Mysql服务,打开命令行窗口,验证是否已打开主数据库: 输入命令登录mysql,输入 show master status\G;查看主数据库状态,出现以下结果,既是配置成功。 此时,需要记住File 与Position的值,修改从数据库配置时需要使用。 启动成功后

MySQL 主从复制 读写分离

限于喜欢 提交于 2019-11-27 06:21:00
MySQL MySQL的主从复制与读写分离两者有着紧密联系,首先需要先部署主从复制,才能在此基础上进行数据的读写分离。简单来说,读写分离是在 主库写从库读 。基本的原理是让主库处理事务性操作,从库处理查询操作。当业务量非常大的时候,配置主从复制实现分离来分摊负载,避免负载过大造成无法及时响应的状况。 读写分离主从复制 主从复制 MySQL主从复制的原理是什么? 主库(Master)需提前配置 log-bin 参数并指定二进制日志文件(binary log, binlog)的保存路径 主库负责事务性操作,操作时的数据变更又称为二进制日志事件(binary log event)。 主库将数据变更写入到二进制日志文件中,从库将主库中的二进制日志事件拷贝到自己的中继日志(relay log)中,然后从库重做中继日志中的事件,将主库的变更反映到自己的数据中(数据重演)。 MySQL主从复制流程 MySQL主从复制具体流程 在每个事务更新数据完成之前,主库在二进制日志文件中记录这些改变。 当主库写入二进制日志完成之后,主库会通知存储引擎提交事务。 从库将主库的二进制日志文件复制到自己的中继日志中,首先从库会开启一个I/O工作线程,I/O线程在主库上打开一个普通的连接,接着开始 binlog dump process 。 binlog dump process 从主库的二进制日志中读取事件

Mysql主从复制,读写分离(mysql-proxy),双主结构完整构建过程

不想你离开。 提交于 2019-11-27 06:20:26
下面介绍Mysql主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程。 Mysql主从复制(转载请注明出处,博文地址:) 原理是master将改变记录到二进制日志(binary log),slave将master的binary log拷贝到中继日志(relay log),slave通过中继日志同步master的操作。 1,实验环境,实验有2台Ubutu server 14都安装了mysql服务器,在相同的IP段 172.16.34.212(主), 172.16.34.156(从). 2,将这两台IP授权,允许其它IP通过账号密码进行访问(如添加个euht账号允许所有外部IP以密码123456访问),分别登录进两台机子的mysql执行如下语句 Grant all privileges on . to ‘euht’@’%’ identified by ‘123456’ with grant option; Flush privileges; 注: ①上述代码的意思是创建一个euht用户,host=%,允许所有IP通过用户名euht进行访问。添加完刷新权限。 ②此时两台机子的mysql应该是可以相互访问的,如果不可以,导致的原因有很多,最常见的是防火墙没关,mysql服务器绑定了本地地址。通过如下方法一般可解决问题 关闭防火墙,或开放3306端口 更改my

mysql主从复制与读写分离

爷,独闯天下 提交于 2019-11-27 06:20:12
主从复制原理:在主数据库执行后,都会写入本地的日志系统A中。假设,实时的将变化了的日志系统中的数据库事件操作,在主数据库的3306端口,通过网络发给从数据。从数据库收到后,写入本地日志系统B,然后一条条的将数据库事件在数据库中完成。那么,主数据库的变化,从数据库也会变化,这样就是所谓的MYSQL的复制。 读写分离可以提高数据库的读写性能。 实验环境 iptables和selinux关闭 redhat6.5 主数据库 server2 172.25.12.2 从数据库 server3 172.25.12.3 实验所需的的rpm包 mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1.el6.x86_64.rpm mysql-community-libs-5.7.17-1.el6.x86_64.rpm mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm mysql-community-server-5.7.17-1.el6.x86_64.rpm 1.数据库的配置 安装数据库 /etc/init.d/mysqld start 修改密码: grep password /var/log/mysqld.log 查看那数据库的临时密码 2017

MySQL主从复制读写分离与Yii2实现

旧时模样 提交于 2019-11-27 06:19:42
实现方式 首先说明这种方式一般分为两种: 1.采用代码形式,就是在代码中判断我是否要进行查询还是更新或增加,对应的去不同服务器的从库或主库进行操作 2.使用MySQL proxy 来进行这样可以不用从代码来直接区分是增删改查的语句,直接去MySQL proxy去执行操作,然后MySQL proxy回去对应的主库或者从库执行操作。一般称这样的方式为中间件,除了有MySQL proxy之外还有HAproxy(付费)等。 这两种方式各有其适用的场景,不能片面的指出那种方式比较好,只能是根据自己的业务需求去决定。 关于 MySQL的主从复制的配置以及MySQL proxy的配置 在以下这篇文章当中会详细讲到: http://www.cnblogs.com/DavidYan/articles/2531181.html 或者可以参考这个 http://www.jianshu.com/p/8528072cba9a 接下来我们要说的是在Yii2中是如何实现这个代码层级的读写分离. Yii2中主从复制和读写分离 这里主要围绕最新的Yii2英文文档中的一小节“主从复制与读写分离”展开进行介绍。为什么是英文文档?目前中文翻译的文档不是最新的。 首先我们需要在 web.php中配置一下在component(组件)数组中按照下文进行配置,或者是直接覆盖到config文件夹当中的db.php文件。 [

mysql主从复制和读写分离实战

萝らか妹 提交于 2019-11-27 06:18:20
目录 mysql主从复制和读写分离实战 mysql主从复制 Master配置 Slave1配置 Slave2配置 主从复制测试 mysql读写分离 mysql_proxy配置 读写分离测试 mysql主从复制和读写分离实战 一般情况下,mysql都是通过主从复制实现数据同步,再通过读写分离实现数据库高可用能力。当然主从复制和读写分离的作用不仅仅是这些。 这里提供了一个mysql主从复制和读写分离模型:(本次是一主二从模型) Master:172.25.254.7 slave1:172.25.254.8 slave2:172.25.254.9 mysql_proxy:172.25.254.10 所有服务都是在rhel7.0操作系统上运行, Java web app:是客户端请求,会对数据库发起读写操作请求,具体是发送SQL指令 Mysql Proxy:对读写操作请求的SQL指令进行路由,使得 读写分离 direct:一个负载分发引擎,对Mysql Proxy分发得读操作,按照一定得算法进行分发至后端得从服务器 master:主服务器,主要接受用户的写操作,并且负责将二进制日志同步给从服务器 slave-n:从服务器,主要负责用户的读操作(分担主服务器的读写压力),并且负责重放master的写操作,还能实现容灾能力,保证高可用(如果主服务器挂掉,slvae顶上去) mysql主从复制

MySQL主从复制读写分离

风格不统一 提交于 2019-11-27 06:17:38
mysql主从与读写分离 主从复制:保证服务器之间的数据同步(主指写服务器,从指读服务器) 实现过程 1)当写服务器有数据写入时,数据将对应写入操纵完毕后,再将所有写入操作写入本地日志文件中(源码:/usr/local/mysql/data、RPM:/var/lib/mysql) 2)在读服务器中,一直有两个线程(I/O线程:拿取写服务器新增的日志文件内容到本地日志文件;SQL线程:从本地新增的本地日志文件中进入数据库进行重放操作) 3)读服务器的I/O线程去查询写服务器是否有新增日志文件内容,如有则将新增日志内容放在读服务器本地日志文件中 4)读服务器的SQL线程检查本地日志是否有新内容产生,如有则进行重放(将日志文件中的SQL语句都执行一次)操作 5)读服务器同步完毕后,通知写服务器,写服务器通知代理服务器,代理转告Web,Web告知客户端写入完毕 读写分离:由于数据库查询较多,写入较少,因此将读、写分离,使用多个读服务器,一个写服务器 实现过程 1)客户端访问Web,如需要数据库操作,Web将请求转发到代理服务器(Amoeba) 2)代理服务器通过配置,判断为读还是为写,如为读,将请求转发到读的服务器 3)读服务器收到请求后,拿取用户所需数据返回给代理服务器,代理再转交给Web,Web再交由客户端 4)如判断为写的操作,将请求转发到写的服务器 5)写服务器收到后

ubuntu16.04 实现mysql 主从复制读写分离

给你一囗甜甜゛ 提交于 2019-11-27 06:17:21
编辑mysql配置文件 vi /etc/mysql/mysql.cof.d/mysql.cnf #服务器唯一标识 server-id = 1 #启动MySQL二进制日志 log_bin = /var/log/mysql/mysql-bin.log 指定记录二进制日志的数据库 binlog_do_db = marhal 指定不记录二进制日志的数据库 binlog_ignore_db = mysql service mysql restart 登录主服务器创建从服务器用到的账户和权限 mysql -uroot -p> mysql> create user backup_user ; Query OK, 0 rows affected (0.03 sec) mysql>grant replication slave on *.* to ' backup_user ' @' 192.168.0.% ' identified by ' 123456 '; # backup_user 指的是主服务器备份用户名 123456 指的是主服务器备份用户名密码,192.168.0.%通配符,表示0-255的ip都可访问主服务器,正式环境配置指定从服务器ip mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql>show

MySql实现主从热备和读写分离

这一生的挚爱 提交于 2019-11-27 06:17:11
1、主从配置需要注意的地方 1、主DB server和从DB server数据库的版本一致 2、主DB server和从DB server数据库数据一致[ 这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录] 3、主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一 本次测试环境在windows8.1下,mysql版本是5.7.18 教程开始: 第一步,做基本操作 1.) 在主(master)数据库上执行 select version(); 查看mysql版本号,在从(slave)数据库上执行 select version(); 查看mysql版本号,看是否是一致的! 2.) 在主(master)数据库上执行 show variables like 'log_%'; 查看主(master)是否开启binlog 。看log_bin 这一栏是不是ON (ON代表开启)如果没有开启就开启,开启方法如下: 找到"C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" 在my.ini的 [mysqld]下 添加一个binlog配置就可以了(注意一定要加在[mysqld]下,如果加在[mysqld_safe]或其他位置下是不行的)如下: log_bin=master