系統ubuntu16.04,安裝並設置自啓動。html
sudo apt-get install mysql-server
複製代碼
sudo systemctl enable mysql-server
複製代碼
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必須]啓用二進制日誌
server-id=222 //[必須]服務器惟一ID,默認是1,通常取IP最後一段
複製代碼
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必須]啓用二進制日誌
server-id=223 //[必須]服務器惟一ID,默認是1,通常取IP最後一段
複製代碼
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'q123456';
flush privileges;
show master status;
複製代碼
記住postion,file。不要騷操做。前端
change master to master_host='192.168.145.222',master_user='root',master_password='q123456',
master_log_file='mysql-bin.000011',master_log_pos=11045767;
flush privileges;
start slave;
show slave status\G
複製代碼
看下slave狀態java
注:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,不然都是錯誤的狀態(如:其中一個NO均屬錯誤)。以上操做過程,主從服務器配置完成。剩下的就是本身測試下是否ok,這些本身均可以搞了。mysql
MyCat主要做爲數據庫集羣的前端,實現讀寫分離,分表分庫等。一下軟件也能夠作linux
不一一的分析,能夠本身去探索。下面內容包括 MyCat的安裝,配置讀寫分離。sql
下載地址在這兒,找到本身系統的版本,下載便可。shell
wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1537842928_c32f510683c93346590cf97f05137fa3
mv wget jdk* jdk-8u181-linux-x64.tar.gz
mkdir /usr/lib/jvm
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/lib/jvm
複製代碼
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
複製代碼
下載地址, 選擇須要的版本下載便可。數據庫
wget http://dl.mycat.io/1.6.6/Mycat-server-1.6.6.1-test-20180729105217-linux.tar.gz
tar -zxvf Mycat* -C /usr/local
複製代碼
配置環境變量ubuntu
vim /etc/profile
export MYCAT_HOME=/usr/local/mycat
export PATH=${JAVA_HOME}/bin:${MYCAT_HOME}/bin:${PATH}
複製代碼
cd /usr/local/mycat/conf
vim server.xml
<user name="用戶名/root" defaultAccount="true">
<property name="password">密碼/q123456</property>
<property name="schemas">數據庫名/obc</property>
</user>
複製代碼
添加上面的用戶配置。vim
而後添加具體的DataNode配置
vim sc.xml
<dataNode name="dn5" dataHost="data1" database="obc" />
<dataHost name="data1" maxCon="1000" minCon="10" balance="1" writeType="0"
dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="ip:3306" user="數據庫用戶名/root"
password="密碼/q12345">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="ip:3306" user="root"
password="密碼/q12345" />
</writeHost>
</dataHost>
複製代碼
這裏面,有兩個參數須要注意,balance和 switchType。
其中,balance指的負載均衡類型,目前的取值有4種:
switchType指的是切換的模式,目前的取值也有4種:
switchType='-1' 表示不自動切換
switchType='1' 默認值,表示自動切換
switchType='2' 基於MySQL主從同步的狀態決定是否切換,心跳語句爲 show slave status
switchType='3'基於MySQL galary cluster的切換機制(適合集羣)(1.4.1),心跳語句爲 show status like 'wsrep%'。
所以,該配置文件中的balance="1"意味着做爲stand by writeHost的hostS1和hostS2將參與select語句的負載均衡,這就實現了主從的讀寫分離,switchType='-1'意味着當主掛掉的時候,不進行自動切換,即hostS1和hostS2並不會被提高爲主,仍只提供讀的功能。這就避免了將數據寫進slave的可能性,畢竟,單純的MySQL主從集羣並不容許將數據讀進slave中,除非配置的是雙master。
文檔大概記錄了MySQL的主從複製與讀寫分離。後面有時間再謝謝MySQL優化之類的。不是專門作後端的,寫的很差不要找我。近期寫了一個區塊鏈相關的Android app.有玩幣的大佬能夠下載玩玩,包含一千多種幣行情,金色財經,巴比特,幣世界,交易所新聞公衆。玩客雲礦工也能夠進來玩玩,能夠查看玩客雲行情,統計,及大量玩客雲機器管理。下載地址:www.pgyer.com/RHNg 。好了,就這樣。
歡迎長按下圖 -> 識別圖中二維碼或者微信掃一掃關注個人公衆號