mysql数据库

MySQL存储引擎与执行计划

不问归期 提交于 2020-01-17 13:58:19
存储引擎 存储引擎是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎 。 不管表采用什么样的存储引擎,都会在数据区,产生对应的一个frm文件(表结构定义描述文件) 。 在新版本中frm文件已经被mysql舍弃 CSV存储引擎 为其添加索引时报错 Too many keys specified; max 0 keys allowed 为其添加默认为null的列时 提示 The storage engine for the table doesn't support nullable columns 因此,CSV引擎的表不能定义索引,列定义必须是NOT NULL,不能设置自增列 CSV数据的存储是用,隔开,可直接编辑CSV文件进行数据的插入或删除;编辑之后,要生效使用flush table xxx; Create Table : CREATE TABLE ` csv_name ` ( ` name ` varchar ( 10 ) NOT NULL , ` age ` tinyint ( 4 ) NOT NULL ) ENGINE = CSV DEFAULT CHARSET = utf8mb4 COMMENT = 'csv 测试' //插入操作 insert into csv_name values ( "wojiushiwo" , 2 ) ; insert into

Canal简介

落花浮王杯 提交于 2020-01-17 13:51:37
以下内容主要摘自Canal 官方wiki和网友博客:https://www.jianshu.com/p/6299048fad66 一、背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。 ps. 目前内部版本已经支持mysql和oracle部分版本的日志解析,当前的canal开源版本支持5.7及以下的版本(阿里内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48) 基于日志增量订阅&消费支持的业务: 数据库镜像 数据库实时备份 多级索引 (卖家和买家各自分库索引) search build 业务cache刷新 价格变化等重要业务消息 二、项目介绍 名称:canal [kə'næl] 译意: 水道/管道/沟渠 语言: 纯java开发 定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql 三、工作原理 1、mysql主备复制实现 从上层来看,复制分成三步: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log

canal接binlog

一个人想着一个人 提交于 2020-01-17 13:49:26
最近业务开始需要实时抽取数据,中间权限需要沟通,为了不让自己给DBA添加麻烦,还是补补关于这方面的基础: 来源: http://blog.csdn.net/heiyeshuwu/article/details/8619338 先介绍下背景吧,方便理解: 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。 项目介绍 名称:canal [kə'næl] 译意: 水道/管道/沟渠 语言: 纯java开发 定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql 工作原理 mysql主备复制实现: 从上层来看,复制分成三步: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看); slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。 canal的工作原理: canal模拟mysql slave的交互协议

通过binlog日志恢复表记录

别来无恙 提交于 2020-01-17 11:28:29
使用binlog日志 1 使用binlog日志 1.1 问题 利用binlog恢复库表,要求如下: 启用binlog日志 创建db1库tb1表,插入3条记录 删除tb1表中刚插入的3条记录 使用mysqlbinlog恢复删除的3条记录 1.2 步骤 实现此案例需要按照如下步骤进行。 步骤一:启用binlog日志 1)调整/etc/my.cnf配置,并重启服务 [root@dbsvr1 ~]# vim /etc/my.cnf [mysqld] .. .. log-bin-index=mysql-bin //启用二进制日志,并指定前缀 server_id=1 binlog_format=STATEMENT //在Mysql5.7中,binlog日志格式默认为ROW,但它不记录sql语句上下文相关信息。需要将binlog日志格式修改为STATEMENT .. .. [root@dbsvr1 ~]# systemctl restart mysqld.service 2)确认binlog日志文件 新启用binlog后,每次启动MySQl服务都会新生成一份日志文件: [root@dbsvr1 ~]# ls /var/lib/mysql/mysql-bin.* /var/lib/mysql/mysql-bin.000001 /var/lib/mysql/mysql-bin.index

zabbix 源码安装

谁都会走 提交于 2020-01-17 08:49:38
操作系统:CentOS IP地址:192.168.21.127 Web环境:Nginx+MySQL+PHP zabbix版本:Zabbix 2.2 LTS 备注:Linux下安装zabbix需要有LAMP或者LNMP运行环境 准备篇: 一、Web环境:Nginx+MySQL+PHP CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14 http://www.osyunwei.com/archives/7891.html 二、zabbix软件包下载 zabbix-2.2.6 http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.6/zabbix-2.2.6.tar.gz 上传zabbix-2.2.6.tar.gz到服务器/usr/local/src目录下面 安装篇 一、创建、导入zabbix数据库 cd /usr/local/src #进入软件包下载目录 tar zxvf zabbix-2.2.6.tar.gz #解压 cd /usr/local/src/zabbix-2.2.6/database/mysql #进入mysql数据库创建脚本目录 ls #列出文件,可以看到有schema.sql、images.sql、data.sql这三个文件

Mysql查漏补缺笔记

