atlas+mysql部署mysql讀寫分離

来源:https://www.cnblogs.com/mushou/archive/2018/08/10/9458079.html
-Advertisement-
Play Games

1.atlas 簡介 Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用。 Atlas官 ...


1.atlas 簡介

Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用。

Atlas官方鏈接: https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

2.mysql主從配置

主從複製,此處不過多講,詳細請看https://www.cnblogs.com/mushou/p/9446352.html

但是需要在主從授權一個用戶

grant all on  *.*  to  'buck'@'%'   identified  by  '123456';

flush  privileges;

3.atlas配置

1)安裝

wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm

rpm  -ivh  Atlas-2.2.1.el6.x86_64.rpm

安裝好了,它會預設在”/usr/local/mysql-proxy”下給你生成4個文件夾,以及需要配置的文件,如下:

drwxr-xr-x. 2 root root 4096 Dec 28 10:47 bin drwxr-xr-x. 2 root root 4096 Dec 28 10:47 conf
drwxr-xr-x. 3 root root 4096 Dec 28 10:47 lib
drwxr-xr-x. 2 root root 4096 Dec 17  2014 log

bin目錄下放的都是可執行文件

 “encrypt”是用來生成MySQL密碼加密的,在配置的時候會用到

 “mysql-proxy”是MySQL自己的讀寫分離代理

 “mysql-proxyd”,後面有個“d”,服務的啟動、重啟、停止。都是用他來執行的

conf目錄下放的是配置文件

“test.cnf”只有一個文件,用來配置代理的,可以使用vim來編輯

lib目錄下放的是一些包,以及Atlas的依賴

log目錄下放的是日誌,如報錯等錯誤信息的記錄

進入bin目錄,使用encrypt來對資料庫的密碼進行加密,我的MySQL數據的用戶名是buck,密碼是123456,我需要對密碼進行加密

./encrypt 123456 

2)配置

配置Atlas,使用vim進行編輯

cd /usr/local/mysql-proxy/conf/

vim test.cnf 

進入後,可以在Atlas進行配置,360寫的中文註釋都很詳細,根據註釋來配置信息,其中比較重要,需要說明的配置如下:

這是用來登錄到Atlas的管理員的賬號與密碼,與之對應的是“#Atlas監聽的管理介面IP和埠”,也就是說需要設置管理員登錄的埠,才能進入管理員界面,預設埠是2345,也可以指定IP登錄,指定IP後,其他的IP無法訪問管理員的命令界面。方便測試,我這裡沒有指定IP和埠登錄。

#管理介面的用戶名
admin-username = user

#管理介面的密碼
admin-password = pwd

這是用來配置主數據的地址與從資料庫的地址,這裡配置的主資料庫是1.2,從資料庫是1.12

#Atlas後端連接的MySQL主庫的IP和埠,可設置多項,用逗號分隔
proxy-backend-addresses = 172.16.1.2:3306

#Atlas後端連接的MySQL從庫的IP和埠,@後面的數字代表權重,用來作負載均衡,若省略則預設為1,可設置多項,用逗號分隔
proxy-read-only-backend-addresses = 172.16.1.12:3306@1

這個是用來配置MySQL的賬戶與密碼的,我的MySQL的用戶是buck,密碼是123456,剛剛使用Atlas提供的工具生成了對應的加密密碼

#用戶名與其對應的加密過的MySQL密碼,密碼使用PREFIX

/bin目錄下的加密程式encrypt加密,下行的user1和user2為示例,將其替換為你的MySQL的用戶名和加密密碼!

pwds = buck:RePBqJ+5gI4=                  #為encrypt 生成的密文

這是設置工作介面與管理介面的,如果ip設置的”0.0.0.0”就是說任意IP都可以訪問這個介面,當然也可以指定IP和埠,方便測試我這邊沒有指定,工作介面的用戶名密碼與MySQL的賬戶對應的,管理員的用戶密碼與上面配置的管理員的用戶密碼對應。 

#Atlas監聽的工作介面IP和埠
proxy-address = 0.0.0.0:1234

#Atlas監聽的管理介面IP和埠
admin-address = 0.0.0.0:2345 

啟動Atlas

