mysql_master__(mysql_relay)__(mysql_slave)

部署 M-S-Smysql

  • 首先確保三臺機器要同步的庫的數據一致性的狀況下
  • Master的配置linux

    1. 建立用戶repl並受權,爲 relay_server提供服務,能夠在relay_server機器上用repl賬號,刷新權限使生效
    2. 配置 my.cnf,重啓 mysqld
      log-bin
      server-id
      binlog-do-db
      binlog-ignore-db
      sync-binlog=1
      binlog-format=row
  • relay_server的配置
  1. 配置 my.cnf
    a) Server-id=
    b) Log-bin=
    c) Log-slave-updates=1
    d) Binlog-format=row
  2. 重啓mysqld
  3. 開始slave,指定主服務器的相關信息
  4. 查看relay_server的狀態
  5. 做爲slave_server的主,爲slave提供服務,建立用戶並受權,刷新權限
  • Slave_server的配置

    配置my.cnf
    a) Server-id=
    b) Log-bin=
    c) Binlog-format=row
    重啓msqld
    開始slave,指定主服務器的相關信息
    查看slave的狀態sql

在 master上插入數據測試:
分別在 relay_server,slave_server上查看服務器

Relay_server也能查到數據,是由於存儲引擎的緣由ide

做爲relay_server只提供中繼服務,不儲存數據
Mysql> Set sql_log_bin=off;
Mysql> Alter table t1 engine=blackhole;測試

Mysql> set sql_log_bin=on;
特別注意:mysql –uroot –p123456 –e 「set sql_log_bin=off」這樣設置是不會生效的
本人在這裏浪費了很長時間???

這樣就實現了中繼,不提供存儲數據。orm


錯誤排查:server

當從服務器沒有主服務器同步的表t1時,向主服務器的表t1插入數據,些時從服務器會報錯。
Mysql> show slave status\G -- 挑選出來下面的問題點
Read_Master_Log_Pos: 2274
Slave_SQL_Running: No
Exec_Master_Log_Pos: 2020
Last_SQL_Errno: 1146
Last_SQL_Error: Error executing row event: 'Table 'db1.t1' doesn't exist'
查看主的事件記錄
mysql> show binlog events in 'apenglinux-001.000002' from 2020\G
End_log_pos: 2085
End_log_pos: 2274
在從上跳出兩個事務,2085,2274
在從上的操做:
mysql> stop slave;
mysql> set global sql_slave_skip_counter=2;
mysql> start slave;
mysql> show slave status\G -- 再次查看主從同步了事件

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息