mysql读写分离

mysql的主从复制1

不打扰是莪最后的温柔 提交于 2020-01-01 01:27:42
1、用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlog日志(设置log-bin参数,去掉#) 主从server-id不同 从库服务器能连通主库 2、主从原理 mysql主从复制原理 从库生成两个线程,一个I/O线程,一个SQL线程; i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中; 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog; SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致; 3、问题及解决方法 mysql主从复制存在的问题: 主库宕机后,数据可能丢失 从库只有一个sql Thread,主库写压力大,复制很可能延时 解决方法: 半同步复制---解决数据丢失的问题 并行复制----解决从库复制延迟的问题 4、操作步骤 >show master status 查看字节数 1. 主库172.16.50.34 [root@master ~]# vim /etc/my.cnf log-bin=master-bin server-id = 34 [root@master ~]# service mysqld start [root@master ~]

mysql 集群 数据同步

扶醉桌前 提交于 2020-01-01 01:08:02
mysql集群配置在网站负载均衡中是必不可少的; 首先说下我个人准备的负载均衡方式;   1、通过nginx方向代理来将服务器压力分散到各个服务器上;   2、每个服务器中代码逻辑一样;   3、通过使用redis缓存来保存内存中数据,使用redis同步功能来同步不同服务器内存中的数据;   4、在通过mysql的集群配置来实现数据库数据同步; 这里我整理了几种数据同步方式; 一:主从服务器同步;   顾名思义:主服务器负责数据的增删改查,从服务器负责同步数据;   主服务器建立二进制文件;每产生语句变化或磁盘变化写入日至;   从服务器读主服务二进制日至;将读到的日至转成从服务的relaylog,从服务读取relaylog同步主主服务器;   主服务器建立授权复制账号;   从服务器利用账号来监听主服务器;   步骤:   1、首先需要至少两台服务器,我这边118.xxx.xxx.1(主),118.xxx.xxx.2(从)两台服务器;两台搭建mysql方式不同,一台安装mysql,和mysql-server;一台通过直接安装mariadb方式;没什么影响;   2、主服务器修改/etc/my.cnf;     #在[mysqld]下添加,建立二进制日至#server-id一般用服务器后一位server-id=1 log-binary=mysql-bin #监听变化方式

MySQL入门(四)

陌路散爱 提交于 2020-01-01 00:15:24
1. 集群搭建之主从复制 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。 1.1 主服务器的配置 1.1.1 第一步:修改my.conf文件: 在[mysqld]段下添加: #启用二进制日志 log-bin=mysql-bin #服务器唯一ID,一般取IP最后一段 server-id=133 1.1.2 第二步:重启mysql服务 service mysqld restart 1.1.3 第三步:建立帐户并授权slave mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456'; mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456'; #一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。 刷新权限 mysql> FLUSH PRIVILEGES; 查看mysql现在有哪些用户 mysql>select user,host from mysql.user; 1.1.4 第四步:查询master的状态

hibernate中dialect的讲解

*爱你&永不变心* 提交于 2019-12-31 07:45:40
RDBMS方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL org.hibernate.dialect.PostgreSQLDialect MySQL org.hibernate.dialect.MySQLDialect MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect Oracle (any version) org.hibernate.dialect.OracleDialect Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect Sybase org.hibernate.dialect.SybaseDialect Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect Microsoft SQL Server org.hibernate

MHA+maxscale实现数据库集群的高可用和读写分离-简易版

戏子无情 提交于 2019-12-30 22:48:01
服务器: manager—MHA的管理节点,负责监控主从集群状态并进行故障迁移 Master–主节点 Slave1 Slave2 准备软件:mysql5.7、mha-manager、mha-node(最好rpm包)、低版本maxscale 提前做好ssh互信 1.所有服务器安装依赖包:防止报错都安装 Yum -y install epel-* 安装扩展源(防止自带的yum源不足) yum install -y perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager 2.所有服务器安装mysql5.7到/usr/local/mysql下 mysql5.7安装注意事项:需要初始化生成原始密码,备份并删除原始my.cnf文件防止后期soket和pid报错 groupadd mysql useradd -r -g mysql mysql mkdir /usr/local/mysql/data -p chown -R mysql:mysql /usr/local/mysql/ chmod -R 755 /usr/local/mysql/ 某个版本之后这个步骤是下面这样

Redis学习一:Nosql入门和概述

一世执手 提交于 2019-12-30 01:38:56
现在Redis越来越火,为了适应技术的发展,开始学习一下Redis,在学习Redis之前先学习一下Nosql。 第一部分:入门概述 1.1 互联网时代背景下大机遇,为什么用nosql 1.1.1 单机Mysql的美好年代(好几年前) 当时的业务很相对简单,就是JSP--->Action---->Service---->DAO----->数据库,数据库也就是一个实例而已,无论是Mysql还是Oracle。把这五层缩减为三层的话便是:应用层------>DAO层------>Mysql实例。 以前一个网站的访问量一般不大,用单个数据库可以轻松应付。但是随着时代的发展,上述数据存储遇到了存储的瓶颈: 1) 数据量的总大小,一个机器放不下时(以Mysql为例,单表存储大概三百多万的数据的时候DBA就该进行预警并优化分割了) 2) 数据的索引(B+Tree),一个机器的内存放不下时(众所周知,为表建立索引也是需要消耗内存的,当我们所建立的索引内存盛不下时) 3) 访问量(读写混合)一个实例不能承受 1.1.2 Memcached(缓存)+MySQL+垂直拆分 后来,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引

