引言

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL

关于如何更改datadir目录的问题:

ubuntu默认安装mysql的时候,会将datadir设置为

/var/lib/mysql

下面,但是我们大多数时候都需要指定一个我们准备好的方便查找的目录为数据存储目录,我们可以在

my.cnf

下面更改

datadir

这一行,将'

=

'后边的目录更改成我们自己的目录即可。

例如:我将datadir改成

/data

下,则在my.cnf中做如下更改,在

[mysqld]

port = 3306

basedir = /usr

datadir = /data/mysql

更改完成保存退出,可以重启mysql服务了,不知道您的服务器会不会报错,我的反正mysql是起不来了。只要将datadir换回来就能启动。出现这个问题的原因是在ubuntu中存在一个apparmor的服务。

这个服务主要作用是主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。(原来,我们虽然讲新的目录所有者改为了mysql,但我们没有告诉mysql要给新的目录什么权限,于是就悲剧了)

他的配置文件在

/etc/apparmor.d/

中,在这里我们可以看到一个

usr.sbin.mysqld

的配置文件,打开看一下就明白了。我们的日志路径、pid路径等等都存放在这里,所以我们要改datadir路径,这里也需要做更改,要更改log路径同样也要在这里更改。更改后配置如下:

/logs/mysql/mysql.log rw,

/logs/mysql/mysql.err.log rw,

/data/mysql/ r,

