mysql主从配置

mysql proxy 读写分离

限于喜欢 提交于 2020-03-18 14:23:26
环境描述: 操作系统:CentOS6.5 32位 主服务器Master:192.168.179.146 从服务器Slave:192.168.179.147 调度服务器MySQL-Proxy:192.168.179.142 由于电脑配置不行,安装了三台虚拟机,就卡死了,只能将就一下,由于是一主 一从,所以,导致读写都在master上,有机会,再弄两台slave来测试 一.mysql主从复制,参考:http://www.cnblogs.com/lin3615/p/5679828.html 二、mysql-proxy实现读写分离 1、安装mysql-proxy 实现读写分离是有lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装 下载:http://dev.mysql.com/downloads/mysql-proxy/ 一定要下载对应的版本 tar zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz mv mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit /usr/local/mysql-proxy 2、配置mysql-proxy,创建主配置文件 cd /usr/local/mysql-proxy mkdir lua #创建脚本存放目录 mkdir logs #创建日志目录

MySql的读写分离

谁都会走 提交于 2020-03-18 11:00:06
数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群。而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从;业务服务器把数据写到主数据库中,读操作都去从库读;主库会同步数据到从库,保证数据的一致性。 主从集群 这种集群方式,就是将访问的压力从主库转移到从库,单机的数据库不能支撑并发读写的时候,而且读的请求很多的情况下就适合数据库集群。如果写的操作很多的话,那就不适合这种集群方式,因为写的时候是写入主库,主库的压力还是没有变化,同时同步到从库也需要消耗资源。 单机的时候,一般数据库优化就是加索引,但是加了索引对查询有优化,但是写入的时候会有影响,因为写入的数据库不会更新索引。所以在主从数据库中,可以单独的对读库(从数据库)做索引,而写库(主数据库)可以减少缩影而提高写的效率。 但是主从数据库中需要注意: 主从同步延迟、分配机制的考虑 主从同步延迟 二次读取 一般操作是,在从库读取数据时,没有读到数据,就去主库进行数据读取。但是这种操作还是将读的压力返还给主库,如果有恶意的攻击,主库就爆了。 一般情况下,通过对数据库访问的API进行封装就能实现这个功能,业务之间没有耦合。 写了之后的马上读操作操作主库 在写了数据后,立马读操作就去访问主库,之后的读操作访问从库,这种业务上会有高度耦合。 根据业务,将重要的业务数据的读写都放在主库

Amazon EC2安装mysql多实例并配置主从复制

若如初见. 提交于 2020-03-18 08:04:44
1、MySQL安装: EC2直接使用yum安装mysql非常方便: yum install mysql mysql-server mysql-libs 此处安装了三个包 完事之后能够直接使用 service mysqld start 启动mysql服务 改动root密码: mysqladmin -u root -p password “root” 2、使用mysqld_multi安装多实例mysql: vim /etc/my.cnf 加入实例的配置信息 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 以上是默认的配置信息,在mysqld下加入例如以下配置: #开启慢查询日志, 记录查询过长的 sql 语句。以便于优化 log_slow_queries=/var/log/mysql/mysql-slow.log #开启 bin-log 日志,不用log-bin=xxx。试验时这样子无法启动mysql服务,不知为何 log-bin #分配serverid。不要和以下的从服务器冲突就可以 server-id=1

mysql主从复制架构配置

a 夏天 提交于 2020-03-18 08:04:33
第一个mysql 1、下载mysql,解压,移动解压后的目录到指定目录下。 如:mv /usr/local/src/mysql-5.1.. /usr/local/mysql 创建mysql用户, useradd -s /sbin/nologin mysql 创建数据存放目录/data/mysql 并指定拥有者所属组:chown -R mysql /data/mysql 2、拷备配置文件,启动脚本到指定目录下 cp my.cnf到/etc/my.cnf cp my.server到/etc/init.d/mysqld 3、编辑启动脚本: vim /etc/init.d/mysqld 指定datadir和basedir 如: basedir=/usr/local/mysql datadir=/data/mysql 进入安装目录,初始化 ./script/mysql_install_db --user=mysql --datadir=/data/mysql 4、启动mysql服务:/etc/init.d/mysqld start 第二个mysql 1、拷备mysql安装目录 : cp -r /usr/local/mysql /usr/local/mysql2 2、 拷备配置文件,启动脚本到指定目录下 cp /etc/my.cnf到/usr/local/mysql2/my.cnf cp

mysql的多实例安装

余生颓废 提交于 2020-03-18 08:04:17
单机多实例据说可以最大程度提高硬件使用,谁知道呢,但是以前的公司喜欢这样搞,我最近也在学习复制什么的,电脑搞不起两台虚拟机,刚好单机多实例可以解救我。下面就说说步骤。 承上文http://www.cnblogs.com/wingsless/p/4002806.html,我已经安装好了MySQL,不过这个是单实例的,要更改也可以,但是担心会出现问题,于是我将下面的东西删掉: 1 #rm -f /etc/init.dmysql 2 $rm -f /home/mysql/data 建立这么几个目录: $mkdir -p /home/mysql/mydata/data1/binlog /home/mysql/mydata/data1/relay_log /home/mysql/mydata/data1/socket $mkdir -p /home/mysql/mydata/data2/binlog /home/mysql/mydata/data2/relay_log /home/mysql/mydata/data2/socket 接下来就可以将$MYSQL_HOME/suppuort-files/my-default.cnf复制到/etc下: #cp suppuort-files/my-default.cnf /etc/my.cnf 修改这个文件,增加下面的内容: [mysqld

