
MySQL技术
汇集MySQL常用基础技术、集群技术及关联技术
南山行者
这个作者很懒,什么都没留下…
展开
-
MyCat部署运行(Windows环境)与使用步骤详解
1、MyCat概念1.1 总体架构MyCAT的架构如下图所示:MyCAT使用MySQL的通讯协议模拟成一个MySQL服务器,并建立了完整的Schema(数据库)、Table(数据表)、User(用户)的逻辑模型,并将这套逻辑模型映射到后端的存储节点DataNode(MySQL Instance)上的真实物理库中,这样一来,所有能使用MySQL的客户端以及编程语言都能原创 2015-07-20 13:55:08 · 34659 阅读 · 8 评论 -
MYSQL 大小写区分说明
1、linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写; 2、用root帐号登录后,在/etc/my.cnf 或my.ini中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;lower_case_table_names参数详解: lower_case_table原创 2015-08-13 01:15:11 · 2078 阅读 · 0 评论 -
Crontab 每天定时备份 MySQL
1、创建shell脚本vim /usr/mysql_back.sh#!/bin/bashback_dir=/usr/backupback_date=`date +%F`user=rootpass=123456mysqldump -u${user} -p${pass} ${dbname} > ${back_dir}/${back_date}_${dbname}.sql原创 2015-08-13 17:31:43 · 766 阅读 · 0 评论 -
mysqldump工具的使用
mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。运行mysqldump需一定的权限。如,备份表的最低权限为select,备份视图需show view权限,备份触发器需trigger权限。mysqldump的输出可能包含alter database语句,如,用于保持备份库的字符集,原创 2015-08-22 16:30:06 · 1261 阅读 · 0 评论 -
Mysql的sql_mode设置
SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空。SQL_MODE的默认设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插入NOT NULL的字段中,也可以插入一些非法日期,如“2012-12-32”。因此在生产环境中强烈建议开发人员将这个值设为严格模式,这样有些问题可以在数据库的设计和开发阶段就能发现,而如果在生产环境下运行数据库后发原创 2015-08-22 23:28:02 · 2638 阅读 · 0 评论 -
MySQL5.6之后默认root密码的问题
前端时间安装mysql5.6后,习惯性的无密码登录,但是提示要输入密码# mysql -u root -pEnter password:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)好吧,那我就安全模式登入,也就是常说的绕过密码验证# /etc/init.d/m原创 2015-08-23 15:47:16 · 29851 阅读 · 0 评论 -
MySQL安装方法
一、确认没有安装mysql数据库查看mysql[root@localhost]# rpm -qa | grep mysql普通卸载,如果有依赖,无法删除并提示依赖[root@localhost]# rpm -e mysql 强制卸载,如果有任何依赖,强制删除[root@localhost]# rpm -e --nodeps mysql原创 2015-08-24 00:44:52 · 1060 阅读 · 0 评论 -
MySQL简单MHA环境搭建
MySQL-MHA是日本MySQL专家用Perl写的一套MySQL故障切换方案,它有Node、Manager两种角色。Node需要安装在所有MySQL服务器不管主还是从,Manager运行在独立服务器。本次搭建使用四台虚拟机,Manager是管理节点,其他三台都是Node: db1即是主库也是管理节点,db2是Master备节点,db3是从库。一、安装MySQL 步骤省原创 2015-08-24 16:03:41 · 3640 阅读 · 0 评论 -
MySQL的Keepalived安装、配置、启动
keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件,对内解决单点故障,对外提供唯一入口。keepalived工作原理keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换。第3层:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发原创 2015-08-31 16:22:01 · 1292 阅读 · 0 评论 -
MySQL的MHA+keepalived+负载均衡+读写分离架构
之前写过了MySQL的简单MHA环境搭建,但是mha只是保证数据库一致性,对于实现应用访问的唯一入口、读写分离、负载均衡需要keepalived、中间件、lvs来解决了。本次搭建使用四台虚拟机,如下db1:192.168.1.10db2:192.168.1.11db3:192.168.1.12db4:192.168.1.13一、环境搭建1、mha原创 2015-09-01 12:09:04 · 6830 阅读 · 1 评论 -
MySQL的biglog文件操作
一、查看1、SQL(1) 查看所有binlog文件mysql> show binary logs;(2) 查看binlog内容mysql> show binary events in 'mysql-bin.000001';2、mysqlbinlog(1) 查看binlog内容,需要先将二进制文件转换成文本文件再查看(也可以加入start-pos、end-pos、s原创 2015-09-01 16:37:41 · 3586 阅读 · 1 评论 -
MySQL查询缓存
很多数据库都能缓存查询的执行计划,对于相同类型的sql可以跳过SQL解析和执行计划生成阶段。而MySQL还有另一种缓存类型:缓存完整的SELECT查询结果,也就是“查询缓存”。MySQL查询缓存保存查询返回的完整结果。当查询命中该缓存,MySQL会立刻返回结果,跳过了解析、优化和执行阶段。查询缓存系统会跟踪查询中涉及的每个表,如果表有任何更改,包括INSERT、UPDATE、DELETE、原创 2015-09-08 23:47:19 · 707 阅读 · 0 评论 -
MySQL5.6配置文件详解
character-set-server=utf8#服务器端字符集lower_case_table_names = 0#默认为0,数据库、表名大小写敏感back_log = 600 #在MYSQL暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。默原创 2015-09-09 12:00:22 · 7157 阅读 · 0 评论 -
Sysbench简介和测试
一、sysbench简介sysbench是一个模块化的、跨平台、开源的多线程基准测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试,主要用于评估测试各种不同系统参数下的数据库负载情况,数据库目前支持MySQL/Oracle/PostgreSQL;它主要包括以下几种方式的测试: 1. cpu 处理器性能2. threads 线原创 2015-09-10 14:14:37 · 2682 阅读 · 0 评论 -
MySQLSlap简介和测试
MySQLSlap是从MySQL的5.1.4版开始就开始官方提供的压力测试工具,如果使用rpm安装,下载mysql client rpm包安装后可直接使用,查看mysql中是否存在mysqlslap,在mysql的bin文件中查看是否存在mysqlslap即可。MySQLSlap通过模拟多个并发客户端并发访问MySQL来执行压力测试,同时提供了较详细的SQL执行数据性能报告,并且能很好的对比多个存原创 2015-09-10 22:53:18 · 1933 阅读 · 0 评论 -
MySQL的timeout参数说明
MySQL的关于超时的参数也有不少,但是经常用的,也就几个,先列出全部的超时参数数据库版本:Mysql 5.6.25其他的慢慢补充。。1,interactive_timeout 和 wait_timeout客户端连接mysql分为2种连接类型,一种是交互模式(interactive ),一种叫非交互模式(noninteractive )。interactive_time原创 2015-09-11 10:21:44 · 3300 阅读 · 0 评论 -
MySQL高可用方案
MySQL的各种高可用方案,大多是基于以下几种基础来部署的:基于主从复制;基于Galera协议;基于NDB引擎;基于中间件/proxy;基于共享存储;基于主机高可用;在这些可选项中,最常见的就是基于主从复制的方案,其次是基于Galera的方案,我们重点说说这两种方案。其余几种方案在生产上用的并不多,我们只简单说下。基于主从复制的高可用方案双节点主从 + keep原创 2015-09-14 14:59:58 · 995 阅读 · 0 评论 -
Mysql自动化安装
1,Shell脚本mysql二进制安装#!/bin/bashecho "Step 1,uninstall mysql-lib"yum remove -y mysql-libsecho "Step 2,add group and user"groupadd mysqluseradd -r -g mysql mysqlecho "Step 3,tar mysql原创 2015-11-12 17:18:19 · 899 阅读 · 0 评论 -
percona xtrabackup的安装和使用
一、安装1,下载wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.2/binary/Linux/x86_64/percona-xtrabackup-2.1.2-611.tar.gz2,安装所需的依赖包yum install libaio libaio-devel perl-Time-HiRes curl原创 2015-11-27 17:41:10 · 1543 阅读 · 0 评论 -
mysql的权限控制
一,创建用户CREATE USER user1@'%' IDENTIFIED BY '123456';二,删除用户DROP USER ‘username’@'host’;二,创建权限GRANT all privileges ON databasename.tablename TO 'username'@'host'三,取消权限REVOKE p原创 2015-12-02 11:20:07 · 604 阅读 · 0 评论 -
percona tpcc的安装和使用
tpcc-mysql是开源的TPC-C测试工具,其完全遵循TPC-C标准.TPC-C是TPC协会制定的,用来测试典型的复杂OLTP(在线事务处理)系统的性能。它是percona基于tpc-c衍生出来的产品,专用于mysql基准测试,其源码放在bazaar。一、安装1,安装bzr版本控制工具yum install bzr 2,下载tpcc源码bzr branch lp:~perc原创 2015-12-03 10:27:35 · 753 阅读 · 0 评论 -
mysql回滚后数据文件增大的原因
执行的语句是下图依次是:插入前,回滚前,回滚后的文件大小造成这种情况的原因是:在事务中执行插入时,innodb存储引擎会先初始化一段空间,为插入的数据做准备,当回滚后,数据没有插入,但空间不会收缩, 造成数据文件增大。这里也是mysql表空间的常见现象,可扩大, 但无法自动收缩,就如果表的碎片过多,也没有自动整理。原创 2015-12-10 17:36:16 · 644 阅读 · 0 评论 -
关于GAP死锁的场景
场景是表中id从5到9的数据被删除,当事务A锁定id=6,事务B也锁定id=6,事务A插入会等待,事务B插入提示死锁, 事务B回滚,事务A提交。数据如下:REPEATABLE-READ隔离(默认):事务A执行插入:显示锁类型是行锁,模式是排他、GAP锁。事务B执行插入:事务B回滚,事务A执行。范围for update时,同样会有死锁的原创 2015-12-18 17:50:29 · 2282 阅读 · 0 评论 -
Percona XtraDB Cluster 安装
pxc和普通mysql的安装方式相同,这里只说介绍rpm安装和源码安装两种方法。一,yum安装1,pxc安装按先后顺序需要grlera,shared,client, xtrabackup,server。其中socat被server依赖,也可以yum安装。同时有版本兼容问题,参考如下rpm包。 安装xtrabackup需要先安装源 yum -y install per原创 2015-12-29 12:21:55 · 1058 阅读 · 1 评论 -
mysql分库分表方案浅析
分库分表(这里不讨论中间件)分库:原因:单机负载大,优点:降低单机负载,难度小分表:原因:单表增删改查慢,优点:使用多个表,提高读写效率,难度大分表:在一个库中进行进行分表,有两种方法1、mysql表分区使用表分区时,分区字段。需要根据业务来定,这里所说的业务,指的就是需要做分表的表会和哪些业务相关,比如订单表,主键是订单ID,分表时,需要结合业务综合看待。原创 2016-03-02 16:56:46 · 2123 阅读 · 0 评论 -
58同城扩展性架构实践的总结
下面是原文文章只是把大概的步骤描述了,看到这里,其实很多人都会觉得有问题。比如从升为主,那么就有两个库的数据相同,而新的mod规则只会到一个库,新的数据能分布到所有库,而老的数据,肯定存在冗余,而且无法对应mod规则。还有“把多余的数据删除掉”,什么意思之类的问题。也是因为文章写得很简单,没有详细说明做法,我画了一个图上方的红框就是使用hash,分了2个库,各一个备库。现在要做mod的2倍扩容,步...原创 2016-03-03 16:17:02 · 864 阅读 · 0 评论 -
MySQL在线DLL测试
MySQL5.5和之前版本,在运行的生产环境对大表(超过数百万纪录)执行Alter操作是一件很困难的事情。因为将重建表和锁表,影响用户者的使用。MySQL5.6提供了在线DDL,并且不锁表的功能,如果数据量不是特别大,通常可以使用alter。目前在线DLL,有四种办法一、alter table xxxxx; 优点:不阻塞读写,消耗时间长二:alter table xxx原创 2016-03-09 15:43:53 · 6463 阅读 · 0 评论 -
MySQL增量备份
两种方法一,mysqldump(全备) + binlog(增备)mysqldump每周做一次全备,参数带上--master-data=2,能看到当前DB最后的pos点,在master-slave中能看到主的最后pos以便change master,在恢复时也提供binlog恢复的起点;--single-transaction,设定本次会话的隔离级别为:REPEATABLE READ,以确保原创 2016-03-11 14:25:50 · 892 阅读 · 0 评论 -
MySQL审计之General log
General log记录了MySQL所有执行过的命令,包括【客户端连接】,【从机器的复制】,【DDL】,【DML】等,因为记录的粒度最小,所以文件会增长很快,也会特别大。因为会实时写入文件,带来IO的额外负载,影响DB的工作效率,一般只用于开发和测试环境,生产环境一般不会开启。一,开启General log1,配置文件设置或者 2,全局配置(1)打开mysql>set原创 2016-04-21 14:04:06 · 1877 阅读 · 0 评论 -
MySQL审计之init-connect + binlog
如果只需要统计修改操作,有一个办法,我们可以使用init-connect + binlog的方法进行mysql的操作审计。init-connect是配置文件的一个参数,作用是在每个客户端连接时执行,我们需要有一个表来保存连接客户端的ID,IP和登录时间,ID是连接的session的ID号,是递增的。那么,当我们在binlog查出操作的SQL,并找到该记录的thread_id,然后将thread_i原创 2016-04-22 15:50:10 · 1686 阅读 · 0 评论 -
Anemometer和pt-query-digest结合将MySQL慢查询可视化
pt-query-digest虽然功能强大, 但毕竟没有web界面显示的直观,我们可以借助Anemometer作为pt-query-digest执行结果的显示端,Anemometer是专门为mysql的慢查询开发的一款开源软件,地址在http://www.oschina.net/p/anemometer一、安装LAMP环境1,安装 yum install httpd php *b原创 2016-04-26 16:12:40 · 7691 阅读 · 1 评论 -
MySQL半同步复制
MySQL在5.5时引入了半同步插件,相比MySQL自带的异步复制,半同步复制能保证数据全部传输到从机再返回结果,一定程度上提高了数据的完整性,但因为不是异步操作,对性能有一定影响,如果对数据可靠和完整性有要求时,建议启用。一、查看插件1,查看是否加载半同步插件。sql> show plugins;2,查找mysql插件目录位置。mysql> show varia原创 2016-04-27 14:24:47 · 963 阅读 · 0 评论 -
MySQL监控工具之innotop
MySQL监控管理工具--innotopyum install perl-DBI perl-DBD-MySQL perl-TermReadKeytar -zxvf innotop-1.9.0.tar.gzcd innotop-1.9.0perl Makefile.PLmake installinnptop --help原创 2016-04-29 15:27:39 · 749 阅读 · 0 评论 -
Mysql多实例安装
目前并没有用到多实例,但是还是需要了解的,安装起来很简单, 单机多实例有两种方法,多配置文件和mysqld_multi命令,两者的基础都是需要先初始化多个数据库,多配置文件是启动实例带对应的配置文件;mysqld_multi是在配置文件里写多个mysqld的配置。多配置文件操作简单,互不影响;mysqld_multi易于管理。初始化多个数据库1,/usr/local/mysql原创 2016-05-17 14:22:25 · 637 阅读 · 0 评论