MySQL主從復制(Master-Slave)與讀寫分離(MySQL-Proxy)實踐
Mysql作為目前世界上使用最廣泛的免費數據庫,相信所有從事系統運維的工程師都一定接觸過。但在實際的生產環境中,由單台Mysql作為獨立的數據庫是完全不能滿足實際需求的,無論是在安全性,高可用性以及高並發等各個方面。
因此,一般來說都是通過 主從復制(Master-Slave)的方式來同步數據,再通過讀寫分離(MySQL-Proxy)來提升數據庫的並發負載能力 這樣的方案來進行部署與實施的。
原理架構圖
開始搭建主從復制
服務器二台:
分別安裝二台Mysql數據庫
1:安裝命令
yum –y install mysql-server
2:配置登陸用戶的密碼
演示此操作
3:配置允許第三方機器訪問本機Mysql
演示此操作
場景描述:
主數據庫服務器:192.168.1.112,MySQL已經安裝,並且無應用數據。
從數據庫服務器:192.168.1.115,MySQL已經安裝,並且無應用數據。
Mysql配置
1) vim /etc/my.cnf
2)
3) 接下來確認slave和master的上的server_id是否正確。可以分別在slave和master上運行 SHOW VARIABLES LIKE 'server_id'; 來查看server_id是否和你配置的一樣。
4) 分別重新啟動master,slaver的二台mysql服務
5) 登陸
6) 輸入
7) Mysql> SHOW VARIABLES LIKE 'server_id';
8) 來查看server_id是否和你配置的一樣。
9) master輸入
10) Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
11) 記錄下 FILE 及 Position 的值,在后面進行從服務器操作的時候需要用到。
12) 配置從服務器
change master to
master_host='192.168.0.104',
master_user='root',
master_password='root',
master_log_file='mysql-bin.000001',
master_log_pos=106;
13) 正確執行后啟動Slave同步進程
14) 啟動slave
mysql> start slave;
15) 查看slave狀態
mysql> show slave status\G
其中Slave_IO_Running 與 Slave_SQL_Running 的值都必須為YES,才表明狀態正常。
測試主從復制
1:先確定主,從庫上沒有任何自定義表
2:主服務器上的操作
在主服務器上創建數據庫itcast_db
mysql> create database itcast_db;
在主服務器上創建表itcast_tb
mysql> create table itcast_tb(id int(3),name char(10));
在主服務器上的表itcast_tb中插入記錄
mysql> insert into itcast_tb values (01, "itcast01");
3:從服務器上查看是否已經同步?
總結:搭建過程中可能引起失敗的原因
1:server_id 配置的一樣或是配置的沒有更新到Mysql數據中來
2:防火牆攔截了3306端口
3:用戶與密碼不正確
4:Mysql不允許其它機器訪問
開始搭建讀寫分離
准備:
服務器三台:
1:安裝二台Mysql數據庫(已經安裝)
2:安裝mysql-proxy,mysql
場景描述:
數據庫Master主服務器:192.168.1.112
數據庫Slave從服務器: 192.168.1.115
MySQL-Proxy調度服務器:192.168.1.101
以下操作,均是在192.168.1.101即MySQL-Proxy調度服務器上進行的。
檢查Lua是否已經安裝
MySQL-Proxy的讀寫分離主要是通過rw-splitting.lua腳本實現的,因此需要安裝lua。
rpm -ql lua
安裝Mysql-Proxy
tar xzvf mysql-proxy-0.8.4.tar.gz –C /user/local/src
cd /user/local/src/mysql-proxy-0.8.4/bin
./mysql-proxy –help-all
修改讀寫分離腳本rw-splitting.lua
修改默認連接,進行快速測試,不修改的話要達到連接數為4時才啟用讀寫分離
vim /opt/mysql-proxy/scripts/rw-splitting.lua
=============================
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, //默認為4
max_idle_connections = 1, //默認為8
is_debug = false
}
end