雨燕双飞 提交于 2020-01-17 05:17:03
目录 查漏补缺笔记2019/05/19 文件格式后缀 丢失修改,脏读,不可重复读 超键,候选键,主键 构S(Stmcture)/完整性I(Integrity)/数据操纵M(Malippulation) 关系范式 系统设计 数据库语言 两段协议 SQL联表查询,函数substr,right 查漏补缺笔记2019/05/19 文件格式后缀 数据库文件的扩展名为.DBC 数据表文件的扩展名为 .DBF 表单文件的扩展名为 .SCX 项目文件的扩展名为 .PJX 丢失修改,脏读,不可重复读 事务之间的对数据的并发操作会带来三种问题:丢失修改,脏读,不可重复读。 丢失修改:一个事务读取一个数据时,另外一个事务也访问该同一数据。那么,在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失,因此称为丢失修改。 脏读:当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,根据脏数据的操作可能是不正确的。 不可重复读:一个事务内多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,这就发生了在一个事务内两次读到的数据是不一样的情况

JMeter配置JDBC测试SQL Server/MySQL

我怕爱的太早我们不能终老 提交于 2020-01-17 05:15:54
一、配置SQL Server 1、下载sql驱动,将sqljdbc4.jar放到JMeter安装目录/lib下。 2、启动JMeter,右键添加->配置文件->JDBC Connection Configuration。 3、设置JDBC Connection Configuration属性     (1)Variable Name:MSSQL,后续JDBC Request中会用到这个值;   (2)Database URL:jdbc:sqlserver://数据库地址;instanceName=实例名;databaseName=数据库名称;   (3)JDBC Driver class:com.microsoft.sqlserver.jdbc.SQLServerDriver (SqlServer固定写法);   (4)Username/Password:数据库的用户名和密码; 4、线程组右键添加-Sampler- JDBC Request  设置 JDBC Request 属性 5、右键-监听器-察看结果树 就可以测试SQL Server了。 二、 配置My SQL 1、下载mysql驱动,将mysql-connector-java-5.1.35.jar放到JMeter安装目录/lib下。 2、启动JMeter,右键添加->配置文件->JDBC Connection

mysql group replication观点及实践

瘦欲@ 提交于 2020-01-17 04:56:51
一:个人看法 Mysql Group Replication 随着5.7发布3年了。作为技术爱好者。mgr 是继 oracle database rac 之后。 又一个“真正” 的群集,怎么做到“真正” ? 怎么做到解决复制的延迟,怎么做到强数据一致性?基于全局的GTID就能解决? 围绕这些问题进行了一些mgr 的实践, 为未来的数据库高可用设计多条选择。 mysql5.7手册17章可以看到其原理,网络上也很多同志写了关于其技术原理,这里自己对比rac理解下: 作为shared nothing (mgr)架构,其数据一致性实现较 shared everything(RAC) 架构要难, MGR通过一致性(Paxos)协议,保证数据在复制组内的存活节点里是一致的,复制组内的各成员都可以进行读写, 其实现机制是,当某个实例发起事务提交时,会向组内发出广播,由组内成员决议事务是否可以正常提交, MGR 在遇到事务冲突时(多节点同时修改同一行数据),会自动识别冲突,并根据提交时间让先提交的事务成功执行,后提交的事务回滚,其原理示意图如下: 对于 sharad nothing 架构,必须要了解分布式协议PAXOS,分布式状态机 理论,而在这块我翻阅了很多资料,发现其实并不是很成熟的。从上图可以看出来MGR 的冲突检测机制 类似于 rac 的gird 群集组件 也具备通告广播的群集服务

python操作mysql

余生颓废 提交于 2020-01-17 04:56:49
yum install MySQL-python #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost", "root", "", "ebs", charset='utf8' ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 如果数据表已经存在使用 execute() 方法删除表。 #cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # Rollback in case there is any error db.rollback() # 关闭数据库连接 db.close() 来源: CSDN 作者: 小豆角 链接: https://blog.csdn.net/u013755520/article

让MySQL支持emoji表情

大兔子大兔子 提交于 2020-01-17 04:51:14
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://suifu.blog.51cto.com/9167728/1847087 公司有新要求,ios客户端要上线评论中可以使用emoji表情的功能,在mysql 5.5 之前,UTF-8编码只支持1-3个字节;从MySQL 5.5开始,可以支持4个字节UTF编码 utf8mb4 ,一个字符能够支持更多的字符集,也能够支持更多表情符号。 utf8mb4兼容utf8,且比utf8能表示更多的字符,是utf8字符集的超集。所以现在一些新的业务,比如ISO中的emoji表情,会将MySQL数据库的字符集设置为utf8mb4。 先看问题: Caused by: java.sql.SQLException: Incorrect string value: '\xF6\x9D\x98\x84' for column 'comment' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) at com.mysql.jdbc.MysqlIO