datadir没数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了datadir没数据相关的知识,希望对你有一定的参考价值。
参考技术A 用yum安装的mysql数据库/etc/my.cnf文件只是满足基本要求, 如: [mysqld] datadir=/var/lib/mysql 参考技术B ysql datadir不存在_解决修改mysql的data_dir所引发的错误weixin_39542111
码龄5年
今天,搭建新购的阿里云ECS环境(ubuntu 16.04 LTS),需要将mysql的数据保存在新挂载的磁盘上(已挂载到/mnt下),先停掉mysql服务,然后查看mysql并数据保存的位置:
vi /etc/mysql/mysql.conf.d/mysqld.cnf
发现datadir=/var/lib/mysql, 这也就是数据所在目录,于是将它修改为datadir=/mnt/mysql, 然后保存, 最后将mysql保存的数据的拷贝到/mnt下:
cp -r /var/lib/mysql /mnt
chown -R mysql:mysql /mnt/mysql
完成拷贝后,本以为一切就绪,开启mysql服务:
systemctl start mysql
但是却发现启动失败,于是再去看看mysql的错误日志:
tail -f -n100 /var/log/mysql/error.log
发现错误信息如下:
[Warning] Can't create test file /mnt/mysql/iZwz9c03srb2lq9l374if5Z.lower-test
细想一下,mysql的配置应该没问题了啊。检查一下apparmor的配置:
vi /etc/apparmor.d/usr.sbin.mysqld
发现其中有如下配置:
# Allow data dir access
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
坑爹啊,刚刚将mysql配置文件的datadir的/var/lib/mysql已经改了,但是却仍然被这儿限制了,于是,将它修改为:
# Allow data dir access
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/mnt/mysql/ r,
/mnt/mysql/** rwk,
保存。重启apparmor服务:
service apparmor restart
然后再次启动mysql服务:
systemctl start mysql
服务终于启动成功了。。。
如何查询修改参数状态值
Q:何为“数据库”?
A:
也就是说数据库实例,“数据库” = 数据库软件 + 数据库:存于磁盘中
1、数据库里面存表:放置在datadir目录下
mysql> show variables like \'datadir\';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| datadir | /mydata/ |
+---------------+----------+
2、软件是用来管理数据库的:放置在basedir目录下
mysql> show variables like \'basedir\';
+---------------+------------------+
| Variable_name | Value |
+---------------+------------------+
| basedir | /usr/local/mysql |
+---------------+------------------+
3、数据库工作原理概述
用户连接到数据库里,对数据库进行操作,将磁盘里数据库中的数据读取到内存中(物理读),内存中的数据被用户读取(内存读),内存读的速度(基本可忽略)是物理读的速度的好几万倍。
数据库之所以快的原因是,数据库有一个大的内存作为缓存,少了对磁盘文件的读取,也就将速度降下来了。
MySQL启动之后,先会在内存里分配一小块空间作为用户工作空间,够用即可;随着用户对数据库的使用,空间逐渐扩张,最大到innodb_buffer_pool_size 的数值大小(该空间大小至少可占物理内存的一半以上,一般设置为服务器物理内存的70%)。
那么问题来了,如何对MySQL数据库中的参数、状态值进行查询、修改呢?
1、参数状态值的查询与修改
在官方文档的Server Option / Variable Reference部分,进行参考查看MySQL的参数变量以及状态值
1、cmd-line表示能否在mysql安全启动(mysqld_safe)的命令行中进行参数设置 --var_name=……
2、option file表示能否在mysql的参数文件(my.cnf)中进行参数设置
3、system var表示是否是系统变量@@:全局、会话
4、status var表示是否是状态变量
5、var scope表示变量的范围:全局global、会话session、both表示既可以是作为全局级别的,也可以作为会话级别的
6、dynamic表示是否是动态参数,yes是动态,no是静态,varies是根据数据库版本而定
2、使用官方文档来参考MySQL的变量参数、状态参数:
1、名字
2、作用
3、修改值的范围
4、单位
5、是否需要重启
6、默认值的大小
7、作用域
注意:
如果是全局系统变量的修改的话,最好是在mysql> set @@global.var_name=…; 修改完后,将global.var_name=…变量的修改同时写入参数文件中,也就是MySQL的配置文件my.cnf里保存。
以上是关于datadir没数据的主要内容,如果未能解决你的问题,请参考以下文章
Mysql 更换my.ini 中的datadir后,无法启动mysql,如果更换回来就正常。
Windows 下使用mysql installer安装的MySQL数据文件存放位置datadir的修改