操作系統(tǒng)版本:centos 7.2
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、長(zhǎng)沙網(wǎng)絡(luò)推廣、小程序開(kāi)發(fā)、長(zhǎng)沙網(wǎng)絡(luò)營(yíng)銷、長(zhǎng)沙企業(yè)策劃、長(zhǎng)沙品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供長(zhǎng)沙建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
主服務(wù)器:192.168.0.72 node2
從服務(wù)器:192.168.0.73 node3
調(diào)度服務(wù)器MySQL-Proxy:192.168.0.71 node1
node2和node3都需安裝
[lirou@node2 ~]$ sudo yum -y install mariadb-server
master配置文件:
skip_name_resolve
innodb_file_per_table
server_id = 1
log_bin = /var/lib/mysql/bin_log
slave 配置文件:
skip_name_resolve
innodb_file_per_table
server_id = 2
log_bin = /var/lib/mysql/bin_log
read_only
注意:master服務(wù)器一定要開(kāi)啟二進(jìn)制日志,因?yàn)橹鲝膹?fù)制依賴與master。而且主從服務(wù)器的server_id一定要不同。
node2和node3都要啟動(dòng)服務(wù)
[lirou@node3 ~]$ sudo systemctl start mariadb
Master服務(wù)器上
分配slave主機(jī)訪問(wèn)master的權(quán)限賬號(hào):
[lirou@node2 ~]$ mysql -uroot
MariaDB [(none)]> GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.0.%' IDENTIFIED BY 'repl_pass';
查看master上二進(jìn)制日志位置
MariaDB [(none)]> show master status ;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000001 | 425 | | |
+---------------+----------+--------------+------------------+
slave服務(wù)器上
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.72', MASTER_USER='repl_user', MASTER_PASSWORD='repl_pass', MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=425;
mysql> slave start; # 開(kāi)啟從同步
mysql> show slave status \G; #查看同步是否成功
~]# wget wgethttps://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
~]# sudo tar xfhttps://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz -C /usr/local
~]# mv /usr/local/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
創(chuàng)建lua腳本目錄
~]# cd /usr/local/mysql-proxy
mysql-proxy]# mkdir lua
創(chuàng)建日志目錄
Mysql-proxy]# mdkir logs
拷貝讀寫(xiě)分離配置文件和管理腳本到lua腳本目錄
mysql-proxy]# cp share/doc/mysql-proxy/rw-splitting.lua ./lua
Mysql-proxy]# cp share/doc/mysqp-proxy/admin-sql.lua ./lua
創(chuàng)建配置文件
~]# vim /etc/mysql-proxy.conf
[mysql-proxy]
user = root 運(yùn)行代理的用戶
admin-username = mysql_proxy_user # mysql-proxy連接后端mysql服務(wù)器的用戶
admin-password = mysql_proxy_pass # mysql-proxy連接后端mysql服務(wù)器的密碼
proxy-address = 192.168.0.71:3307 # mysql-proxy監(jiān)聽(tīng)的IP和端口,端口默認(rèn)4040
proxy-read-only-backend-addresses = 192.168.0.73 #只讀服務(wù)
proxy-backend-addresses = 192.168.0.72 # 讀寫(xiě)服務(wù)器
proxy-lua-script = /usr/local/mysql-proxy/lua/rw-splitting.lua # 指明讀寫(xiě)分離配置文件
admin-lus-script = /usr/local/mysql-proxy/lua/admin-sql.lua # 管理腳本路徑
log-file = /usr/local/mysql-proxy/logs/mysql-proxy.log # 日志文件路徑
log-level = debug #日志記錄等級(jí)
daemon = true # 程序是否在后端啟動(dòng)
keepalive = true # mysql-proxy崩潰后,嘗試重啟
修改讀寫(xiě)配置文件
vim /usr/local/mysql-proxy/lua/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默認(rèn)超過(guò)4個(gè)連接數(shù)時(shí),才開(kāi)始讀寫(xiě)分離,改為1
max_idle_connections = 1, #默認(rèn)8,改為1
is_debug = false
}
啟動(dòng)mysql-proxy
~]# /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
在mysql上創(chuàng)建mysql-proxy連接的用戶
mysql> GRANT ALL ON *.* TO 'mysql_proxy_user'@'192.168.0.%' IDENTIFIED BY 'mysql_proxy_pass';
測(cè)試寫(xiě)
mysql -umysql_proxy_user -pmysql_proxy_pass -h292.168.0.71 --port=3307
mysql> create databases master;
mysql> create table test (id int);
mysql> insert into master.test value (1);
查看從服務(wù)器:
可以看到從服務(wù)器同步了
測(cè)試讀
主服務(wù)器查詢語(yǔ)句條數(shù)
從服務(wù)器查詢語(yǔ)句條數(shù)
連接mysql-proxy執(zhí)行一條讀語(yǔ)句
主服務(wù)器查詢語(yǔ)句條數(shù)
從服務(wù)器查詢語(yǔ)句條數(shù)
我們可以看到查詢語(yǔ)句是在從服務(wù)器上執(zhí)行。