mysql读写分离

CentOS7.3 部署两个实例 MySQL

拈花ヽ惹草 提交于 2020-04-07 17:12:39
描述 在同一台服务器中安装两个MySQL数据库。目的是为了配置主从分离,所以需要多安装一台用于从数据库。使用 mysqld_multi 启动多个实例。 mysql官网下载 需要安装的版本。 下载与安装 在 /usr/local/ 下创建 mysqltemp (用于临时下载数据库安装包)。 [root@localhost local]# cd /usr/local [root@localhost local]# mkdir mysqltemp [root@localhost local]# cd mysqltemp [root@localhost mysql3307]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.28-linux-glibc2.12-i686.tar.gz [root@localhost mysql3307]# tar -xvf mysql-5.7.28-linux-glibc2.12-i686.tar.gz // 重命名解压的文件为mysql,并移动mysql到/usr/local/mysql [root@localhost mysql3307]# mv mysql-5.7.28-linux-glibc2.12-i686 /usr/local/mysql 下载、解压和重命名之后,完整路径是

CENTOS7 yum安装mysql主从

て烟熏妆下的殇ゞ 提交于 2020-03-26 10:03:59
CENTOS7 yum安装mysql主从 前期环境 192.168.1.8 master 192.168.1.9 slave 关闭防火墙 systemctl stop firewalld setenforce 0 安装mysql yum -y install mariadb mariadb-server 编辑 master my.conf server-id=1 log-bin=mysql-bin 启动数据库 systemctl start mariadb 进入数据库 mysql 进行本地创建 grant all on *.* to 'slave'@'192.168.1.15' identified by '123'; flush privileges; show master status; +------------------+----------+--------------+---------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+---------------------------------------------+ | mysql

【MySQL】2.MySQL主从同步

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-25 21:24:19
一、MySQL主从原理 1、概念 MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。 2、MySQL主从复制涉及的三个线程 主节点 binary log dump 线程 :当从节点连接主节点时,主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发动给从节点之前,锁会被释放。 从节点I/O线程 :当从节点上执行`start slave`命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点binlog dump 进程发来的更新之后,保存在本地relay-log中。 从节点SQL线程 :SQL线程负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。 对于每一个主从连接,都需要三个进程来完成。当主节点有多个从节点时,主节点会为每一个当前连接的从节点建一个binary log dump 进程,而每个从节点都有自己的I/O进程,SQL进程

数据库集群 MySQL主从复制

纵饮孤独 提交于 2020-03-25 11:42:58
MySQL主从复制 本节内容我们联系使用 MySQL的主从复制功能配置Master和Slave节点,验证数据MySQL的数据同步功能。 因为要使用多个 MySQL数据库,所以不建议在电脑上安装多个MySQL数据库,最好的办法是使用多个绿色版的MySQL数据库。 MariaDB数据库是MySQL创始人Michael 创建的 MySQL重要分支。由于Oracle 持有了 MySQL的版权,MySQL存在闭源的隐患,加之Oracle对MySQL的更新不太重视,所以业界许多公司纷纷采用了完全开源的MariaDB数据库。MariaDB建立在MySQL5.5版本上,所以MariaDB与MySQL的兼容性非常好,并且性能上也做出了很大的优化,社区活跃,软件版本更新迅速,包括谷歌、Facebook等企业纷纷改用MariaDB数据库。 Master数据库 首先把安装到C:\Program Files 里面的 MariaDB目录复制一份,放置的路径没有要求,但是尽量把数据库放在C盘或者D盘上面,改名DB1。因为这两个盘符的空间处在硬盘磁碟的外圈,所以线速度很快,数据读写速度也很理想。 DB1将要当做主库使用,创建my.ini文件,然后编辑文件内容。 [mysqld] # 数据库字符集 character_set_server = utf8 #MySQL 主机名 ( 只可以是数字 ) server_id

cloud db for mysql—readonly instance 只读实例

送分小仙女□ 提交于 2020-03-24 03:16:05
在常见的互联网业务中,数据库读写比例通常为 4:1 至 10:1 之间。在这类业务场景下,数据库的读负载远高于写负载,在遇到因为数据库读取压力大导致性能瓶颈的一个常见的解决方案就是增加只读实例(仅提供读功能)。用户只需要将业务中的读请求分担到只读实例上,就可以缓解主库查询压力,同时也可以把一些 OLAP 的分析查询放到另外的只读实例上,减小复杂统计查询对主库的冲击。只读实例无法单独存在,必须隶属于某个数据库主实例(主实例是可读可写),它的唯一数据来源是从主实例同步数据。只读实例产品架构为 单节点高IO版(采用单个物理节点部署,底层存储使用本地 PCI-e SSD 硬盘)。 只读实例需要通过单独的 IP地址、PORT端口来访问,目前暂不支持自动分离读请求与写请求。如图所示,创建了两个只读实例readonly11和readonly12,每个只读实例都属于ro_group_159497只读实例组(带有负载均衡功能的只读实例组,组内有多个只读实例,可将用户读请求量均匀分配到组内的每个只读实例上, 只读实例组会对外提供IP地址、PORT端口供访问数据库)。 只读实例的原理是采用 MySQL binlog 主从同步功能,将主实例(源数据库)的更改同步到所有只读实例中。一个主实例最多可以创建 5 个只读实例。 来源: 51CTO 作者: songlihuan 链接: https://blog

