備選方案:Mysql主從複製與讀寫分離
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
16) 其中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不允許其它機器訪問