本文目錄一覽:
- 1、Windows下怎樣搭建Apache+MySQL+PHP伺服器
- 2、怎麼啟動mysql資料庫伺服器
- 3、五大常見的MySQL高可用方案(最全)
- 4、mysqlrouter的使用
- 5、在win7上搭建MySQL伺服器的問題
- 6、《從0到1 最詳細的MySQL安裝流程(Window版)
Windows下怎樣搭建Apache+MySQL+PHP伺服器
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之後可以在用check table命令來進行檢查。在新版本的phpMyAdmin裡面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為預設的數據表類型,這裡以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL伺服器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL伺服器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local裡面啟動MySQL伺服器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對於使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對於使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL資料庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local裡面,必須確認在執行這條指令時MySQL伺服器必須沒有啟動!檢測修復所有資料庫(表)
怎麼啟動mysql資料庫伺服器
1、在MySQL資料庫安裝時選擇過MySQL伺服器隨系統啟動,但如果沒有選擇,也沒關係,可以在可以在Windows服務管理器啟動,具體在開始菜單搜索services.msc,
2、單擊出現如下圖窗口,下滑滑鼠找到MySQL57:
3、右擊後點擊啟動,MySQL57旁邊狀態列顯示「已啟動」字樣,說明啟動成功。如下圖:
二、 登錄MySQL資料庫
4、 用系統命令行工具登錄,點擊開始菜單,找到附件,點擊命令提示符。
5、在命令行中輸入cd加空格然後粘貼bin路徑:cd c:\Program Files (x86)\MySQL\MySQL Server 5.7\bin 回車命令行定位到c:\Program Files (x86)\MySQL\MySQL Server 5.7\bin,在後面輸入mysql –h localhost –u root –p(這些都是安裝時設置好的)敲回車,
6、出現Enter password:在後面輸入安裝時設置的登錄密碼,按回車後出現Welcome to the MySQL monitor.說明登陸成功。如下圖:
7、用安裝時配置好的命令行工具登錄,在開始菜單,點擊MySQL 5.7 Command Line Client 或下面搜索程序框中輸入comm選擇MySQL 5.7 Command Line Client啟動DOS命令窗口。如下圖:
8、在窗口Enter password:處輸入安裝時設置的MySQL資料庫客戶端登陸密碼,回車,如果出現Welcom to the MySQL monitor.等字眼表示登陸伺服器成功,可以在閃爍游標處輸入SQL可執行語言:如下圖:
五大常見的MySQL高可用方案(最全)
1. 概述
我們在考慮MySQL資料庫的高可用的架構時,主要要考慮如下幾方面:
如果資料庫發生了宕機或者意外中斷等故障,能儘快恢復資料庫的可用性,儘可能的減少停機時間,保證業務不會因為資料庫的故障而中斷。
用作備份、只讀副本等功能的非主節點的數據應該和主節點的數據實時或者最終保持一致。
當業務發生資料庫切換時,切換前後的資料庫內容應當一致,不會因為數據缺失或者數據不一致而影響業務。
關於對高可用的分級在這裡我們不做詳細的討論,這裡只討論常用高可用方案的優缺點以及高可用方案的選型。
2. 高可用方案
2.1. 主從或主主半同步複製
使用雙節點資料庫,搭建單向或者雙向的半同步複製。在5.7以後的版本中,由於lossless replication、logical多線程複製等一些列新特性的引入,使得MySQL原生半同步複製更加可靠。
常見架構如下:
通常會和proxy、keepalived等第三方軟體同時使用,即可以用來監控資料庫的 健康 ,又可以執行一系列管理命令。如果主庫發生故障,切換到備庫後仍然可以繼續使用資料庫。
優點:
架構比較簡單,使用原生半同步複製作為數據同步的依據;
雙節點,沒有主機宕機後的選主問題,直接切換即可;
雙節點,需求資源少,部署簡單;
缺點:
完全依賴於半同步複製,如果半同步複製退化為非同步複製,數據一致性無法得到保證;
需要額外考慮haproxy、keepalived的高可用機制。
2.2. 半同步複製優化
半同步複製機制是可靠的。如果半同步複製一直是生效的,那麼便可以認為數據是一致的。但是由於網路波動等一些客觀原因,導致半同步複製發生超時而切換為非同步複製,那麼這時便不能保證數據的一致性。所以儘可能的保證半同步複製,便可提高數據的一致性。
該方案同樣使用雙節點架構,但是在原有半同複製的基礎上做了功能上的優化,使半同步複製的機制變得更加可靠。
可參考的優化方案如下:
2.2.1. 雙通道複製
半同步複製由於發生超時後,複製斷開,當再次建立起複制時,同時建立兩條通道,其中一條半同步複製通道從當前位置開始複製,保證從機知道當前主機執行的進度。另外一條非同步複製通道開始追補從機落後的數據。當非同步複製通道追趕到半同步複製的起始位置時,恢復半同步複製。
2.2.2. binlog文件伺服器
搭建兩條半同步複製通道,其中連接文件伺服器的半同步通道正常情況下不啟用,當主從的半同步複製發生網路問題退化後,啟動與文件伺服器的半同步複製通道。當主從半同步複製恢復後,關閉與文件伺服器的半同步複製通道。
優點:
雙節點,需求資源少,部署簡單;
架構簡單,沒有選主的問題,直接切換即可;
相比於原生複製,優化後的半同步複製更能保證數據的一致性。
缺點:
需要修改內核源碼或者使用mysql通信協議。需要對源碼有一定的了解,並能做一定程度的二次開發。
依舊依賴於半同步複製,沒有從根本上解決數據一致性問題。
2.3. 高可用架構優化
將雙節點資料庫擴展到多節點資料庫,或者多節點資料庫集群。可以根據自己的需要選擇一主兩從、一主多從或者多主多從的集群。
由於半同步複製,存在接收到一個從機的成功應答即認為半同步複製成功的特性,所以多從半同步複製的可靠性要優於單從半同步複製的可靠性。並且多節點同時宕機的幾率也要小於單節點宕機的幾率,所以多節點架構在一定程度上可以認為高可用性是好於雙節點架構。
但是由於資料庫數量較多,所以需要資料庫管理軟體來保證資料庫的可維護性。可以選擇MMM、MHA或者各個版本的proxy等等。常見方案如下:
2.3.1. MHA+多節點集群
MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然後將所有其他的slave重新指向新的master,整個故障轉移過程對應用程序完全透明。
MHA Node運行在每台MySQL伺服器上,主要作用是切換時處理二進位日誌,確保切換盡量少丟數據。
MHA也可以擴展到如下的多節點集群:
優點:
可以進行故障的自動檢測和轉移;
可擴展性較好,可以根據需要擴展MySQL的節點數量和結構;
相比於雙節點的MySQL複製,三節點/多節點的MySQL發生不可用的概率更低
缺點:
至少需要三節點,相對於雙節點需要更多的資源;
邏輯較為複雜,發生故障後排查問題,定位問題更加困難;
數據一致性仍然靠原生半同步複製保證,仍然存在數據不一致的風險;
可能因為網路分區發生腦裂現象;
2.3.2. zookeeper+proxy
Zookeeper使用分散式演算法保證集群數據的一致性,使用zookeeper可以有效的保證proxy的高可用性,可以較好的避免網路分區現象的產生。
優點:
較好的保證了整個系統的高可用性,包括proxy、MySQL;
擴展性較好,可以擴展為大規模集群;
缺點:
數據一致性仍然依賴於原生的mysql半同步複製;
引入zk,整個系統的邏輯變得更加複雜;
2.4. 共享存儲
共享存儲實現了資料庫伺服器和存儲設備的解耦,不同資料庫之間的數據同步不再依賴於MySQL的原生複製功能,而是通過磁碟數據同步的手段,來保證數據的一致性。
2.4.1. SAN共享儲存
SAN的概念是允許存儲設備和處理器(伺服器)之間建立直接的高速網路(與LAN相比)連接,通過這種連接實現數據的集中式存儲。常用架構如下:
使用共享存儲時,MySQL伺服器能夠正常掛載文件系統並操作,如果主庫發生宕機,備庫可以掛載相同的文件系統,保證主庫和備庫使用相同的數據。
優點:
兩節點即可,部署簡單,切換邏輯簡單;
很好的保證數據的強一致性;
不會因為MySQL的邏輯錯誤發生數據不一致的情況;
缺點:
需要考慮共享存儲的高可用;
價格昂貴;
2.4.2. DRBD磁碟複製
DRBD是一種基於軟體、基於網路的塊複製存儲解決方案,主要用於對伺服器之間的磁碟、分區、邏輯卷等進行數據鏡像,當用戶將數據寫入本地磁碟時,還會將數據發送到網路中另一台主機的磁碟上,這樣的本地主機(主節點)與遠程主機(備節點)的數據就可以保證實時同步。常用架構如下:
當本地主機出現問題,遠程主機上還保留著一份相同的數據,可以繼續使用,保證了數據的安全。
DRBD是linux內核模塊實現的快級別的同步複製技術,可以與SAN達到相同的共享存儲效果。
優點:
兩節點即可,部署簡單,切換邏輯簡單;
相比於SAN儲存網路,價格低廉;
保證數據的強一致性;
缺點:
對io性能影響較大;
從庫不提供讀操作;
2.5. 分散式協議
分散式協議可以很好解決數據一致性問題。比較常見的方案如下:
2.5.1. MySQL cluster
MySQL cluster是官方集群的部署方案,通過使用NDB存儲引擎實時備份冗餘數據,實現資料庫的高可用性和數據一致性。
優點:
全部使用官方組件,不依賴於第三方軟體;
可以實現數據的強一致性;
缺點:
國內使用的較少;
配置較複雜,需要使用NDB儲存引擎,與MySQL常規引擎存在一定差異;
至少三節點;
2.5.2. Galera
基於Galera的MySQL高可用集群, 是多主數據同步的MySQL集群解決方案,使用簡單,沒有單點故障,可用性高。常見架構如下:
優點:
多主寫入,無延遲複製,能保證數據強一致性;
有成熟的社區,有互聯網公司在大規模的使用;
自動故障轉移,自動添加、剔除節點;
缺點:
需要為原生MySQL節點打wsrep補丁
只支持innodb儲存引擎
至少三節點;
2.5.3. POAXS
Paxos 演算法解決的問題是一個分散式系統如何就某個值(決議)達成一致。這個演算法被認為是同類演算法中最有效的。Paxos與MySQL相結合可以實現在分散式的MySQL數據的強一致性。常見架構如下:
優點:
多主寫入,無延遲複製,能保證數據強一致性;
有成熟理論基礎;
自動故障轉移,自動添加、剔除節點;
缺點:
只支持innodb儲存引擎
至少三節點;
3. 總結
隨著人們對數據一致性的要求不斷的提高,越來越多的方法被嘗試用來解決分散式數據一致性的問題,如MySQL自身的優化、MySQL集群架構的優化、Paxos、Raft、2PC演算法的引入等等。
而使用分散式演算法用來解決MySQL資料庫數據一致性的問題的方法,也越來越被人們所接受,一系列成熟的產品如PhxSQL、MariaDB Galera Cluster、Percona XtraDB Cluster等越來越多的被大規模使用。
隨著官方MySQL Group Replication的GA,使用分散式協議來解決數據一致性問題已經成為了主流的方向。期望越來越多優秀的解決方案被提出,MySQL高可用問題可以被更好的解決。
mysqlrouter的使用
在vm的docker中使用 mysql router 實現 group replication 組複製 的讀寫分離和負載均衡
由於官方的docker鏡像需要和InnoDb Cluster一起使用,這裡自己創建鏡像
group replication 組複製 搭建:
使用的ubuntu作為基礎鏡像, 需要添加國內源
Dockfile文件:
創建router鏡像:
啟動容器:
這裡映射了3300和3301兩個埠,連接到了 mysql group replication 使用的docker網路中,自定義的mysqlrouter配置掛載到容器中
然後再連接mysql伺服器時, 只需使用router的埠即可, 使用 mysql workbench 連接3301埠, 每創建一個連接都會連接到下一個可用的mysql伺服器上, 使用 select @@hostname; 查看當前連接到的mysql伺服器的hostname就可以驗證了
在win7上搭建MySQL伺服器的問題
解決Mysql無法遠程連接的問題,可以從以下幾個點去檢查下:
1、Mysql的埠是否正確
通過netstat -ntlp 查看埠佔用情況,一般情況下埠是3306。在用工具連接MySQl是要用到埠。例如My Admin\My Query Browser\MySQl Front等。
2、檢查用戶許可權是否正確
mysql庫的user表裡有兩條記錄:host分別為localhost和%(為了安全,%可以換成你需要外部連接的IP)。
3、查看iptables是否停掉,沒關的情況下,無法連接
通過:service iptables stop臨時關閉。
報錯:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.51.112’ (113)
4、把my.cnf中的bind-address注釋掉,然後重新啟動mysql伺服器程序sudo /etc/init.d/mysql restart。
5、檢查下用戶名密碼及遠程主機是否對你的IP開放許可權。
《從0到1 最詳細的MySQL安裝流程(Window版)
在進入到官網下載的時候,我們會發現官網上提供了很多類型的版本,它們到底是什麼意思,哪個才是我們需要的呢?下面就來簡單介紹下常見的,如下:
1、MySQL Enterprise Edition: Mysql企業版本,包含了最新的特性和管理工具,以及可以提供技術支持( 但是是要收費 )。
2、MySQL Cluster CGE: 一個用於高吞吐量快速、穩定的訪問數據的開源事務資料庫,它包含了MySQL Cluster、MySQL Enterprise Edition、MySQL Cluster Manager的功能。
3、MySQL Community (GPL) :遵循GPL開源協議的MySQL版本,平常我們使用的大多數遵循這個協議下的社區版
4、MySQL Installer : 是一個安裝管理程序,因為MySQL家族包括了許多產品,所以提供了一個統一管理下載的工具。
5、MySQL Community Server : MySQL Community (GPL)下的開源社區版本,是使用的資料庫開源版本( 免費的,盤它 )。
6、Mysql Workbench : 類似navicat是個圖形界面UI工具,可以實現遠程Mysql資料庫訪問(一開始不建議直接使用圖形化管理工具,建議先通過命令行了解,這樣能夠更快的認識Mysql, 高手都是用命令行的 (PS: 如有需要圖形化工具的可以私我))。
到官網下載自己需要的版本()或者直接到雲盤下載(私信我,這種方式更快),下載步驟如下:
1、進入MySQL官網 =》選擇「DOWNLOADS」選項 =》 點擊MySQL Community (GPL) Downloads »
2、根據自己的需要選擇「MySQL Community Server(不帶圖形化界面-推薦)」或者MySQL Workbench(帶圖形化界面的)
3、下載安裝包(32位電腦下載32位的安裝包,64位電腦下載64位的安裝包)
4、解壓下載好的安裝包
5、配置環境變數
環境變數: 指的是當你在命令行屬於任意一個值時,win系統會去環境變數池中匹配,如果有匹配到可執行的路徑,則直接去對應的路徑下進行執行 。
如你輸入mysql,然後你在環境變數中配置了你安裝的MySQL路徑為:D:mysql8.xbin,則系統會匹配成D:mysql8.xbinmysql,如果這個目錄下有這個可執行文件,則運行,具體步驟如下:。
1、啟動MySQL伺服器,並進行登錄
2、如果發現MySQL服務無法啟動,則進行下面的配置即可
(1)、在mysql壓縮的路徑中添加以下my.ini文件,內容如下(把其中的兩處工作路徑改為自己的按照路徑即可):
(2)、執行執行 mysqld –initialize-insecure 指令進行配置,安裝路徑會默認生成一個data文件夾,如下:
3、輸入mysqld –install將mysql註冊到Window服務中,如果提示已經存在則跳過
4、啟動mysql服務:net start mysql
5、連接Mysql服務: mysql -u root -p 回車(默認密碼為空,輸入密碼時直接回車即可,為了安全性,記得修改密碼哦),到此Mysql安裝完成,可以隨便操作了!
6、修改密碼,分為MySQL5.x版本和8.x版本,步驟如下:
(1)、選中mysql資料庫: use mysql
(2)、修改root用戶的密碼
不積跬步,無以至千里;不積小流,無以成江海。今天播種努力的種子,總會有一天發芽!
原創文章,作者:CPYR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/136984.html