今天創建使用了一下MySQL主從數據庫,個人感覺就是,SQL一分爲二主從執行,畢竟一行數據的增加,從數據庫也會增加。這和定時備份數據又完全不同。實時將數據備份一份,但功能是否僅侷限於備份呢?今天剛開始使用,如果真是能保證數據的一致性。那麼主從做讀寫分離,減輕服務器的壓力的也可以
下面開始就記錄一下過程:
準備2個數據庫
對兩個數據庫進行連接。
在這個過程中,需要在my.ini或linux的my.cnf?這兩個文件,更改各自端口以及各自的數據存儲路徑以及基礎路徑。
對新建的庫進行初始化,mysqld --initialize-insecure
對這兩個MySQL服務進行連接:主數據庫3306,從數據庫3307
以下是在主庫進行操作:
在主數據庫使用命令:
GRANT REPLICATION SLAVE ON *.* TO 'daomu'@'127.0.0.1'IDENTIFIED BY 'mysql';
這句話的意思是,許可複製到從數據,進行允許賦值。後面是複製的域,指定誰能來複制,否則誰都能摻一腳?指定用戶,IP以及密碼,最後那是密碼,此時查看user表
主表增加了一個用戶
SHOW MASTER STATUS;
語義應該是,顯示主分之的狀態,我們需要留意的狀態有,file以及position
以下是從庫的操作:
stop slave;
CHANGE MASTER TO
MASTER_HOST='127.0.0.1', #主庫分配的地址
MASTER_USER='daomu', #主庫分配的用戶
MASTER_PASSWORD='mysql', #主庫分配的密碼
MASTER_LOG_FILE='mysql-bin.000002', #主庫的file
MASTER_LOG_POS=1015; #主庫的位置編號
START SLAVE;
stop slave; 停止,應該是停止與主庫的從屬關係
中間一溜是對主庫的描述
START SLAVE;,開始與主庫建立從屬關係
SHOW SLAVE STATUS\G
查看從屬狀態:
可以檢查以下配置是否OK,注意這兩個地址,當都爲yes時,表示主從配置成功了。之前我將密碼配置錯誤,slave_io就爲conn...需要注意這兩個爲yes則OK
主從配置完畢,檢查效果:
主從的複製關係,是從建立上關係開始的。之前有的是沒有複製到從庫的,現在從庫只有幾個被初始化的庫,現在開始測試:
主庫創建數據庫,從庫也跟着就增加了
主庫增加數據,並查詢得到數據。查詢從庫,也一併進行了數據插入,也能查詢得到數據
這就是主從庫目前提現的效果。可以說是主從一起更新。不過我有猜想,這個關係應該是基於網絡傳輸的,如果網絡斷開,但關係保持。會怎麼樣?當網絡正常,但主配置錯誤,會怎麼樣?不過目前效果已經提現出來了。
運行了一會就同步不上了,再次查看狀態,運行爲no了,出現的異常是表格不存在。
情況是,測試刪除從庫表格,主庫繼續操作表格,這時應該來同步從庫,從庫要執行的操作,是修改表格數據。但表格都沒有了,出現錯誤。後續的更新也都停止了
測試可以針對這種錯誤的解決辦法是:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
#客戶端運行,用來跳過幾個事件,只有當同步進程出現錯誤而停止的時候纔可以執行。
mysql> start slave ;
主從,主庫進行操作,從庫也會操作。如果是針對從庫操作,主庫再次來操作,發現有問題異常出現,就停止更新數據了。讀寫分離應該是,寫主庫,更新從庫,就讀從庫。主從關係大概是這樣的。操作主庫,讀取從庫。實現分離
在這裏,主更新,從也更新。大體的配置如下:
1:主許可數據允許複製,並創建用戶做身份驗證
2:主查詢自己的狀態,得到file與position
3:從根據主創建的用戶,在自己身上配置一份
4:開啓主從關係,並查看自己的狀態,通過狀態得到關係是否建立成功
5:當都爲yes時,主從庫關係建立成功,數據