./mysql-proxyd test start

OK: MySQL-Proxy of test is started

用如下命令,進入Atlas的管理模式“mysql -h127.0.0.1 -P2345 -uuser -ppwd ”,能進去說明Atlas正常運行著呢,因為它會把自己當成一個MySQL資料庫,所以在不需要資料庫環境的情況下,也可以進入到MySQL資料庫模式。

[root@localhost bin]# mysql -h127.0.0.1 -P2345 -uuser -ppwd

Welcome to the MySQL monitor. Commands end with ; or \g.

Copyright (c) 2000, 2013, Oracle and/or its affiliates.

All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

quit

3.測試

目前主從mysql的資料庫同步,兩個庫的數據相同, 為了便於測試寫數據在主mysql,讀書在 從mysql,我們先停從同步

stop  slave;

在測試機上登錄atlas 伺服器,mysql  -ubuck  -p123456  -h  172.16.1.1   -P 1234

此處 用戶名為buck, 密碼123456,主機ip為atlas 伺服器ip,埠 1234,

登錄成功,做寫數據測試

use  test;

insert into  yst  values(‘‘,‘’,‘’,‘’);#此處簡要

到主mysql上查看

select   * from  yst;

 可以看到,說明寫數據是寫在主msql伺服器

在從MySQL伺服器上寫入數據,此處寫入數據純粹是為了測試我們讀數據時,是查看到從mysql伺服器查看數據;

 insert into  yst  values(‘‘,‘’,‘’,‘’);#此處簡要

在測試機上登錄atlas 伺服器,mysql  -ubuck  -p123456  -h  172.16.1.1   -P 1234

查看 select  * from  yst;

可以查看到客戶端添加的數據。

至此,讀寫測試成功,也就是寫數據到主mysql,讀數據是在從mysql上讀取。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、最近Visual studio調試不起來,運行完報錯 二、解決方法 打開 調試>>>>選項>>>>常規>>>對ASP.NET啟用JavaScript調試勾勾去掉 ...
  • 1 Bitmap bit= new Bitmap(@"" + Path);//給圖片加邊框 2 //Bitmap bit = new Bitmap(Screen.AllScreens[0].Bounds.Size.Width, Screen.AllScreens[0].Bounds.Size.Hei... ...
  • 最近寫了個定時郵件推送的服務,當利用lognet4記錄日誌時,發現日誌並沒有記錄。後來明白windows 服務一般預設是在C:\Windows\System 或是C:\Windows\System32,而我們自己的服務程式一般是放在其他的目錄,這樣log4net.config文件中的配置路徑將無法正 ...
  • 本文主要介紹在Asp.net Core採用CORS方式解決跨域 關於跨域的原理介紹可參考 "Asp.net Web API 解決跨域詳解" 1 在Startup添加允許跨域的策略 2怎樣應用AnyOrigin策略 只需要在控制器頭上(或某個行為上)添加標識: 如: 3 AnyOrigin略幾乎直接完 ...
  • 方法一: public static string Reverse(string name) { if (String.IsNullOrEmpty(name)) { throw new Exception("字元串不能為空!"); } StringBuilder sb = new StringBui ...
  • 接著上一篇:上一篇寫了安裝,這篇直接搞定批量列印,A4紙橫版豎版頁面設計,正式開始。(我的表達不怎麼好,我儘量發圖片都是程式員一點就通) 一、界面展示 忽略界面設計醜 查看預覽界面,因為有數據就不截全屏了,盒號是我自己加的,我們自己的業務邏輯。 三、核心代碼,批量列印(參考代碼鏈接,放到文章結尾處) ...
  • 需要引用 SixLabors.ImageSharp 和SixLabors.ImageSharp.Drawing 引用方法 NuGet包管理 添加程式包來源 https://www.myget.org/F/imagesharp 包括預覽發行版 目前使用的是 1.0.0-beta0005 版本 3個引用 ...
  • 為了學習 加群。大家一起探討 C# 學習及解答 731738614為了學習 加群。大家一起探討 C# 學習及解答 731738614為了學習 加群。大家一起探討 C# 學習及解答 731738614為了學習 加群。大家一起探討 C# 學習及解答 731738614 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...