mysql集群

主从复制系列B

有些话、适合烂在心里 提交于 2019-12-02 00:40:28
在windows下配置的,后面会在Linux下配置进行测试,需要配置mysql数据库同步的朋友可以参考下。 1.在主数据库服务器为从服务器添加一个拥有权限访问主库的用户: GRANT REPLICATION SLAVE ON *.* TO ' test'@'%' IDENTIFIED BY 'test'; (%表示允许所有IP,可设置指定从服务器IP) 添加用户后: 可在从服务器上用mysql -h127.0.0.1 -utest -ptest; 来测试是否有权限访问主数据库 2.在主据库配置文件加上: #master config server-id = 1 log-bin = mysql-bin 3.在从服务器数据库配置文件: server-id = 2 master-host = 10.0.0.199 master-user = test master-password = test replicate-do-db = test master-port = 3306 log-bin = mysql-bin 如果你的一切配置顺利 你在从服务器上输入命令:show slave status\G 成功情况: Slave_IO_Running:yes Slave_SQL_Running:yes 在主服务器上输入show master status 那么,恭喜,主从数据库配置OK

第10周重点

和自甴很熟 提交于 2019-12-01 23:53:51
11.25 事物隔离级别 事物日志redo undo 事物锁 begin; update 事物日志性能优化 innodb_flush_log_at_trx_commit=0|1|2|3 innodb事务日志相关配置; show variables like '%innodb_log%'; 通用日志 通用日志:记录对数据库的通用操作,包括错误的SQL语句 通用日志可以保存在:file(默认值)或 table 通用日志相关设置 general_log=ON|OFF general_log_file=HOSTNAME.log log_output=TABLE|FILE|NONE 慢查询(重点) slow_query_log=on|off show profile for query 2; long_query_time=N; set global log_queries_not_using_indexes=ON; 二进制日志(重点) 记录导致数据改变或潜在导致数据改变的SQL语句 记录已提交的日志 不依赖于存储引擎类型 功能:通过“重放”日志文件中的事件来生成数据副本 注意:建议二进制日志和数据文件分开存放 二进制日志记录三种格式; 基于“语句”记录:statement,记录语句,默认模式 基于“行”记录:row,记录数据,日志量较大 (可恢复数据) 混合模式:mixed,

Canal 与 Kafka 集成安装与配置

不想你离开。 提交于 2019-12-01 23:49:06
Canal 与 Kafka 集成安装与配置 vim 编辑中 >>> 后为列出原内容其后紧接的 <<< 行为对其的更改,没有前置符号的表示新添 主机环境 CentOS 7.6 内存至少 1.5G,否则服务会启动不起来 软件版本 MySQL 5.7.28 OpenJDK 8 Zookeeper 3.5.6-bin Kafka 2.12(Scala)-2.3.0 Canal deployer-1.1.4 MySQL 安装 采用从官方源直接安装的方式 添加 MySQL 5.7 官方源 rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 更新源 yum -y update 安装 MySQL 5.7 yum -y install mysql-community-server 添加 Canal 所需 MySQL 配置 vim /etc/my.cnf [mysqld] 下新添配置 log-bin=mysql-bin # 开启 binlog binlog-format=ROW # 选择 ROW 模式 server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复 启动 MySQL systemctl start mysqld 查看状态

百万级别数据,数据库Mysql,Mongodb,Hbase如何选择?

一个人想着一个人 提交于 2019-12-01 21:30:09
  情况说明: 现在需要做一个数据存储,500w左右的数据,日后每天大约产生5w条左右的数据。想把这些数据存储起来,供日后的数据分析用?使用上面说的三种数据库中的哪中比较好?是否有必要建立集群? 个人看法是:从长远角度看,由于单台机器的性能瓶颈,后期肯定要做集群,单纯的做复制最终也无法缓解单台master上读的负担。因此,使用mysql的话会使用cluser。但是了解到mysql的cluser要用好的化还要做负载均衡,而mysql的均衡器是第三方的,无法很好的与mysql整合。使用mongodb的自动分片集群能很好的解决这个问题,而且它的读写性能也快。Hbase提供了大数据存储的解决方案。 回到我问题,最终是要在大数据的基础上做数据分析,虽然mongodb也能与Mapreduce整合,但想必Hbase做这一块会更有优势。 我们的需求是做一个数据仓库,不是线上数据,即是OLAP。数据来源是很多的线上数据库(我们用的是mysql),每隔一段时间会同步数据过来(大概是几天的样子)。这些数据将用于日后的数据分析。因此,对实时性要求不是很高。 答案: 百万级的数据, 无论侧重OLTP还是OLAP,当然就是MySql了。 过亿级的数据 ,侧重OLTP可以继续Mysql,侧重OLAP,就要分场景考虑了。 实时计算场景 :强调实时性,常用于实时性要求较高的地方,可以选择Storm; 批处理计算场景

Using ClickHouse like MySQL by ProxySQL

心已入冬 提交于 2019-12-01 18:46:21
用户访问ClickHouse,需要默认的客户端clickhouse-client,但是这个工具不够友好: 需要额外安装,并且使用上,不是那么nice clickhouse-client其实是clickhouse的软连接,即要么全装,要么不用 啥最普及啊? 答:MySQL 基本所有的服务器都装了mysql,注意,这里指的是mysql-client,就是那个让你用命令行连接到MySQL服务的那个命令 ProxySQL是众多MySQL中间件中的佼佼者,一直被Percona推崇,最近他们也放出了支持ClickHouse的版本 因此,今天的话题就是: ClickHouse+ProxySQL = Using ClickHouse like MySQL Install https://github.com/sysown/proxysql/releases/tag/v1.4.3 注意下载ClickHouse打头的包 安装依赖 1 yum -y install perl-DBD-MySQL 注意 支持ClickHouse的ProxySQL版本,只支持Ubuntu 16, Debian 9, CentOS 7, and Fedora 24,其他版本的不要往下看了 启动ProxySQL 12345678910 # 默认配置文件是这个:/etc/proxysql.cnf # 默认是没有这个数据目录的

