[技术干货] 编译安装的mysql如何更改文件路径

[复制链接]
乐维 发表于 2020-4-10 10:01:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
场景:小张在巡检时发现公司一台数据库经常写不入数据,于是登录数据库所在的主机一看,原来是数据库对应的50G磁盘分区满了,而主机上还有另外一个500G的磁盘分区没在用,于是小张请示完领导后,准备将数据库的日志等占空间的文件位置更换到更大的那个分区。
PS:本环境为单机环境,主备环境或主主环境操作会有所不同)

1、首先是解决掉磁盘分区空间用完的情况并备份数据库,小张删除了改磁盘分区下的几个安装包文件,再进入数据库清理下binlog日志:
登录数据库,执行:
> reset master;
退出数据库
#mysqldump -u 用户 -p密码 --all-databases | gzip > /opt/backup.sql.gz
PS:在动数据库之前切记备份,以免发生意外事故


2、确定mysql具体安装路径,各个文件的位置。
# ps -ef | grep mysql
1.png
查看etc下的my.cnf文件,由于数据库是编译安装的,日志等文件位置都设置在/data下
# cat /etc/my.cnf | grep data/mysql
datadir=/data/mysql/data #mysql数据库文件所在目录
tmpdir=/data/mysql/data #mysql数据库临时文件目录
log-error=/data/mysql/log/error.log
general_log_file=/data/mysql/log/general_log.log
log_bin                 = /data/mysql/binlog/mysql-bin.log
relay_log               = /data/mysql/binlog/mysql-relay-bin.log
slow_query_log_file=/data/mysql/log/slow.log #慢查询日志
innodb_data_home_dir = /data/mysql/data #这是InnoDB表的目录共用设置。
innodb_log_group_home_dir = /data/mysql #InnoDB 日志文件的路径。


3、停用mysql,编辑my.cnf更改路径位置,这里更改为/opt下
#service mysqld stop
更改前文件指定位置如下:
# cat /etc/my.cnf | grep data/mysql
datadir=/data/mysql/data #mysql数据库文件所在目录
tmpdir=/data/mysql/data #mysql数据库临时文件目录
log-error=/data/mysql/log/error.log
general_log_file=/data/mysql/log/general_log.log
log_bin                 =/data/mysql/binlog/mysql-bin.log
relay_log               = /data/mysql/binlog/mysql-relay-bin.log
slow_query_log_file=/data/mysql/log/slow.log #慢查询日志
innodb_data_home_dir = /data/mysql/data #这是InnoDB表的目录共用设置。
innodb_log_group_home_dir = /data/mysql #InnoDB 日志文件的路径。

更改后文件指定位置如下:
# cat /etc/my.cnf | grep data/mysql
datadir=/opt/data/mysql/data #mysql数据库文件所在目录
tmpdir=/opt/data/mysql/data #mysql数据库临时文件目录
log-error=/opt/data/mysql/log/error.log
general_log_file=/opt/data/mysql/log/general_log.log
log_bin                 = /opt/data/mysql/binlog/mysql-bin.log
relay_log               = /opt/data/mysql/binlog/mysql-relay-bin.log
slow_query_log_file=/opt/data/mysql/log/slow.log #慢查询日志
innodb_data_home_dir = /opt/data/mysql/data #这是InnoDB表的目录共用设置。
innodb_log_group_home_dir = /opt/data/mysql #InnoDB 日志文件的路径。

还需要修改/etc/init.d/mysqld这个文件跟mysql-bin.index里的内容,将路径/data/mysql/data修改为/opt/data/mysql/data
#cat /etc/init.d/mysqld | grep data/mysql
datadir=/opt/data/mysql/data

#vim /opt/data/mysql/binlog/mysql-bin.index
/opt/data/mysql/binlog/mysql-bin.000001
2.png


4、转移数据库文件路径
#cd /
#mv data/ /opt/


5、启动mysql,成功启动
3.png
这里warning只是个提示,不是数据库的报错,执行下面命令
#systemctl daemon-reload
即可解决

检查数据库日志看看有什么异常报错不
4.png
没异常报错,可以正常使用了。

技术交流欢迎加入Q群:177428068








上一篇:Zabbix“专家坐诊”第54期问答汇总
下一篇:awk脚本切割数据库8.0命令结果时出现报错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝0

帖子175

发布主题

乐维社区

微信公众号

版权所有 © 2016-2019 九一乐维丨粤ICP备17007026号