场景:小张在巡检时发现公司一台数据库经常写不入数据,于是登录数据库所在的主机一看,原来是数据库对应的50G磁盘分区满了,而主机上还有另外一个500G的磁盘分区没在用,于是小张请示完领导后,准备将数据库的日志等占空间的文件位置更换到更大的那个分区。
(PS:本环境为单机环境,主备环境或主主环境操作会有所不同)
1、首先是解决掉磁盘分区空间用完的情况并备份数据库,小张删除了改磁盘分区下的几个安装包文件,再进入数据库清理下binlog日志:
登录数据库,执行:
reset master;
退出数据库
#mysqldump -u 用户 -p密码 --all-databases | gzip > /opt/backup.sql.gz
PS:在动数据库之前切记备份,以免发生意外事故
2、确定mysql具体安装路径,各个文件的位置。
#ps -ef | grep mysql
查看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
4、转移数据库文件路径
#cd /
#mv data/ /opt/
5、启动mysql,成功启动
这里warning只是个提示,不是数据库的报错,执行下面命令
#systemctl daemon-reload
即可解决
检查数据库日志看看有什么异常报错不
没异常报错,可以正常使用了。
原文地址:https://blog.51cto.com/14483703/2486188