mysql集群(二)

吃可爱长大的小学妹 提交于 2019-12-01 17:36:47
4、mysql-proxy完成负载均衡与读写分离 1、基于程序代码内部实现 在代码中对select操作分发到从库;其它操作由主库执行;这类方法也是目前生产环境应用最广泛,知名的如DISCUZ X2。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支。缺点是需要开发人员来实现,运维人员无从下手。 2、基于中间代理层实现 代理一般是位于客户端和服务器之间,代理服务器接到客户端请求后通过判断然后转发到后端数据库。在这有两个代表性程序 mysql-proxy:mysql-proxy为mysql开源项目,通过其自带的lua脚本进行sql判断,虽然是mysql官方产品,但是mysql官方并不建议将mysql-proxy用到生产环境。 amoeba:由陈思儒开发,作者曾就职于阿里巴巴,现就职于盛大。该程序由java语言进行开发,目前只听说阿里巴巴将其用于生产环境。另外,此项目严重缺少维护和推广(作者有个官方博客,很多用户反馈的问题发现作者不理睬) 经过上述简单的比较,通过程序代码实现mysql读写分离自然是一个不错的选择。但是并不是所有的应用都适合在程序代码中实现读写分离,像大型SNS、 B2C这类应用可以在代码中实现,因为这样对程序代码本身改动较小;像一些大型复杂的java应用,这种类型的应用在代码中实现对代码改动就较大了。所 以,像这种应用一般就会考虑使用代理层来实现。

MySQL数据库分库分表策略

不打扰是莪最后的温柔 提交于 2019-12-01 16:40:18
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。 水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失; 负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能性; 集群方案:解决了数据库宕机带来的单点数据库不能访问的问题; 读写分离策略:最大限度了提高了应用中读取数据的速度和并发量; 第2章 基本原理和概念 什么是数据切分 "Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏中。"Sharding" 姑且称之为"分片"。Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案, 其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。 通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由或者table路由规则找到需要查询的具体的DB或者table,以进行Query操作。“sharding”通常是指“水平切分”

NoSQL开篇——为什么要使用NoSQL

风格不统一 提交于 2019-12-01 15:52:44
http://nosql-database.org/ NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面。今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会。 非常荣幸能受邀在InfoQ开辟这样一个关于NoSQL的专栏,InfoQ是我非常尊重的一家技术媒体,同时我也希望借助InfoQ,在国内推动NoSQL的发展,希望跟我一样有兴趣的朋友加入进来。这次的NoSQL专栏系列将先整体介绍NoSQL,然后介绍如何把NoSQL运用到自己的项目中合适的场景中,还会适当地分析一些成功案例,希望有成功使用NoSQL经验的朋友给我提供一些线索和信息。 NoSQL 的分类 NoSQL仅仅是一个概念,NoSQL数据库根据数据的存储模型和特点分为很多种类。 类型 部分代表 特点 列存储 Hbase Cassandra Hypertable 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 文档存储 MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 key-value存储 Tokyo Cabinet

MySQL GTIDS复制

雨燕双飞 提交于 2019-12-01 13:18:58
1.概述 从MYSQL5.6 开始,mysql开始支持GTID复制。 基于日志点复制的缺点: 从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致。 基于GTID复制: 1.从服务器会告诉主服务器已执行的事务的GTID值。 2.主库会告诉从哪些GTID事务没有被执行。 同一个事务在指定的从库执行一次。 什么是GTID GTID即全局事务ID,器保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的ID. GTID=source_id:transaction_id source_id:是主库的server UUID,在数据目录的auto.cnf 文件中。 transaction_id: 从1开始的一个序列。 2.基于GTID复制的步骤 1.在主DB服务器上建立复制帐号。 在主库执行命令 create user repl@'192.168.31.%' identified by 'repl'; grant all privileges on *.* to repl@'192.168.31.%' identified by 'repl'; 2.配置主数据库服务器 修改 /etc/my.cnf log_bin =on server_id=1001 gtid-mode=on enforce_gtid_consistency:强制事务一致性,保证事务的安全

MySQL基于Amoeba实现读写分离

瘦欲@ 提交于 2019-12-01 12:31:12
在实际的生活环境中,如果对数据库的读和写都在同一个数据库服务中操作,无论是在安全性,高可用还是高并发等各个方面都不能完全满足实际需求的,因此一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提升数据的高并发负载能力这样的方案来进行部署。 读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。 目前较为常见的MySQL读写分离方案有两种: 1.基于程序代码内部实现: 根据select,insert进行路由分类,是目前生产环境应用最广泛的,优点是性能好,因为在代码中实现,不需要增加额外的设备作为硬件开支,缺点是需要开发人员来实现,运维人员无从下手。 2.基于中间代码层实现: 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库,代表性程序: ( 1 ) mysql-proxy 为 mysql 开发早期开源项目,通过其自带的 lua 脚本进行 SQL 判断,虽然是 mysql 的官方产品,但是 mysql 官方不建议将其应用到生产环境。 ( 2 ) Amoeba (变形虫)由陈思儒开发,曾就职与阿里巴巴,该程序由 java 语言进行开发,阿里巴巴将其应用于生成环境,它不支持事物和存储过程。 通过程序代码实现 mysql