1. 集群搭建之主從復制
MySQL主從復制是一個異步的復制程序,主庫發送更新事件到從庫,從庫讀取更新記錄,并執行更新記錄,使得從庫的內容與主庫保持一致,
1.1 主服務器的配置
1.1.1 第一步:修改my.conf檔案:
在[mysqld]段下添加:
|
#啟用二進制日志 log-bin=mysql-bin #服務器唯一ID,一般取IP最后一段 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,加強安全,
重繪權限
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和埠,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/89049.html
標籤:MySQL
上一篇:mysql累加、累減
下一篇:分庫分表之第五篇
