数据库服务器

如何设计可以动态扩容缩容的分库分表方案

感情迁移 提交于 2019-12-03 10:58:56
停机扩容(不推荐) 这个方案就跟停机迁移一样,步骤几乎一致,唯一的一点就是那个导数的工具,是把现有库表的数据抽出来慢慢倒入到新的库和表里去。但是最好别这么玩儿,有点不太靠谱,因为既然分库分表就说明数据量实在是太大了,可能多达几亿条,甚至几十亿,你这么玩儿,可能会出问题。 从单库单表迁移到分库分表的时候,数据量并不是很大,单表最大也就两三千万。那么你写个工具,多弄几台机器并行跑,1小时数据就导完了。这没有问题。 如果 3 个库 + 12 个表,跑了一段时间了,数据量都 1~2 亿了。光是导 2 亿数据,都要导个几个小时,6 点,刚刚导完数据,还要搞后续的修改配置,重启系统,测试验证,10 点才可以搞完。所以不能这么搞。 优化后的方案 一开始上来就是 32 个库,每个库 32 个表,那么总共是 1024 张表。 我可以告诉各位同学,这个分法,第一,基本上国内的互联网肯定都是够用了,第二,无论是并发支撑还是数据量支撑都没问题。 每个库正常承载的写入并发量是 1000,那么 32 个库就可以承载32 * 1000 = 32000 的写并发,如果每个库承载 1500 的写并发,32 * 1500 = 48000 的写并发,接近 5 万每秒的写入并发,前面再加一个MQ,削峰,每秒写入 MQ 8 万条数据,每秒消费 5 万条数据。 有些除非是国内排名非常靠前的这些公司,他们的最核心的系统的数据库

Mysql双主加Keepalived

点点圈 提交于 2019-12-03 10:52:26
一、 MySQL于keepalived简介* * 前言: 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动。因此,如果是双主或者多主,就会增加mysql入口,增加高可用。不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题。 1.1、 MySQL* * 1.1.1、MySQL主从复制原理 复制分成三步: \1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); \2. slave将master的binary log events拷贝到它的中继日志(relay log); \3. slave重做中继日志中的事件,将改变反映它自己的数据。 下图描述了这一过程: 1.1.2、MySQL双主构建思路 1.两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用; 2.masterA是masterB的主库,masterB又是masterA的主库,它们互为主从; 3.两台主库之间做高可用,可以采用keepalived等方案(使用VIP对外提供服务); 4

mysql+centos7+主从复制

社会主义新天地 提交于 2019-12-03 10:16:44
MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 方法1:yum安装mariadb Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。 第一步:添加 MariaDB yum 仓库 1、首先在 RHEL/CentOS 和 Fedora 操作系统中添加 MariaDB 的 YUM 配置文件 MariaDB.repo 文件。 #编辑创建mariadb.repo仓库文件 vi /etc/yum.repos.d/MariaDB.repo 2、添加repo仓库配置 [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 第二步:在 CentOS 7 中安装 MariaDB 2、当 MariaDB

MySQL查看数据库性能常用命令

你。 提交于 2019-12-03 09:15:43
一、查询服务器状态和配置 列出MySQL服务器运行各种状态值: mysql> show global status; 查询MySQL服务器配置信息语句: mysql> show variables; 二、慢查询 mysql> show variables like '%slow%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | log_slow_queries | ON | | slow_launch_time | 2 | +------------------+-------+ mysql> show global status like '%slow%'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | Slow_launch_threads | 0 | | Slow_queries | 4148 | +---------------------+-------+  配置中打开了记录慢查询,执行时间超过2秒的即为慢查询,系统显示有4148个慢查询,你可以分析慢查询日志,找出有问题的SQL语句,慢查询时间不宜设置过长

SQL Server 默认跟踪(Default Trace)介绍使用

六眼飞鱼酱① 提交于 2019-12-03 06:29:32
背景 当数据库的表、存储过程经常别修改,当这些修改造成BUG的时候,很多开发都不承认是他们干的,那我们有没办法找出谁干的呢?   SQL Server有Default Trace默认跟踪,数据库记录信息到log.trc文件,可以查看trace_event_id,46表示Create对象(Object:Created),47表示Drop对象(Object:Deleted),93表示日志文件自动增长(Log File Auto Grow),164表示Alter对象(Object:Altered),20表示错误日志(Audit Login Failed)。   虽然可以通过上面的方式找到相关的操作,但是它有两个缺点:     1) log.trc文件是滚动更新文件,所有有可能会被系统删除,你找不了太久的数据;     2) 有些操作你可能是后知后觉,出了问题才会去找问题,我们应该主动去监控这些DDL; 查看默认跟踪信息(Default Trace) Trace作为一个很好的数据库追踪工具,在SQL Server 2005中便集成到系统功能中去,并且默认是开启的,当然我们也可以手动的关掉它,它位于sp_config配置参数中,我们可以通过以下语句查看: select * from sys.configurations where configuration_id = 1568

怎样查出SQLServer的性能瓶颈

