Mô hình này bao gồm MySQL Proxy và một giải pháp replication với một master và hai slave.
Máy chủ master có địa chỉ IP và cổng là 10.10.17.40:3306. Máy chủ slave thứ nhất có địa chỉ IP và công là: 10.10.17.5:3306 Máy chủ slave thứ hai có địa chỉ IP và cổng là: 10.10.17.100:3306 MySQL Proxy có địa chỉ IP là 10.10.17.100, lắng nghe trên cổng 4040.
65
Sử dụng máy có địa chỉ IP là 10.10.17.40 làm client để kết nối đến các máy chủ.
a) Kết quả chạy của MySQL Proxy:
Kết quả chạy của MySQL Proxy trong mô hình này ở hai giai đoạn 1 và giai đoạn 3 của quá trình chạy công cụ mysqlslap có kết quả tƣơng tự trong giai đoạn 1 và giai đoạn 3 ở mô hình MySQL Proxy – một master – một slave:
Giai đoạn 1 của quá trình chạy công cụ mysqlslap
# mysql-proxy --admin-username=root \ > --admin-password=giang \ > --admin-address=10.10.17.100:4041 \ > --proxy- address=10.10.17.100:4040\ > --proxy-backend-addresses=10.10.17.40:3306 \ > --proxy-read-only-backend-addresses=10.10.17.5:3306 \ > --proxy-read-only-backend-addresses=10.10.17.100:3306 \ > --admin-lua-script=/home/giangvit/workspace/proxy/admin-script.lua \ > --proxy-lua-script=/home/giangvit/workspace/mysqlProxy/rw4.lua
2012-05-15 16:47:32: [global] (*) mysql-proxy 0.9.0 started
[connect_server] 10.10.17.40:38453 [1].connected_clients = 0 [1].pool.cur_idle = 0 [1].pool.max_idle = 1000000 [1].pool.min_idle = 1 [1].type = 1 [1].state = 0
66 [read_query] 10.10.17.40:38453
current backend = 0 client default db = client username = root
query = DROP SCHEMA IF EXISTS `mysqlslap` sending to backend : 10.10.17.40:3306
is_slave : false server default db: server username : root in_trans : false in_calc_found : false COM_QUERY : true [read_query] 10.10.17.40:38453 current backend = 0 client default db = client username = root
query = CREATE SCHEMA `mysqlslap` sending to backend : 10.10.17.40:3306 is_slave : false
server default db: server username : root in_trans : false
in_calc_found : false COM_QUERY : true
67 current backend = 0
client default db = client username = root
sending to backend : 10.10.17.40:3306 is_slave : false
server default db: server username : root in_trans : false
in_calc_found : false COM_QUERY : false
[read_query] 10.10.17.40:38453 current backend = 0
client default db = mysqlslap client username = root
query = CREATE TABLE `t1` (id serial,intcol1 INT(32),charcol1 VARCHAR(128)) sending to backend : 10.10.17.40:3306
is_slave : false
server default db: mysqlslap server username : root in_trans : false
in_calc_found : false COM_QUERY : true
[read_query] 10.10.17.40:38453 current backend = 0
68 client username = root
query = INSERT INTO t1 VALUES
(NULL,1804289383,'mxvtvmC9127qJNm06sGB8R92q2j7vTiiITRDGXM9ZLzkdekb WtmXKwZ2qG1llkRw5m9DHOFilEREk3q7oce8O3BEJC0woJsm6uzFAEynLH2xCsw 1KQ1lT4zg9rdxBL')
sending to backend : 10.10.17.40:3306 is_slave : false
server default db: mysqlslap server username : root in_trans : false
in_calc_found : false COM_QUERY : true
(read_query_result) staying on the same backend in_trans : false
in_calc_found : false have_insert_id : true
69
Giai đoạn 3 của quá trình chạy công cụ mysqlslap:
[read_query] 10.10.17.40:47303 current backend = 0
client default db = mysqlslap client username = root
(QUIT) current backend = 0 [read_query] 10.10.17.40:40536 current backend = 0
client default db = mysqlslap client username = root
query = DROP SCHEMA IF EXISTS `mysqlslap` sending to backend : 10.10.17.40:3306
is_slave : false
server default db: mysqlslap server username : root in_trans : false in_calc_found : false COM_QUERY : true [disconnect_client] 10.10.17.40:47303 [read_query] 10.10.17.40:40536 current backend = 0
client default db = mysqlslap client username = root
(QUIT) current backend = 0
70
Sự khác nhau chính là ở giai đoạn 2 của quá trình chạy công cụ mysqlslap:
Mô hình trƣớc, các câu lệnh SELECT chỉ đƣợc gửi đến một máy chủ slave. Còn trong mô hình này, các câu lệnh SELECT đƣợc MySQL Proxy gửi đều về hai slave theo thuật toán round-robin:
sending to backend : 10.10.17.5:3306 is_slave : true và sending to backend : 10.10.17.100:3306 is_slave : true Giai đoạn 2: [read_query] 10.10.17.40:38844 current backend = 0
client default db = mysqlslap client username = root
query = SELECT intcol1,charcol1 FROM t1 sending to backend : 10.10.17.5:3306
is_slave : true
server default db: mysqlslap server username : root in_trans : false
in_calc_found : false COM_QUERY : true
[read_query] 10.10.17.40:38850 current backend = 0
71 client default db = mysqlslap
client username = root
query = SELECT intcol1,charcol1 FROM t1 sending to backend : 10.10.17.100:3306 is_slave : true
server default db: mysqlslap server username : root in_trans : false
in_calc_found : false COM_QUERY : true
[read_query] 10.10.17.40:38864 current backend = 0
client default db = mysqlslap client username = root
query = SELECT intcol1,charcol1 FROM t1 sending to backend : 10.10.17.5:3306
is_slave : true
server default db: mysqlslap server username : root in_trans : false in_calc_found : false COM_QUERY : true [disconnect_client] 10.10.17.40:38745 [read_query] 10.10.17.40:38856 current backend = 0
72 client default db = mysqlslap
client username = root
query = SELECT intcol1,charcol1 FROM t1 sending to backend : 10.10.17.100:3306 is_slave : true
server default db: mysqlslap server username : root in_trans : false
in_calc_found : false COM_QUERY : true
b) Kết quả thời gian trả về từ công cụ mysqlslap
Kết quả thực nghiệm thời gian chạy các truy vấn trong mô hình này nhƣ bảng sau:
Bảng 4: Kết quả thời gian chạy các truy vấn trong mô hình MySQL Proxy-master-multi slave
--number-of-queries --concurrency Average number of seconds to run queries
100 100 2.550
600 600 9.170
1500 700 9.256
2000 800 9.983
73
Hình 211: Hiệu năng CPU của master
74
Hình 233: Hiệu năng trung bình tải