mysql数据库

Mysql基本异常以及基本操作

半世苍凉 提交于 2020-01-02 11:24:31
MySQLIntegrityConstraintViolationException: Duplicate entry ‘admin-2’ for key ‘idx_unq_usercode_usertype’ 原因就是插入数据时,具有唯一约束条件的列的值有重复。 违反唯一约束条件 务必确认插入数据主键或者具有唯一性约束的列不要有重复数据!!! MysqlDataTruncation: Data truncation: Incorrect date value 格式问题 错误的格式 输入正确格式 查看数据库数据类型及格式 alter table sys_zj_compe_awards modify column compe_name varchar(50); 修改字段长度 alter table <表名> change <字段名> <字段新名称> <字段的类型>。 修改字段的名称 alter table sys_zj_mooc modify column year date; 修改字段类型 1.添加字段 ALTER TABLE 表明 add 字段名称 类型(int,char,VARCHAR...) DEFAULT 默认值 位置(FIRST, AFTER+字段名称); 2.删除 ALTER TABLE 表名 DROP字段名称 3.更改字段 (1) 更改字段长度 alter table

mysql基础-命令(1)

半世苍凉 提交于 2020-01-02 10:41:10
ps -ef | grep mysqld 查看mysql进程 -bash: mysql: command not found 解决方案:生成链接指向/usr/bin目录 ln -s /mnt/mysql/bin/mysql /usr/bin ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) 解决方案:生成链接指向/tmp/mysql.sock目录 find / -name mysql.sock ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 查看MySQL数据库实例启动时,会在哪些位置查找配置文件 mysql --help | gerp my.cnf 如果几个配置中都有同一个参数,MySQL数据库会以读取到的最后一个配置文件中的参数为准 MySQL数据库和数据库实例的区别 数据库 数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合, 数据库实例 数据库实例是程序,是位于用户与操作系统间的一层数据管理软件。用户对数据库数据的任何操作 MySQL体系结构 来源: CSDN 作者: yly20150203 链接: https://blog.csdn.net/yly20150203

mysql读写分离的实现

被刻印的时光 ゝ 提交于 2020-01-02 08:50:50
读写分离拓扑图如下: 为什么要实现mysql读写分离 ​ 大型网站为了解决大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别是数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,下面就进入我们今天的主题。 ​ 利用主从数据库来实现读写分离,从而分担主数据库的压力。在多个服务器上部署mysql,将其中一台认为主数据库,而其他为从数据库,实现主从同步。其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作(slave从数据库仍然会被动的进行写操作,为了保持数据一致性),这样就可以很大程度上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载。 mysql读写分离 mysql读写分离概述 ​ mysql本身不能实现读写分离的功能,需要借助中间件实现,例如:Amoeba,Mysql Proxy,Atlas。今天主要介绍Amoeba实现mysql读写分离。 ​ Amoeba(变形虫)项目,该开源框架于2008发布一款Amoeba for mysql软件,该软件致力于mysql的分布式数据库前端代理层,**主要的作用是应用服务访问mysql服务器时充当SQL路由功能,并具有负载均衡、高可用性、SQL过滤、读写分离

安装篇——Linux下安装mysql

扶醉桌前 提交于 2020-01-02 02:42:54
..1.下载linux的mysql安装包 https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12- x86_64.tar.gz ..2.上传到linux /usr/local/ 解压,重命名 cd /usr/local rz tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz mv mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz mysql ..3.创建数据文件夹 mkdir mysql/data/mysql ..4.添加用户组,添加用户 groupadd mysql useradd -r -g mysql mysql ps:添加mysql这个用户组,并将mysql这个用户添加到mysql用户组中 ..5.进入mysql目录,设置权限 cd mysql chown -R mysql:mysql ./ chown -R mysql:mysql data chown -R root:root ./ ..6.安装数据库 ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql ..6.设置my.cnf文件,如果

linux下恢复mysql的root权限方法

≯℡__Kan透↙ 提交于 2020-01-02 01:01:01
一不小心把mysql的root权限全部撤销了,网上找了很多方法来恢复,经过实践,发现这一个方法是可行的,特地记下来。 1、先敲一下 service mysqld stop 命令,这个命令的作用的停掉mysql。 2、安全模式启动mysql,命令为:/usr/bin/mysqld_safe --skip-grant-tables (其中参数--skip-grant-tables的意思是跳过数据库验证) 3、mysql -u root -p 登录mysql,不需要填写密码。 4、选择数据库表mysql,命令为:USE mysql 5、GRANT ALL PRIVILEGES ON . TO root@localhost IDENTIFIED BY 'password' WITH GRANT OPTION; 6、flush privileges ; 执行以上步骤之后即可。 来源: 51CTO 作者: 吴流 链接: https://blog.51cto.com/wuliu92/2463650

MySql-Binlog协议

