標籤:
背景: 預設情況下,mysql的資料、binlog、relaylog都是儲存在同一個磁碟上,路徑根據每個人的設定不一。
當mysql資料庫中資料或日誌增長很快時,磁碟可能面臨空間不夠或者IO效能跟不上,所以把日誌遷移到其他磁碟是首先想到的工作。
但日誌遷移的文檔並不多,本文根據實踐記錄,希望對大家有點參考作用。
假設遷移前的路徑如下:binlog: /data/mysql_data/
mysql資料: /data/mysql_data/
mysql relay log :/data/mysql_data/
計劃遷移的目標路徑是:binlog: /data2/mysql_binlog/
relaylog :/data2/mysql_relaylog/
一、遷移binlog 1、首先停止mysql2、複製所有binlog到其他磁碟,假設是:/data2/mysql_binlog/mysql-bin.*
同時要複製mysql-bin.index到新路徑 3、修改my.cnf設定檔log-bin=/data2/mysql_binlog/mysql-bin
4、編輯 mysql-bin.index把內容修改為絕對路徑:/data2/mysql_binlog/mysql-bin.000001
/data2/mysql_binlog/mysql-bin.000002
/data2/mysql_binlog/mysql-bin.000003
/data2/mysql_binlog/mysql-bin.000004
如果出現如下錯誤,則可能是沒有修改:/usr/local/mysql/bin/mysqld: File ‘./mysql-bin.000003‘ not found (Errcode: 2)
120301 22:51:06 [ERROR] Failed to open log (file ‘./mysql-bin.000003‘, errno 2)
120301 22:51:06 [ERROR] Could not open log file
120301 22:51:06 [ERROR] Can‘t init tc log
120301 22:51:06 [ERROR] Aborting
5、啟動mysql/ett/init.d/mysql start
二、遷移relay log
relaylog的遷移稍微有點不一樣,不知您發現沒有,my.cnf預設沒有relaylog的配置,其實是有的。 1、首先停止mysql2、把relaylog複製到目標路徑,假設是:/data2/mysql_relaylog/ubuntu-relay-bin.*
同時複製 ubuntu-relay-bin.index 3、同時在my.cnf中增加一條relay_log=/data2/mysql_relaylog/ubuntu-relay-bin.log
4、然後編輯 ubuntu-relay-bin.index 把路徑改為新的絕對路徑/data2/mysql_relaylog/ubuntu-relay-bin.*
5、編輯 relay-log.info檔案sudo vim /data1/mysqldata/relay-log.info
也是改為新的絕對路徑 6、啟動mysql/ett/init.d/mysql start
來源: <http://gavins.blog.51cto.com/2315765/828195>
來自為知筆記(Wiz)
【轉載】Mysql binlog relaylog 日誌遷移