/data/mysql/** rwk,

/logs/mysql/ r,

/logs/mysql/* rw,

这是我更改过的路径。更改完成以后,因为这是一个服务,所以我们需要重启一下这个服务。

/etc/init.d/apparmor restart

这里基本上不会存在问题了,(我就是在这里重启了一下服务器,就OK了),如果还是无法启动你的mysql,那么请使用如下命令

mysql_install_db --datadir=/data/mysql

查看一下是不是有报错信息,根据错误排查一下。

最终按照这个方法解决了问题。真是多谢前辈。

最后本人做个总结,只作为一种尝试解决方案:

将mysql默认的datadir目录"/var/lib/mysql"改为 "/home/mysql_data"

1、关掉数据库

sudo /etc/init.d/mysql stop

2、因为我们指定的数据库文件目录为/home/mysql_data

cd /home //打开home

mkdir mysql_data //创建目录

chown mysql:mysql mysql_data //并修改其拥有者及所属群组为mysql:mysql.命令

//修改mysql配置文件my.cnf:

将 datadir=/var/lib/mysql 改为 datadir=/home/mysql_data

3、修改ubuntu中的安全设置

sudo gedit /etc/apparmor.d/usr.sbin.mysqld

在这个文件里面加入权限设定,将原来的

/var/lib/mysql/ r,

/var/lib/mysql/** rwk,

更换成(或直接添加)

/home/mysql_data/mysql/ r,

/home/mysql_data/mysql/** rwk,

4、重新初始化数据文件:执行

sudo mysql_install_data

5、启动mysql数据库服务(或重启服务器):

sudo /etc/init.d/mysql start

这个方法中最值得一提是修改

/etc/apparmor.d/usr.sbin.mysqld

这个文件,改变应用程序的权限。

MySQL索引实现

在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。

MyISAM索引实现

MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:

图1

这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。如果我们在Col2上建立一个辅助索引,则此索引的结构如下图所示:

图2

同样也是一颗B+Tree,data域保存数据记录的地址。因此,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。

MyISAM的索引方式也叫做“非聚集”的,之所以这么称呼是为了与InnoDB的聚集索引区分。

总结

以 上就是我对Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现问题及其优化总结,分享给大家,觉得收获的话可以点个关注收藏转发一波喔,谢谢大佬们支持!

最后,每一位读到这里的网友,感谢你们能耐心地看完。希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步!都能赢取白富美,走向架构师的人生巅峰!

想了解学习Java方面的技术内容以及Java技术视频的内容可加群:722040762 验证码:头条(06 必过)欢迎大家的加入哟!

java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...相关推荐

  1. 来了超火爆的Java游戏羊了个羊_java开发游戏项目

    <羊了个羊>是一款网络上的卡通背景消除闯关游戏,游戏利用各种道具和提示来消除每一个关卡当中的障碍和陷阱. 游戏规则 羊了个羊在游戏下方共有7个槽位,玩家只要把3个相同方块点到槽位中就会消除 ...

  2. java中e的几次方_java怎么算e的几次方

    java怎么算e的几次方 [2021-02-06 06:39:03]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...

  3. 【尚学堂】超火爆的Java游戏羊了个羊_java开发游戏项目

    <羊了个羊>是一款网络上的卡通背景消除闯关游戏,游戏利用各种道具和提示来消除每一个关卡当中的障碍和陷阱. 游戏规则 羊了个羊在游戏下方共有7个槽位,玩家只要把3个相同方块点到槽位中就会消除 ...

  4. java: 程序包lombok不存在_Java开发神器:Lombok 学习指南

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:semlinker www.segmentfault.com/a/119000002 ...

  5. java用输入流创建数据文件_java开发知识IO知识之输入输出流以及文件

    java开发知识IO知识之输入输出流以及文件 一丶流概述 流十一组有序的数据序列.根据操作的类型,可以分为输入流跟输出流两种. IO(input/output)输入/输出流提供了一条通道程序.可以使用 ...

  6. java电商网站建设教程_java开发电商系统实战开发视频教程

    JAVA 当前位置:主页 > 编程教程 > JAVA > java开发电商系统实战开发视频教程 java开发电商系统实战开发视频教程 教程大小:4GB   发布时间:2018-07- ...

  7. java开发报错怎么处理_Java开发中常见报错及解决办法

    前言: 在项目开发中,往往会遇到很多错误,有些是代码有误,而有些则是其他原因.接下来一起看看常见的报错及解决办法(小白整理,大牛勿喷). 一.找不到Xxx.Xxx.entity.Xxx.java 最近 ...

  8. java哪座城市好就业_Java开发工程师在哪些城市比较好就业?

    原标题:Java开发工程师在哪些城市比较好就业? Java语言已经诞生了23年之久,虽然近些年面对很多新兴编程语言的崛起与流行,但是Java语言的地位与影响力始终难以撼动.一方面Java可以编写桌面应 ...

  9. java中math类的作用_Java开发知识之Java的数字处理类Math类

    Java开发知识之Java的数字处理类Math类 一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是Decim ...

最新文章

  1. Linux下程序崩溃dump时的 core文件的使用方法
  2. 【荐】如何规划 Nginx 网站目录的权限(用户,用户组,ssh,sftp)
  3. python学习干货教程(11):元组
  4. 什么是区块链?什么是比特币?一文轻松看懂!
  5. 刘宏伟计算机组成,哈工大组成原理和数据结构 ppt 计算机组成原理刘宏伟 版本一 第18讲...
  6. Spring Aop中解析spel表达式,实现更灵活的功能
  7. 关于主机远程唤醒(WOL,Wake on Lan)的几种方法
  8. 华为云ECS服务器上安装docker
  9. 网易杭研 java 校招_09网易杭研校园招聘面试题
  10. Python数据结构栈,后进先出
  11. subscript on non-array or too many dimensions
  12. sap 修改主机名过程
  13. 提问的艺术 - 敏捷教练技巧
  14. 黑苹果 技嘉 B250M-DS3H-CF i57500 HD630 EFI引导驱动发布
  15. BLAS 1级例程(向量-向量操作)
  16. python3新式类_Python之新式类与经典类
  17. MT6763芯片datasheetMT6763芯片规格书MT6763芯片数据手册资料
  18. 为老蓝天主板BIOS注入NVME模块
  19. PyAutoGUI Doc
  20. Android之Button样式

热门文章

  1. Asp.net MVC在Razor中输出Html的两种方式
  2. HttpClient Get/Post方式调用Http接口
  3. idea修改文件名后出现main method should be static错误
  4. 翻译题(map使用)
  5. wp8数据存储--独立存储文件 【转】
  6. EntityModelStudio系列教程2--静态建模之实体模型设计
  7. linux-ubuntu下调出中文输入法
  8. 异常单据锁定涉及的数据库表
  9. 3.2_ 2_ 请求分页管理方式
  10. 图计算-Pregel-Hama