集羣搭建

 

1.  集羣搭建之主從複製

MySQL主從複製是一個異步的複製過程,主庫發送更新事件到從庫,從庫讀取更新記錄,並執行更新記錄,使得從庫的內容與主庫保持一致。mysql

1.1   主服務器的配置

1.1.1   第一步:修改my.conf文件:

在[mysqld]段下添加:sql

#啓用二進制日誌數據庫

log-bin=mysql-bin安全

#服務器惟一ID,通常取IP最後一段bash

server-id=133服務器

1.1.2   第二步:重啓mysql服務

service mysqld restart併發

1.1.3   第三步:創建賬戶並受權slave

mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';運維

mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';異步

#通常不用root賬號,「%」表示全部客戶端均可能連,只要賬號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,增強安全。ide

刷新權限

mysql> FLUSH PRIVILEGES;

查看mysql如今有哪些用戶

mysql>select user,host from mysql.user;

1.1.4   第四步:查詢master的狀態

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000001 |      120 | db1          | mysql            |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set

1.2   從服務器配置

1.2.1   第一步:修改my.conf文件

[mysqld]

server-id=134

 

1.2.2   第二步:刪除UUID文件

錯誤處理:

若是出現此錯誤:

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

由於是mysql是克隆的系統因此mysql的uuid是同樣的,因此須要修改。

解決方法:

刪除/var/lib/mysql/auto.cnf文件,從新啓動服務。

 

1.2.3   第三步:配置從服務器

mysql>change master to master_host='192.168.25.134',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120

 

注意語句中間不要斷開,master_port爲mysql服務器端口號(無引號),master_user爲執行同步操做的數據庫帳戶,「120」無單引號(此處的120就是show master status 中看到的position的值,這裏的mysql-bin.000001就是file對應的值)。

1.2.4   第四步:啓動從服務器複製功能

mysql>start slave;

 

1.2.5   第五步:檢查從服務器複製功能狀態:

mysql> show slave status

……………………(省略部分)

Slave_IO_Running: Yes //此狀態必須YES

Slave_SQL_Running: Yes //此狀態必須YES

……………………(省略部分)

注:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,不然都是錯誤的狀態(如:其中一個NO均屬錯誤)。

 

 

 

2.  集羣搭建之讀寫分離

 Mysql做爲目前世界上使用最普遍的免費數據庫,相信全部從事系統運維的工程師都必定接觸過。但在實際的生產環境中,由單臺Mysql做爲獨立的數據庫是徹底不能知足實際需求的,不管是在安全性,高可用性以及高併發等各個方面。

  所以,通常來講都是經過 主從複製(Master-Slave)的方式來同步數據,再經過讀寫分離(MySQL-Proxy)來提高數據庫的併發負載能力 這樣的方案來進行部署與實施的。

 

2.1 配置讀寫分離

    首先咱們在前面當中已經運行了mysql-proxy咱們須要先殺死這個進程:sudo killall mysql-proxy

 

#!bash/bin
/opt/mysql-proxy/bin/mysql-proxy \
--proxy-address=1.0.0.3:4040 \
--proxy-backend-addresses=17.16.15.112:3125 \  #在3125端口的服務器中配置可讀可寫
--proxy-read-only-backend-addresses=172.16.15.112:3126 \ #在3126端口的服務器中配置只讀
--proxy-lua-script=/opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua \  #用這個lua腳原本實現讀寫分離
--log-level=info \
--log-file=/opt/mysql-proxy/logs/mysql-proxy-12.log \ #這是它的日誌
--daemon

 

 

  3)咱們查看一下日誌,看是否腳本運行成功

    sudo vi /opt/mysql-proxy/logs/mysql-proxy-12.log 

2017-09-20 03:03:58: (critical) plugin proxy 0.8.5 started
2017-09-20 03:03:58: (message) proxy listening on port 1.0.0.3:4040
2017-09-20 03:03:58: (message) added read/write backend: 17.16.15.112:3125
2017-09-20 03:03:58: (message) added read-only backend: 172.16.15.112:3126

 

  4)獲取鏈接:mysql -uroot -p123456 -h1.0.0.3 -P4040

    分析:咱們的用戶名和密碼是使用的是MySQL服務器的用戶名和密碼,由於是要從他們兩個當中獲取鏈接,ip和端口都是使用代理的ip和端口。

相關文章
相關標籤/搜索