眉间皱痕 提交于 2019-12-03 03:32:06
怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url] --原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQLServe的性能调优不是一个精密的科学。即使是,对于为最佳的性能找到最佳的配置也是很困难的。这是因为对于调优来说很少东西是绝对的。例如,一个性能调优可能对某一方面有用,可是却会影响其他的性能。 我曾经做过DBA,在最后7年的日子里,我总结了一套SQLServer调优的清单。当第一次进行SQLServer性能调优的时候,可以用它来作为一个向导。我经常被邀请去检查SQLServer并提供一些性能方面的建议。直到现在,我还没有真正写下一个贯穿整个性能调优过程的方案。但是当我做了越来越多的性能调优的咨询工作后,我现在决定花点时间整理出来。你将会发现它是很有用的,就象我发现对我的用处一样. SQLServer性能监控 这套性能优化的清单将至少准科学的帮助你找出你的SQLServer任何明显的性能问题。说是这样说,SQLServer的性能调优仍然是很困难的。我试图用这套清单去找出“容易”的sqlserver性能问题,困难的留待稍后。我这样做是因为很容易将容易和困难的的性能调优问题搞混。通过列出一个“容易”的性能调优范围,就很容易的将这些问题解决,一旦解决了这些容易的问题

Redis面试题总结

人走茶凉 提交于 2019-12-03 01:36:41
参考 https://blog.csdn.net/zdp072/article/details/50991116 https://blog.csdn.net/qq_34337272/article/details/80012284#commentBox 坑人无数的Redis面试题(未整理,写的很棒,超出了理论范围,结合实际中的问题,给出不错的解决方案) https://blog.csdn.net/u011405515/article/details/79190652 0 什么是Redis? Redis 是一个使用 C 语言写成的,开源的,基于内存的 key-value 数据库。 支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。 与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。目前,Vmware在资助着redis项目的开发和维护。 1 使用redis有哪些好处

Redis(五):数据库

匿名 (未验证) 提交于 2019-12-03 00:44:02
Redis数据库 本篇将对Redis服务器的数据库实现进行详细介绍,说明服务器保存数据库的方法,客户端切换数据库的方法。数据库保存键值对的方法,以及针对数据库的添加,删除,查看,更新操作的实现方式等。 服务器中的数据库 Redis服务器将所有的数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDB结构,每个redisDB结构代表一个数据库。 struct redisServer{ //一个数组,保存着服务器中的所有数据库 redisDB *db; }; 在初始化服务器时,程序会根据服务器状态的dbnum属性来决定应该创建多少个数据库 struct redisServer{ int dbnum; //服务器数据库数量 }; dbnum属性的值由服务器配置的database选项确定,默认情况下,该选项的值为16,所以Redis服务器会创建16个数据库。 切换数据库 每个redis客户端都有自己的目标数据库,每当客户端执行数据库写命令或者数据库读命令的时候,目标数据库就会成为这些命令的操作对象。 默认情况下,Redis客户端的目标数据库为0号数据库,但客户端可以通过执行SELECT命令来切换目标数据库。 以下代码演示了客户端在0号数据库设置并读取键msg,之后切换到2号数据库并执行类似操作的过程。 127.0

非关系型数据库(NoSQL)――Redis安装及部署详解

匿名 (未验证) 提交于 2019-12-03 00:44:02
在现在的互联网大潮中,NoSQL可谓是家喻户晓,Redis作为NoSQL中及其重要的一员,使我们走向架构道路的一条必经之路。作为运维工程师来说,是必须要掌握的! 既然提到了Redis数据库是非关系型数据,并且需要掌握Redis数据库。那么关于关系型数据库与非关系型数据库的基本概念是必须要了解的。 一、关系型数据库与非关系型数据库的基本概念: 数据库按照其结构可以分为关系型数据库与其他数据库,而这些其他数据库,我们统称为非关系型数据库。 1.关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型基础上,一般面向记录。它借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织,现实世界中,各种实体与实体之间的各种联系都可以用关系模型来表示。SQL(结构化查询语言)语句就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。 主流的关系型数据库包括Oracle、MySQL、SQL Server、Microsoft Access、DB2等。 2.非关系型数据库 NoSQL: 意思是“不仅仅是SQL”,是非关系型数据库的总称。主流的NoSQL数据库有Redis、MongDB、Hbase、CouhDB等。这些数据库,他们的存储方式,存储结构以及使用场景都是完全不同的

Ubuntu16.04和Centos7 Yum部署zabbix3.4 结合钉钉智能报警

匿名 (未验证) 提交于 2019-12-03 00:43:02
Ubuntu16.04和Centos7.4两种操作系统部署zabbix3.4及zabbix功能介绍和各种小问题解决办法,分享最新,最潮流,最干的干活,解决最实在的问题,此博客也是本人在对zabbix懵懂时期各种摸索排坑到正式上线,最后到生产中检测200多台生产机,至今为止为出现任何误报警,不报警等情况 首先我们了解下zabbix监控的基础概念,以及工作原理和框架: 什么是zabbix: Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 agent端:主机通过安装agent方式采集数据。 server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+apache在web前端展示. zabbix = cacti + nagios 优点和缺点: 优点:基于两款工具优点于一身并更强大,实现企业级分布式监控。 缺点:zabbix一个服务端只能有一个lamp支撑,所以DB的吞吐有限和单台server端服务器的处理能力有限,所以监控的主机有限,但是正常zabbix能满足我们的需求 监控功能: 主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图表绘制