(一) 環境描述
操作系統:Linux x3755-31 2.6.18-308.el5
硬件配置:2*8Core CPU,6*SAS*15K*600G,RAID1+0,256G MEM
數據庫版本:MySQL5.5.27-log
數據庫架構:MySQL雙主復制,及雙主復制+外掛Slave模式(注:讀寫分離模式)
(二) 故障信息
a) 復制相關的my.cnf參數配置
server-id=3306
slave-skip-errors=1022,1032,1062
log_slave_updates=1
log_bin_trust_function_creators=1
auto_increment_increment=2
auto_increment_offset=1
#bind-address=10.0.2.31
#hostname=
log-bin=/data/mysqldata/binlog/mysql-bin.index
log-bin=/data/mysqldata/binlog/mysql-bin
relay-log=/data/mysqldata/relaylog/mysql-relay-bin.index
relay-log=/data/mysqldata/relaylog/mysql-relay-bin
b) 復制搭建步驟
l 復制相關參數環節有一個存儲中繼日志文件的目錄,遺憾是過往我都是默認方式存儲,現有的安裝腳本未寫入相關命令;
l 手工創建目錄命令:mkdir -p /data/mysqldata/relaylog,未執行更改屬主的命令:
chown mysql:mysql /data/mysqldata/relaylog
l mysql命令下輸入復制搭建的命令:
CHANGE MASTER TO master_host=’10.0.2.30′,master_user=’repl’,
master_password=’repl#3306′,master_log_pos=499,
master_log_file=’mysql-bin.000001′;
l 執行命令之後出現的錯誤信息為:
ERROR 29 (HY000): File ‘/data/mysqldata/relaylog/mysql-relay-bin.index’ not found (Errcode: 13)
備注:執行shell命令工具 perror 13 會告訴你是無訪問權限
l 因權限問題出錯,那麼就必須為中繼日志文件目錄變更權限信息,命令為:
chown mysql:mysql /data/mysqldata/relaylog
l mysql命令行下繼續執行復制搭建的命令CHANGE MASTER TO …,依然報錯,查閱*.err文件可以發現的信息為:
Error (Code 1201): Could not initialize master info structure; more error messages can be found in the MySQL error log
(三) 解決辦法
查看*.err文件中的錯誤提示信息,咂看還以為是MySQL軟件存在復制方面的BUG,這個時候我們主動去看下數據目錄,配置的路徑為:/data/mysqldata/mydata,其下已經生成了一個0KB的空文件master.info,正式因為這個文件導致mysqld提示復制無法初始化主數據庫服務器的信息,直接刪除0字節文件:rm -f /data/myqldata/mydata/master.info,再充型執行CHANAGE MASTER TO 命令,復制搭建成功,且生成了記錄主數據庫服務器信息的master.info文件。
(四) 總結
a) 工作中不嚴謹的作風是出現問題的根源;
b) 問題的發生現象可能會迷惑我們的演講,必須學會正反方向推理和分析;
c) 掌握過硬的技術,熟悉使用的產品,是減少或解決問題的利劍