場景:小張在巡檢時發現公司一台資料庫經常寫不入資料,于是登入資料庫所在的主機一看,原來是資料庫對應的50G磁盤分區滿了,而主機上還有另外一個500G的磁盤分區沒在用,于是小張請示完上司後,準備将資料庫的日志等占空間的檔案位置更換到更大的那個分區。
(PS:本環境為單機環境,主備環境或主主環境操作會有所不同)
1、首先是解決掉磁盤分區空間用完的情況并備份資料庫,小張删除了改磁盤分區下的幾個安裝封包件,再進入資料庫清理下binlog日志:
登入資料庫,執行:
reset master;
退出資料庫
#mysqldump -u 使用者 -p密碼 --all-databases | gzip > /opt/backup.sql.gz
PS:在動資料庫之前切記備份,以免發生意外事故
2、确定mysql具體安裝路徑,各個檔案的位置。
#ps -ef | grep mysql
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yMiVDO5YTYxM2YjFjN4IDNkJTN1MjZihTM5UDZ3gjNy8CXwEzLcRDMwIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.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
更改前檔案指定位置如下:
log_bin=/data/mysql/binlog/mysql-bin.log
更改後檔案指定位置如下:
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