場景:小張在巡檢時發現公司一臺數據庫經常寫不入數據,於是登錄數據庫所在的主機一看,原來是數據庫對應的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
即可解決
檢查數據庫日誌看看有什麼異常報錯不
沒異常報錯,可以正常使用了。