mysql bin目录在哪data下面目录下有很多mysql-bin的文件,能删除吗

Ubuntu下迁移MySQL数据库文件目录
用Ubuntu的apt包管理工具安装的,默认将数据库文件保存在/var/lib/mysql目录下,时间久了数据库越来越大,所以准备挂载个新的硬盘专门存放my。
1、确定mysql数据库文件存放目录
一般默认是在/var/lib/mysql目录下。先登录自己的mysql数据库,比如我用root账户登录,然后使用下面查询语句查询:
show variables like '%dir%';
得到数据库文件配置信息:
vcbk1tBkYXRhZGlytcQmIzIwNTQwO86qL3Zhci9saWIvbXlzcWwvvLTOqrWxx7DK/b7dv+LOxLz+tOa3xcS/wryhozwvcD4KPHA+we3N4tK7uPZiYXNlZGlyss7K/bHtyr5teXNxbMr9vt2/4rXEsLLXsM671sOjrMeo0sbK/b7dv+LOxLz+zrvWw7K70OjSqrjEtq/V4rj2ss7K/aGjPC9wPgoKPGgxPjKho0sbK/b7dv+LOxLz+tb3QwrXExL/CvM/CPC9oMT4KCjxwPs/IyrnTw8/Cw+bD/MHuvatteXNxbMr9vt2/4rf+zvHNo9a5o7o8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:">sudo /etc/init.d/mysql stop
我新的数据盘挂载在/mnt/data目录下,因此要将数据库迁移到/mnt/data。
2.1 可以使用mv命令将原数据库目录文件移动到新的目录,好处是不会简单,不会修改原数据库文件的权限,以及用户和用户组归属:
sudo mv /var/lib/mysql /mnt/data/
2.2 也可以使用cp复制命令将原数据库目录文件复制到新的目录,好处是。。万一迁移失败,恢复工作相对简单一点,等确认迁移成功再来删掉原数据库目录文件也不迟。为了不影响复制过来数据库目录文件权限和用户用户组归属问题,使用cp命令时要加上-a参数:
sudo cp -a /var/lib/mysql /mnt/data/注:由于/var/lib/mysql目录归属于mysql数据库创建的mysql用户和mysql用户组,所以迁移文件的时候需要使用root权限,命令要使用sudo
迁移成功后,可以看到/mnt/data/目录下已经将mysql数据库文件迁移过来了,并且目录文件的用户用户组归属还是mysql,没有变化:
3、修改配置文件
一共有三个配置文件需要修改:
mysql数据库会按顺序优先级从/f、/etc/f、/usr/f、~/.my.cnf四个位置找my.cnf配置文件,一旦找到就不再继续往下找。Ubuntu默认将my.cnf配置文件放在/etc/f位置,所以在/f位置没有找到这个配置文件。
选择自己使用的文本编辑器编辑my.cnf配置文件,我用vim,所以sudo vim /etc/f。一样需要sudo,使用root权限编辑。将其中[mysqld]标签下的datadir属性值改为新数据库目录路径/mnt/data/mysql,如图:
修改后保存并退出。
3.2 usr.bin.mysqld文件
由于Ubuntu使用了apparmor安全模块,就是类似于沙盒运行的一种机制,它可以限制软件在运行时的一些行为,比如对哪些目录和文件可以读写加锁等等。
由于修改了数据库文件路径,所以要修改mysql数据库的apparmor配置文件,在其中将新数据库文件目录和文件的读写及加锁权限添加上去,同时可以删除或者注释掉原先/var/lib/mysql数据库文件目录的权限。mysql数据库的apparmor配置文件路径在/etc/apparmor.d/usr.sbin.mysqld。使用下面命令编辑这个配置文件:
sudo vim /etc/apparmor.d/usr.sbin.mysqld
找到其中的
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
两行权限声明,可以在前面加上#好注释掉。然后对照格式,加入新路径的权限声明:
/mnt/data/mysql/ r,
/mnt/data/mysql/** rwk,
结果如图:
保存并关闭。
3.3 abstractions/mysql文件
由于usr.bin.mysqld文件中引用了abstractions/mysql文件,也就是会将abstractions/mysql文件中的权限声明导入进来。因此,也修改下这个文件:
sudo vim /etc/apparmor.d/abstractions/mysql
同样也是将新数据库文件路径中的socket文件权限添加进去,同时可以删除或者注释掉全路径中申请的权限,效果如图:
保存后退出。
4、重启数据库
配置文件修改成功后就可以重启数据库,重启数据库之前需要先重新载入apparmor配置文件,使用下面命令重新载入:
sudo /etc/init.d/apparmor restart
重载成功就可以使用下面命令启动数据库:
sudo /etc/init.d/mysql start
5、权限问题
经过上诉步骤之后,你有可能数据库无法启动。忽略继续登录数据库出现下面关于sock的错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
查看数据库的启动错误日志,sudo vim /var/log/mysql/error.log,还能看到Table 'plugin' is read only这样的错误:
出现这种情况的原因还是在于新数据库文件目录的权限。
mysql数据库启动的时候需要以mysql用户的身份执行,所以mysql用户需要具备能读写数据库文件目录的权限。虽然上面迁移数据库文件的时候无论是使用mv还是cp -a命令都没有更改mysql目录的用户和用户组,上面也看到了/mnt/data/mysql所属的用户和用户组都还是mysql。因此可以肯定mysql用户具备读写/mnt/data/mysql的权限,但是这并没有保证上级目录/mnt/data和上上级目录/mnt也具备让mysql用户读取的权限。如果mysql用户不具备上级目录/mnt/data和上上级目录/mnt的读取权限,mysql用户一样读写不了自己的/mnt/data/mysql目录,因此就会出现上面的问题。
可以过头来看看原本数据库文件目录/var/lib/mysql的结构:
可以看出原本数据库文件目录/var/lib/mysql的上级目录/var/lib属于虽然属于root用户,但是它为同组用户和其它组用户都开放了’r"和‘x'权限,所以即使上级目录不属于mysql用户,mysql用户同样也能正常进入并访问到自己的数据库文件。
解决这个问题的方法说起来就是这么简单,只要保证mysql用户具备最终数据库文件目录的所有上级目录的'r'和‘x'权限就可以了。
例如,使用下面命令修改本文中/mnt/data的权限:
sudo chmod 755 /mnt/data
再上级目录/mnt是目录,归属于root用户,root用户默认的目录的权限都是755,所以不用修改。
权限修改后再次启动数据库sudo /etc/init.d/mysql start,应该就能成功启动了。
进入数据库,查看当前路径配置信息:
数据库已经正常启动, 并且数据库文件路径也已经替换到/mnt/data/mysql目标路径,数据库文件迁移成功。MySQL 临时目录 - CSDN博客
MySQL 临时目录
MySQL数据目录/data/mysql所在的上层目录/data磁盘空间不足导致MySQL启动失败,所以清理了/data目录下除了mysql子目录外的其他无用目录。重启发现还是失败。检查错误日志。看到如下错误:
/usr/local/mysql/bin/mysqld: Can't create/write to file '/data/tmp/ibbLmEoD' (Errcode: 13 - Permission denied)
原来是清理无用目录时不小心把MySQL配置文件中指定的tmpdir——/data/tmp目录也给删除了,导致MySQL Server启动时的一些临时文件或表无法写入,从而启动失败。重建目录并赋予正确的权限后,重启MySQL Server,正常启动。
顺便说一说MySQL 临时目录这个参数:
命令行参数格式:--tmpdir=path
配置文件参格式:tmpdir=path
临时目录用于存储临时文件或临时表。值可以是一个使用“:”(Unix)或“;”(Windows)分隔的路径列表,这些路径可被轮流使用,以便将负载分到不同磁盘。若MySQL server是作为Slave的角色,则不能将该目录指向基于内存文件系统的目录或者当主机重启时会被清理掉的目录,因为Slave需要这些文件复制临时表或执行LOAD DATA INFILE操作,这些文件丢失会导致复制失败。这意味着不能讲slave的tmpdir设置为linux系统默认的/tmp目录。对于Slave可以使用另一配置项slave_load_tmpdir来设置其临时目录,这样Slave可以不使用通用选项tmpdir设置的临时目录。对于非Slave角色的MySQL&server没此限制。
若临时目录不存在或权限不正确不仅会引起MySQL Server启动失败还会导致其他可能使用到临时目录的MySQL实用程序运行异常。很多MySQL相关程序会从MySQL Server的配置文件读取选项值,比如全备程序xtrabackup,下面这个错误就是因为MySQL Server配置文件中指定的临时目录不存在造成的。
xtrabackup_56: Can't create/write to file '/data/tmp/ibHbumcM' (Errcode: 2 - No such file or directory)
16:04:42 7f1b25c607e0 &InnoDB: Error: unable to c errno: 2
xtrabackup: innodb_init(): Error occured.
innobackupex: Error:&
innobackupex: ibbackup failed at /usr/bin/innobackupex line 389.
本文已收录于以下专栏:
相关文章推荐
mysql查询出现:mysql 126, &Incorrect key file for table '/tmp/#sql_597e_1.MYI'; try to repat it
原因是:执行my...
MySQL数据文件介绍及存放位置
一、MySQL数据库文件介绍
MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQ...
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误信息: CS0016: 未能写入输出文件“c:/WINDOWS/Microsoft.N...
操作系统不同 这个系统属性所表示的目录也不同
On Windows: java.io.tmpdir:[C:\DOCUME~1\joshua\LOCALS~1\Temp\]
Spark 的Job任务在运行过程中产生大量的临时目录位置,导致某个分区磁盘写满,主要原因spark运行产生临时目录的默认路径/tmp/spark*
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)删除mysql-bin.00000*的方法【怎么关闭mysql日志?】_不懂博客
不懂博客—所知甚少因而建立此博客记录不懂知识;学习、关注、体验互联网。
删除mysql-bin.00000*的方法【怎么关闭mysql日志?】
来源:原创 作者: 时间:
首先说明,mysql-bin.00000*类似的文件是mysql的日志文件。
很多人安装的mysql是开启了日志文件记录的,一般有比较频繁的mysql数据库操作就会产生大量的日志文件在/usr/local/mysql/var/下面,一般产生的日志文件都类似如下:
-rw-rw---- 1 mysql mysql 2.0M Sep 28 17:08 mysql-bin.000001
-rw-rw---- 1 mysql mysql 1.1G Nov 13 14:43 mysql-bin.000002
-rw-rw---- 1 mysql mysql 1.1G Nov 13 15:17 mysql-bin.000003
-rw-rw---- 1 mysql mysql 561M Nov 13 15:52 mysql-bin.000004
-rw-rw---- 1 mysql mysql 904K Nov 13 16:07 mysql-bin.000005
-rw-rw---- 1 mysql mysql 194M Nov 16 16:40 mysql-bin.000006
-rw-rw---- 1 mysql mysql 123M Nov 18 19:18 mysql-bin.000007
-rw-rw---- 1 mysql mysql& 456 Nov 16 16:41 mysql-bin.index
从上面可以看到,这些mysql-bin.00000* 类似的文件有的体积非常大,而且一般都在几十MB到几个GB,更甚会吃掉整个硬盘空间,从来导致mysql无法启动或报错,所以在没有必要的情况下我们是可以不用开启日志文件的。
先说下删除mysql日志的方法:
执行:/usr/local/mysql/bin/mysql -u root -p
输入密码登录后再执行:
这样就可以了,当然也可以手动删除,但是可能会产生一些副作用,我没去证实过。
那如何避免以后再产生这些文件呢,如何关闭mysql的日志功能呢?方法如下:
log-bin=mysql-bin
binlog_format=mixed
将这两行注释掉,前面加上#,再重启mysql就可以了。
假如说你是手工删除的mysql日志文件(mysql-bin.00000*)发现mysql启动不了,那么你看一下mysql-bin.index这个文件是否还存在,如果还存在的话就将mysql-bin.index也删除,然后就可以正常启动了。
分类目录:
上一篇: 下一篇:查看: 6052|回复: 12
求助,请问下mysql data下面目录下有很多mysql-bin的文件,能删除吗?
这些文件非常大,已经有24G了,空间满了,能否删除一些,好像是数据缓存?
请知道的版主或网友告知一下!
以前也提过类是问题,目前无法解决。
截图上来看看.
删除MYSQl BIN-LOG 日志
BIN LOG 日志确实很大
请看这里;;
我估计是删除是没问题的,但能不能设置,不产生log,省的去删除。
my配置文件中找到log-bin注释掉.重启下服务
没做主从服务器吧?
已经注释过了,重启服务过了,还是有的。
顶上去,看看
重启后,你原来的直接删除就好了
Powered by安装mysql 5.7+版本时,若发现因根目录下,缺少data文件夹的情况,***请不要去拷贝其他版本的data文件夹!***因为此操作会出现很多潜在问题:比如我遇到的执行show variables like "%charact%"; 语句时,报错表不存在!打开cmd命令窗口,并且进入到mysql安装目录的bin目录下。然后输入命令:mysqld --initialize-insecure --user=mysql然后回车;去目录下查看,已经自动创建好data文件夹。问题解决!
阅读(...) 评论()

我要回帖

更多关于 mysql 安装目录bin 的文章

 

随机推荐