为什么数据库读写分离可以提高性能

我与影子孤独终老i 提交于 2020-03-23 17:59:32
3 月,跳不动了?>>> 虽然知道处理大数据量时,数据库要做读写分离,但是为什么读写分离可以提高性能呢? 下面是搜来的一些解释,看看再说! 一 什么是读写分离 MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中 的从数据库。 当然,主服务器也可以提供查询服务。使用读写分离最大的作用无非是环境服务器压力。可以看下这张图: 二 读写分离的好处 1.增加冗余 2.增加了机器的处理能力 3.对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上的延迟。 三 读写分离提高性能之原因 1.物理服务器增加,负荷增加 2.主从只负责各自的写和读,极大程度的缓解X锁和S锁争用 3.从库可配置myisam引擎,提升查询性能以及节约系统开销 4.从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的 5.读写分离适用与读远大于写的场景,如果只有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能不高。

如果有一个特别大的访问量到数据库上,怎么做优化?主从复制、读写分离

余生颓废 提交于 2020-03-23 17:07:34
第一个就是使用优化查询的方法。这个在前期的内容中有具体说明,这里不再做说明。 第二、这里简要说明一个以下几个方法:    主从复制、读写分离、负载均衡    目前,大部分的主流关系型数据库都提供了主从复制的功能,通过配置两台(或多台)数据库的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站可以利用数据库的这一功能, 实现数据库的读写分离,从而改善数据库的负载压力。 一个系统的读操作远远多于其写操作,因此写操作发向master,读操作发向slaves进行操作(简单的轮循算法来决定使用哪个slave)。   利用数据库的读写分离,web服务器在写数据的时候,访问著数据库(Master),主数据库通过主从复制机制将数据更新同步到从数据库(Slave),这样web服务器读数据的时候,就可以通过从数据库获得数据。这一方案使得在大量读操作的web应用可以轻松地读取数据,而主数据库也只会承受少量的写入操作,还可以实现数据热备份,可谓是一举两得的方案。 1.复制的基本原则    MySQL复制是异步的且串行化的;   每个Slave只有一个Master;   每个Slave只有一个唯一的服务器ID;   每个Master可以有多个Slave; 2.一主一从常见配置:   MySQL版本一致且后台以服务运行;   主从都配置在[mysqld]结点下,都是小写,主机修改my

Mysql Replication配置

好久不见. 提交于 2020-03-22 02:49:05
使用场景:mysql的实时备份或者读写分离。 环境: vmware虚拟机,并且安装了linux系统(我用的是centos7),linux上安装了mysql 第一台mysql安装好了之后,将当前linux系统克隆一份。 我的两个linux系统的IP地址分别是128,129; 128为master,129为slave; 两台服务器上的mysql配置当前完全一样。 克隆过来之后,需要把另一个mysql的(/ect/my.cnf)server_id改掉。 这里我把128上的mysql的server_id改成128; 129机子上的mysql的server_id改成129; 修改好配置文件后,启动两台机子上的mysql 启动: /etc/init.d/mysqld start 重启: /etc/init.d/mysqld restart 锁定master flush tables with read lock; 查看master状态 show master status 记住这个信息,后面配置slave信息的时候,会用到; 配置slave 登录129服务器的mysql mysql -uroot -pgys 关闭slave 给slave配置master 这里的master_log_file='guoyansi128.000004',master_log_pos=120

MySQL主从复制与读写分离

自作多情 提交于 2020-03-18 18:41:05
MySQL主从复制与读写分离的实现 转载 2013年01月17日 18:20:12 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

mysql读写分离

北慕城南 提交于 2020-03-18 18:34:51
环境介绍: amoeba 服务器:   192.168.3.99 master mysql 服务器: 192.168.3.100 slave1 mysql 服务器: 192.168.3.101 slave2 mysql 服务器: 192.168.3.102 客户端: 192.168.3.150 在 192.168.3.99 ( amoeba )配置 chmod +x jdk-6u14-linux-x64.bin ./jdk-6u14-linux-x64.bin mv jdk1.6.0_14 /usr/local/jdk1.6 vim /etc/profile.d/jdk.sh #!/bin/bash export JAVA_HOME=/usr/local/jdk1.6 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin export AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin source /etc/profile.d/jdk.sh mkdir /usr/local/amoeba tar xf