1. 程式人生 > >數據庫主從同步

數據庫主從同步

replica 大小 server-id 負載 防止 數據庫 span 等於 ges

優點:對於負載比較大的網站,主從同步可以有效緩解數據庫讀寫壓力

-->mysql主從同步機制:

1.主服務器(master)將變更事件(更新,刪除,表結構變更)寫入二進制日誌(master log)

2.從服務器(slave)的IO線程從主服務器(binlog dump)獲取二進制日誌,並在本地保存一份自己的二進制日誌(relay log)

3.從服務器的sql線程讀取本地日誌(slave log),重演變更事件

-->mysql主從同步作用:

1.可以作為一種備份機制,相當於熱備份(在從備份,避免在備份期間影響主服器工作)

2.可以用作讀寫分離,均衡數據庫負載(主寫從讀)

3.當主服務器出現問題,可以切換到從服務器

-->mysql 主從同步步驟:

(1)準備工作:

1.主從數據庫版本一致;

2.主從數據庫數據一致。

(2)主數據庫master修改:
1、修改MySQL配置:

# /etc/my.cnf  
log-bin = mysql-bin  

# 主數據庫端ID號  
server-id = 1  

log-bin=/home/mysql/logs/binlog/bin-log
max_binlog_size = 500M
binlog_cache_size = 128K
binlog-do-db = adb
binlog-ignore-db = mysql
log-slave-updates
expire_logs_day=2
binlog_format="MIXED"
#服務器標誌號,註意在配置文件中不能出現多個這樣的標識,如果出現多個的話mysql以第一個為準,一組主從中此標識號不能重復。
server-id = 1 log-bin=/home/mysql/logs/binlog/bin-log #開啟bin-log,並指定文件目錄和文件名前綴。
#每個bin-log最大大小,當此大小等於500M時會自動生成一個新的日誌文件。一條記錄不會寫在2個日誌文件中,所以有時日誌文件會超過此大小。 max_binlog_size = 500M binlog_cache_size = 128K
#日誌緩存大小 binlog-do-db = adb #需要同步的數據庫名字,如果是多個,就以此格式在寫一行即可。 binlog-ignore-db = mysql #不需要同步的數據庫名字,如果是多個,就以此格式在寫一行即可。
#當Slave從Master數據庫讀取日誌時更新新寫入日誌中,如果只啟動log-bin 而沒有啟動log-slave-updates則Slave只記錄針對自己數據庫操作的更新。 log-slave-updates expire_logs_day=2
#設置bin-log日誌文件保存的天數,此參數mysql5.0以下版本不支持。 binlog_format="MIXED" #設置bin-log日誌文件格式為:MIXED,可以防止主鍵重復。
2、重啟mysql,創建用於同步的賬戶:
# 創建slave帳號slave,密碼111111 mysql>grant replication slave on *.* to ‘slave‘@‘%‘ identified by ‘111111‘;
# 更新數據庫權限 mysql>flush privileges;
3、查詢master的狀態
mysql> show master status;
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+
| mysql-bin.000009 | 196 | | | +------------------+----------+--------------+------------------+ 1 row in set

數據庫主從同步