mysql 中间件学习

a 夏天 提交于 2019-12-28 03:36:48
1、为什么用数据库中间件 2、数据库中间件: 3、mycat功能 一、单主单从读写分离 二、双主双从读写分离 mycat功能 读写分离 数据分片 垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表) 多数据源整合 3、mycat原理: 5、mycat安装 方式一 解压后即可使用 方式二 解压后编译安装 1、server.xml配置文件修改: TESTDB : 逻辑库 2、schema.xml配置文件修改: 来源: CSDN 作者: qq_41134008 链接: https://blog.csdn.net/qq_41134008/article/details/103692711

如何利用HAProxy 代理 MySQL Master-Slave Replication

拈花ヽ惹草 提交于 2019-12-27 18:09:04
背景 我有一个MySQL Master-Slave Replication, 想要通过HAProxy代理, 做读写分离. 写流量给到Master 节点, 读流量给到Slave 节点. 首先我应该由一个HAProxy的配置, 我想应该这样写(伪配置): listen mysql bind *:3316 mode tcp ... server 192.168.1.111 192.168.1.111:3306 check server 192.168.1.112 192.168.1.112:3306 check server 192.168.1.113 192.168.1.113:3306 check 很明显, 这么写仅仅只实现了流量的分发, 但并不能实现我的需求: 把写流量给Master, 读流量给Slave 节点. 那么问题来了,首先我要能够识别Master Slave 节点, 才能有接下来的流量分离. HAProxy有个配置项叫做 mysql-check . 但是这里并不能用它去做Master-Slave的检测,因为这个option只提供存活检测. 只要能够连上,就代表这个mysql后端是Health OK的. 这还是不符合我的需求. MySQL 如果能够通过tcp-check 检测是Master还是Slave就好了. 既然这样, 写一个TCP-check Wrapper

MySQL:主从复制原理

北战南征 提交于 2019-12-25 10:46:12
1、主从复制概述 MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群架构的基础。它通过将一台主机的数据复制到其他一台或多台主机上,并重新应用relay log中的SQL语句来实现复制功能。MySQL支持单向、双向、链式级联、异步复制,5.5版本之后加入的半同步复制,5.6版本之后的GTID复制,MySQL5.7的多源复制、并行复制、loss-less复制。 1.1 常见的几种主从架构 1)单向主从模式:Master ——> Slave 2)双向主从模式:Master <====> Master 3)级联主从模式:Master ——> Slave1 ——> Slave2 4)一主多从模式 5)多主一从模式 1.2 主从复制功能 1)实时灾备 2)读写分离 3)高可用 4)从库数据统计 5)从库数据备份 6)平滑升级 1.3 主从复制原理 主从同步过程中主服务器有一个工作线程I/O dump thread,从服务器有两个工作线程I/O thread和SQL thread。 主库把外界接收的SQL请求记录到自己的binlog日志中,从库的I/O thread去请求主库的binlog日志,并将binlog日志写到中继日志中,然后从库重做中继日志的SQL语句。主库通过I/O dump thread给从库I/O thread传送binlog日志。 原理图 !

mysql主从复制

旧城冷巷雨未停 提交于 2019-12-25 04:57:25
定义 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。 使用主从同步的好处: 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。 提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能。 生产一般用主从复制做什么? 备份数据 读写分离 主从同步的机制 Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。 在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。 每一个从服务器会记录关于二进制日志的信息