centos7单机上搭建mysql5.7一主多从模式

99封情书 提交于 2020-03-18 08:03:47
虽然只是一名撸码小哥,但是毕竟常常和数据库要打交道,免不了多少得知道些数据库的配置和架构只是,所以自己参考官方文档在单机上搭了个mysql的主从,当作笔记,避免年纪大了不记事儿。 本文只写如何搭建主从的结构,不涉及原理和应用场景,内容浅显,不喜勿喷。 基本环境: centos7 x64 mysql 5.7.20(压缩版) 下载mysql 5.7.20(去官网下载了传到linux或直接wget),如图 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz 添加用户组mysql: groupadd mysql 添加用户mysql且该用户不能登陆: useradd -g mysql mysql -s /bin/false 创建用户组和用户非强制性要求,可以直接用root搞,不过还是养成良好习惯,不同用户干不同事儿,免得一直用着root为所欲为,稍微手滑一切go die... 新建一个文件夹,待下载完成后解压到里面,并复制两份,做一主两从用,新建data目录,conf目录,logs目录,sock目录(建立这四个目录非强制要求,这里仅仅是为了区分各文件,便于管理),如图: 进入conf目录,新建3306.cnf,3307.cnf,3308.cnf,如图:

sql语句应考虑哪些安全性?

人走茶凉 提交于 2020-03-18 08:02:58
简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析? (1)尽量选择较小的列; (2)将where中用的比较频繁的字段建立索引; (3)select中避免使用*; (4)避免在索引列上使用计算、not in和<>等操作; (5)当只需要一行数据时候使用limit1; (6)保证单表数据不超过200w,实时分割表; 针对查询较慢的语句,可以使用explain来分析该语句具体的执行情况。 sql语句应考虑哪些安全性? (1)少使用root账户,应该为不同的动作分配不同的账户; (2)sql执行出错后,不能把数据库中显示的出错信息,直接展示给用户。防止泄露服务器和数据库相关信息; (3)防止sql注入,对特殊字符进行转义、过滤或者使用预编译的sql语句绑定变量 接下来重点说下Mysql半同步复制, 从MySQL5.5开始,MySQL以插件的形式支持半同步复制 。先来区别下mysql几个同步模式概念: 异步复制(Asynchronous replication) MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。 全同步复制(Fully synchronous

MySQL半同步复制

大城市里の小女人 提交于 2020-03-18 07:55:35
l 安装配置: 略 l 机器分布 IP 作用 用途 192.168.15.3 master 主库 192.168.15.4 Slave1 备库 192.168.15.5 Slave2 备库 l 基本的MySQL主从配置 MySQL复制过程分成三步: master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events; slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的 Master配置 1)分配复制权限 主库和从库均需要执行 mysql> grant replication client,replication slave on *.* to 'replck1'@'192.168.15.%' identified by "replck1#!123"; mysql> flush privileges; 2)将master中的数据dump到slave1 slave2中 /opt/app/mysql/bin/mysqldump -uroot -p'' --opt --default-character-set=utf8 \ --triggers -R --master-data=2

MySQL 5.7 深度解析: 半同步复制技术

不问归期 提交于 2020-03-18 07:52:56
复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史。 MySQL的复制分为四种: 普通的replication,异步同步。 搭建简单,使用非常广泛,从mysql诞生之初,就产生了这种架构,性能非常好,可谓非常成熟。 但是这种架构数据是异步的,所以有丢失数据库的风险。 semi-sync replication,半同步。性能,功能都介于异步和全同步中间。从mysql5.5开始诞生,目的是为了折中上述两种架构的性能以及优缺点。 sync replication,全同步。目前官方5.7基于Group replication的全同步技术处在labs版本,离正式集成已经不远。全同步技术带来了更多的数据一致性保障。相信是未来同步技术一个重要方向,值得期待。 mysql cluster。 基于NDB引擎,搭建也简单,本身也比较稳定,是mysql里面对数据保护最靠谱的架构,也是目前唯一一个数据完全同步的架构,数据零丢失。不过对业务比较挑剔,限制也较多。 半同步复制 我们今天谈论第二种架构。我们知道,普通的replication,即mysql的异步复制,依靠mysql二进制日志也即binary log进行数据复制。比如两台机器,一台主机(master),另外一台是从机(slave)。 正常的复制为:事务一(t1)写入binlog buffer;dumper

mysql主从之半同步复制和lossless无损复制

邮差的信 提交于 2020-03-18 07:52:34
一 MySQL 的三种复制方式 1.1 简介 asynchronous 异步复制 fully synchronous 全同步复制 Semisynchronous 半同步复制 从MySQL5.5 开始,MySQL 以插件的形式支持半同步复制。 1.2 异步复制(Asynchronous replication) MySQL 默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash 掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,将从提升为主,可能导致新主上的数据不完整。 原理:在异步复制中,master 写数据到binlog 且sync,slave request binlog 后写入relay‐log 并flush disk 优点:复制的性能最好 缺点:master 挂掉后,slave 可能会丢失数据 1.3 全同步复制(Fully synchronous replication) 指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。 优点:数据不会丢失 缺点:会阻塞master session,性能太差,非常依赖网络 1.4 半同步复制(Semisynchronous