天天看點

mysql bin-log 主從配置

修改mysql配置檔案

一般mysql配置檔案在目錄/etc下,叫my.cnf (如果找不到的話也有可能在這些目錄下:/etc/my.cnf,/etc/mysql/my.cnf,/usr/local/mysql/etc/my.cnf,~/.my.cnf)

windows 下該檔案在 mysql 安裝目錄 下。

主機配置如下:

server-id              =   2                   #伺服器id (主從必須不一樣)
log-bin                =   mysql-bin           #打開日志(主機需要打開),這個mysql-bin也可以自定義,這裡也可以加上路徑,如:/home/www/mysql_bin_log/mysql-bin

#作為主機的配置
binlog-do-db           =   db1                 # 要給從機同步的庫
binlog-do-db           =   db2                 # 要給從機同步的庫
binlog-ignore-db       =   mysql               # 不給從機同步的庫

expire_logs_days       =   2                   # 自動清理 2 天前的log檔案,可根據需要修改
           

從機配置如下:

server-id                   =   3                  #伺服器id (主從必須不一樣)

#作為從機的配置
master-host                =   x.x.x.x             # 目标主機IP
master-user                =   user                # 目标主機使用者名
master-password            =   password            # 目标主機密碼
master-port                =   3306                # 目标主機端口
master-connect-retry       =   60                  # 連結重連間隔(機關s)
replicate-ignore-db        =   mysql               # 不從主機同步的資料庫(多個寫多行)
replicate-do-db	           =   db1                 # 要從主機同步的庫(多個寫多行)
replicate-do-db            =   db2                 # 要從主機同步的庫(多個寫多行)
log-slave-update   # 啟用從機伺服器上的slave日志功能,使這台計算機可以用來構成一個鏡像鍊(A->B->C)
slave-skip-errors  # 跳過錯誤,從機一般應該配置該項
           

PS:将這些配置添加到配置檔案[mysqld] 下方即可,原來的配置盡量保留

配置檔案修改好之後,重新開機 主機 mysql,重新開機從機 mysql。

若要兩台伺服器互為主從,配置裡面 主從的配置都加上即可。

最後附上一些常用的 主從 查詢 及 設定指令:

mysql 指令行下

show slave status\G;  //在從機上查詢從機狀态

show master status\G; //在主機上查詢主機狀态

show master logs;//在從機上查詢主機二進制log檔案清單

如果發現 從機同步出錯,可以在從機上手動設定一下同步狀态:

slave stop;
change master to master_host='192.168.10.11',master_user='user',master_password='password',master_log_file='mysql-bin.000056',master_log_pos=25094639;//隻設定必要的字段即可
slave start;
           

如果上面的方法解決不了問題,可以試試下面的方法(在從機上):

slave stop;
reset slave;
slave start;
           

還有一些操作主機的指令,也是mysql指令行下的指令:

show binary logs; //檢視主機二進制log檔案清單

flush logs; //送出日志(就是新生成一個二進制log檔案)

flush logs;
reset master;//清除之前所有的二進制log檔案,并且新的log檔案字尾将從 000001 開始
           

第一次寫部落格,不好請見諒,有不對的地方歡迎指正 ^_^

繼續閱讀