mysql数据库

学习历程-02DBProxy

ぃ、小莉子 提交于 2020-02-28 18:52:50
DBProxy是一个位于前端应用与后端MySQL数据库之间的中间件,它使得应用程序员无需再关心读写分离、分表等与MySQL相关的细节,可以专注于编写业务逻辑,同时使得DBA的运维工作对前端应用透明,上下线DB前端应用无感知。 DBProxy 的前身是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目Atlas。Atlas是在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。Atlas项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。 美团点评 自2015年在开源Atlas版本基础上进行了开发,满足了公司内部各项业务的场景需求,最终演化成了美团点评内部使用的中间件DBProxy。 参考链接: https://www.cnblogs.com/olinux/p/6626347.html https://blog.csdn.net/w892824196/article/details/82658764 https://github.com/IronsDu/DBProxy https://www.jianshu.com/p/733f96700d53 https://github.com/IronsDu/DBProxy 来源:

docker-compose 创建轻量级git服务——gitea

烂漫一生 提交于 2020-02-28 17:23:27
docker-compose.yml version: '2' services: web: image: gitea/gitea:1.6 container_name: gitea_web hostname: gitea.trio.ai environment: - USER_UID=1000 - USER_GID=1000 - DB_TYPE=mysql - DB_HOST=db:3306 - DB_NAME=gitea - DB_USER=gitea - DB_PASSWD=password - RUN_MODE=prod - LANGS=zh-CN networks: - gitea volumes: - data:/data - /etc/localtime:/etc/localtime ports: - "3000:3000" - "3022:22" depends_on: - db restart: always db: image: mysql:5.7 container_name: gitea_db restart: always environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_USER=gitea - MYSQL_PASSWORD=password - MYSQL_DATABASE=gitea

Ubuntu下安装配置JDK,Tomcat,MySql

廉价感情. 提交于 2020-02-28 17:14:52
jdk安装配置 下载jdk-6u45-linux-x64.bin 切换到root用户su root 切换目录,新建文件夹,复制文件cd /usr mkdir javacd javacp 路径/jdk-6u45-linux-x64.bin jdk-6u45-linux-x64.bin chmod 777 jdk-6u45-linux-x64.bin ./jdk-6u45-linux-x64.bin 设置环境变量 gedit /etc/profile 文件尾部增加如下内容 export JAVA_HOME=/usr/java/jdk1.6.0_45 export PATH=$PATH:/$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib export JRE_HOME=$JAVA_HOME/jre 设置默认jdk 因为ubnuntu默认安装了openjdk,所以需要设置默认成jdk6 Java代码 sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1. 6.0_45/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1. 6.0_45/bin

MySQL索引入门指北

萝らか妹 提交于 2020-02-28 16:11:49
自从两年前了解到的索引以来的,就一直想写一篇有关索引的文章。然而我是个拖延癌症患者,一拖就是两年,不愧是我。该篇文章算是自己的笔记,欢迎批评。 概述 索引是什么?很多书和文章都会使用图书的目录来类比。目录的目的就是用方便我们查找具体内容的位置,具体的章节的范围。与此类似,MySQL中索引的用途是帮助我们加速查询以及排序。 在InnoDB中的索引类型有哈希索引、B+树索引、全文索引。哈希索引在InnoDB中设计为自适应的,不展开讨论。在InnoDB1.12之后有了全文索引,也是应用倒排,还没踩过坑(据说不支持中文),有时间可以研究一下。 本篇主要讨论B+树索引。 B+树 学习MySQL的索引,必须得先了解其原理,否则很多问题将一头雾水。下文将讲述索引数据结构的原理,而不涉及其复杂的具体实现。 在谈B+树之前,不妨先思考,为什么索引能加快查询?为什么要用B+树作为索引而不用B树?哈希索引查询复杂度为O(1)为什么又不用哈希索引? BST和AVL 在了解B树和B+树之前,先了解一下二叉搜索树(BST)和平衡二叉树(AVL)。 在顺序存储结构中(如数组),最快的情况是第一个就是目标值,最坏的情况是最后一个是目标值,假设有n个元素,用大O标记法平均的时间复杂度为O(n)。 使用二叉搜索树可以有效的优化搜索时间。利用二叉搜索树的特性左子节点比父节点小、右子节点比父节点大

Linux CentOS6.5下编译安装MySQL 5.6.15