守給你的承諾、 提交于 2020-01-02 00:28:34
MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看) MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log) MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据 canal 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流) MySql-Binlog协议详解-流程篇 MySql-Binlog在MySql主从不同方面发挥着不可或缺的作用,同时我们也能通过Binlog实时监控数据的变化。本系列就讲述了怎样接收并解析Binlog。本篇就主要对接收binlog的流程做了一下探讨。 Binlog发送接收流程,流程如下图所示: (1)第一步和上篇blog一样,通过HandShake协议进行Client和DB的握手认证 (2)握手成功以后

Spark-SQL读取mysql数据

隐身守侯 提交于 2020-01-01 17:21:56
1、首先创建表student,字段有name、age,然后插入数据,如下图所示: 2、代码如下: import org.apache.spark.SparkConf import org.apache.spark.sql.SparkSession object SparkReadMysql { def main(args:Array[String]):Unit={ //创建一个session,在2.0以后,SparkContext不是必须创建的,而是可以通过如下方式创建 val conf=new SparkConf().setMaster("local").setAppName("SparkReadMysql") val sparkSession=SparkSession .builder() .config(conf)//设置操作hive的url,相当于jdbc里的url .getOrCreate() val prop=scala.collection.mutable.Map[String,String]() prop.put("user","root") prop.put("password","123456") prop.put("driver","com.mysql.cj.jdbc.Driver") prop.put("dbtable","student") prop

解决微服务在docker上部署后无法连接数据库的问题

半世苍凉 提交于 2020-01-01 13:50:41
在利用docker部署完应用程序后,就接着考虑如何将程序连接到数据库。 但是过程中发现一些问题: 本地程序在打包后连接的是本地的数据库,在服务器上部署之后必须提供相同的环境才能部署成功。 这里我用的是宝塔安装的mysql,我尝试把用户名,数据库名,密码全部和自己的开发时的环境完全一致。 但是尝试多次之后,即便是修改的一模一样,在centos上运行还是报错。 这是当时连接数据库的url url : jdbc : mysql : / / localhost : 3306 / 数据库系统 ? useUnicode = true & useJDBCCompliantTimezoneShift = true & useLegacyDatetimeCode = false & serverTimezone = UTC 想了多次还是无法理解,甚至尝试过在docker上再创建一个mysql的容器,但是提示3306的端口被占用了。 就在无可奈何准备放弃的时候, 当时看了下mysql的一些视频(因为快考数据库了),讲到navicat也是可以连接远程数据库的,当时想了下,觉的比较有趣,尝试了下,成功了,顿时觉得数据库的连接有出路了。 解决办法 将localhost换成自己服务器的ip地址 ##前提是开放自己数据库的权限 也就是在开发时,连接的是自己服务器的数据库

mysql学习笔记--go使用mysql

左心房为你撑大大i 提交于 2020-01-01 13:03:28
一、 连接数据库   a. //用户名:密码@[连接方式](主机名:端口号)/数据库名     db,_:=sql.Open("mysql","root:7758521123jf@(127.0.0.1:3306)/itcast)   b. import (       _ "github.com/go-sql-driver/mysql"     )   c. db.Ping():连接数据库   d. defer db.Close():关闭数据库 二、操作一:执行数据操作语句   1. sql:="insert into stu values (1, 'tom')" //sql语句   2. result,err:=db.Exec(sql) //执行sql语句   3. n:=result.RowsAffected();  //获取受影响的记录数 三、操作二:执行预处理   1. stu:=[2][2]string{{"3","ketty"},{"4","rose"}}   2. stmt,_:=db.Prepare("insert into values (?,?)")  //获取预处理语句对象   3. for _,s:=range stu{     stmt.Exec(s[0],s[1])  //调用预处理语句   } 四、操作三:查询单行   1. var id,name

mysql优化

廉价感情. 提交于 2020-01-01 12:57:29
MySQL逻辑架构(B/S结构) MySQL逻辑架构整体分为三层 : 客户端 : 并非MySQL所独有,诸如 : 连接处理、授权认证、安全等功能均在这一层处理 核心服务 : 包括查询解析、分析、优化、缓存、内置函数(比如 : 时间、数学、加密等函数),所有的跨存储引擎的功能也在这一层实现 : 存储过程、触发器、视图等 存储引擎 : 负责 MySQL 中的数据存储和提取,和 Linux 下的文件系统类似,每种存储引擎都有其优势和劣势,中间的服务层通过 API 与存储引擎通信,这些 API接口 屏蔽不同存储引擎间的差异 具体的逻辑架构如下所示: 我们可以看到和我们的应用架构类似 都有连接池,缓存,内存管理,网络交互,访问控制等 MySQL查询过程 把上面的查询过程结合服务层架构的各个模块来看 MySQL 整个查询执行过程,总的来说分为 5 个步骤 : 1> 客户端向 MySQL 服务器发送一条查询请求,mysql会使用连接池进行连接 2> 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果,否则进入下一阶段 3> 服务器进行 SQL解析、预处理、再由优化器生成对应的执行计划 4> MySQL 根据执行计划,调用存储引擎的 API来执行查询 5> 将结果返回给客户端,同时缓存查询结果 影响性能的因素: 定位性能问题永远要从宏观层面去查看问题