旧城冷巷雨未停 提交于 2020-02-28 14:37:02
一、编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install make cmake gcc gcc-c++ bison-devel ncurses-devel autoconf automake 二、设置MySQL用户和组 新增mysql用户组 groupadd mysql 新增mysql用户 useradd -r -g mysql mysql 三、新建MySQL所需要的目录 新建mysql安装目录 mkdir -p /usr/local/mysql 新建mysql数据库数据文件目录 mkdir -p /data/mysqldb 四、下载MySQL源码包并解压 wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz tar -zxv -f mysql-5.6.15.tar.gz cd mysql-5.6.15 五、编译安装MySQL ( mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器,具体的cmake编译参数可以参考mysql官网文档 http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html cmake \ -DCMAKE_INSTALL

mysql数据库远程访问设置方法

巧了我就是萌 提交于 2020-02-28 14:28:56
mysql数据库远程访问设置方法 1、修改localhost 更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改成"%" mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>select host, user from user; mysql>FLUSH PRIVILEGES; 2、指定授权 使用myuser/mypassword从任何主机连接到mysql服务器: GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 使用myuser/mypassword从ip为192.168.225.166的主机连接到mysql服务器: GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.225.166' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 3、泛授权 mysql -h localhost -u root mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT

MYSQL基础信息

血红的双手。 提交于 2020-02-28 14:27:39
MYSQL特点 1、关系型数据库 2、跨平台 可以在Unix、linux、windows上运行数据库服务 3、支持多种编程语言 python、java、php 表和表之间的逻辑关联叫做关系,即二维表 数据库软件、数据库、数据库仓库的概念 1、数据库软件 一个软件,看得见,可操作,实现数据库逻辑功能 2、数据库 是一种逻辑概念,用来存放数据的仓库,侧重存储 3、数据仓库 从数据量上来说,比数据库庞大的多,主要用来数据分析和数据挖掘 ubuntu安装软件 1、sudo apt-get update 访问员列表中的每个网址,读取软件列表,保存到本地/var/lib/apt/lists/ 2、sudo apt-get upgrade 把本地安装软件与刚下载的软件列表进行对比,如果发现已经安装的软件版本低,则更新 3、sudo app-get -f install 修复依赖 启动和连接mysql服务 1、服务端启动 Sudo /etc/init.d/mysql start | stop| restart 2、查看Mysql状态 Sudo /etc/init.d/mysql status 3、客户端连接 a、命令格式 Mysql -h主机地址 -u用户名 -p密码 b、本地连接可省略 -h 选项 sql语句使用规则 1、以;结尾 2、不分大小写 3、语句输入\c终止当前命令的执行

mysql行转列,列转行

雨燕双飞 提交于 2020-02-28 11:02:16
行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单、更具可读性。下面我们通过几个简单的例子来介绍一下列转行、行转列问题。 我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列 CREATE TABLE [StudentScores] ( [UserName] NVARCHAR(20), --学生姓名 [Subject] NVARCHAR(30), --科目 [Score] FLOAT, --成绩 ) INSERT INTO [StudentScores] SELECT 'Nick', '语文', 80 INSERT INTO [StudentScores] SELECT 'Nick', '数学', 90 INSERT INTO [StudentScores] SELECT 'Nick', '英语', 70 INSERT INTO [StudentScores] SELECT 'Nick', '生物', 85 INSERT INTO [StudentScores] SELECT

FLUSH TABLE WITH READ LOCK详解

坚强是说给别人听的谎言 提交于 2020-02-28 10:39:12
FLUSH TABLES WITH READ LOCK简称(FTWRL),该命令主要用于备份工具获取一致性备份(数据与binlog位点匹配)。 由于FTWRL总共需要持有两把全局的MDL锁,并且还需要关闭所有表对象,因此这个命令的杀伤性很大,执行命令时容易导致库hang住。如果是主库,则业务无法正常访问;如果是备库,则会导致SQL线程卡住,主备延迟。本文将详细介绍FTWRL到底做了什么操作,每个操作的对库的影响,以及操作背后的原因。 FTWRL做了什么操作? FTWRL主要包括3个步骤: 1.上全局读锁(lock_global_read_lock) 2.清理表缓存(close_cached_tables) 3.上全局COMMIT锁(make_global_read_lock_block_commit) FTWRL每个操作的影响 上全局读锁会导致所有更新操作都会被堵塞;关闭表过程中,如果有大查询导致关闭表等待,那么所有访问这个表的查询和更新都需要等待;上全局COMMIT锁时,会堵塞活跃事务提交。由于FTWRL主要被备份工具使用,后面会详细解释每个步骤的作用,以及存在的必要性。FTWRL中的第1和第3步都是通过MDL锁实现,关于MDL的实现,我之前总结了 MDL锁的文章 ,这里主要介绍清理表缓存的流程。 清理表缓存 每个表在内存中都有一个table_cache

[MySQL]快速解决\"is marked as crashed and should be repaired\"故障

久未见 提交于 2020-02-28 10:36:17
具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需要修复。我记得以前也出现过类似的问题,但是只要点击Phpmyadmin上的repair按纽就自动修复了,但是这次很绝,什么都没有.于是赶快上网查找原因。最终将问题解决。解决方法如下: 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r ../data/tablename/posts.MYI 然后myisamchk 工具会帮助你恢复数据表的索引。好象也不用重新启动mysql,问题就解决了。 问题分析: 1、 错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。 还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能导致 MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。 2、问题解决办法。 当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次-