主機 | 操做系統 | IP地址 | 主要軟件 |
---|---|---|---|
master | centos7.3x64 | 192.168.200.132 | mysql 5.5.24 |
slave1 | centos7.3x64 | 192.168.200.130 | mysql 5.5.24 |
slave2 | centos7.3x64 | 192.168.200.128 | mysql 5.5.24 |
Amoeba | centos7.3x64 | 192.168.200.133 | amoeba,jdk |
客戶端 | centos7.3x64 | 192.168.200.129 | mysql 5.5.24 |
前言:前端
讀寫分離:java
Amoeba(變形蟲)項目,該開源框架於2008年 開始發佈一款 Amoeba for Mysql軟件。這個軟件致力於MySQL的分佈式數據庫前端代理層,它主要在應用層訪問MySQL的時候充當SQL路由功能,專一於分佈式數據庫代理層(Database Proxy)開發,它位於與Client、DBServer(s)之間,對客戶端透明。具備 負載均衡、高可用性、SQL過濾、讀寫分離、可路由相關的到目標數據庫、可併發請求多臺數據庫合併結果。mysql
systemctl stop firewalld.service setenforce 0
yum install ntp -y // 時間同步 在centos7.3 中默認是安裝好的(不是最小化安裝) vim /etc/ntp.conf //修改其主配置文件 由於個人網段全是200 段的 server 127.127.200.0 //本地是時鐘源// fudge 127.127.200.0 stratum 8 //設置時間層級爲8(限制在15內)// 啓動服務 systemctl start ntpdate.service
systemctl start ntpd.service //開啓服務 /usr/sbin/ntpdate 192.168.200.132 //同步主服務器的時間 當提示the NTP socket is in use, exiting //說明同步好了可使用
yum install gcc gcc-c++ make cmake ncurses-devel bisonlibaio-devel -y //安裝所須要的環境 tar zxvf mysql-5.5.24.tar.gz -C /opt/ //.mysql軟件包解壓至/opt目錄下 useradd -s /sbin/nologin mysql //建立管理用戶 mkdir /usr/local/mysql //建立存放目錄 轉到MySQL解壓後目錄 #配置mysql cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/home/mysql -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 make & make install //執行安裝 chown -R mysql.mysql /usr/local/mysql //修改MySQL目錄屬主屬組 export PATH=$PATH:/usr/local/mysql/bin/ //刷新環境變量 cp support-files/my-medium.cnf /etc/my.cnf //複製mysql默認配置文件及啓動腳本 cp support-files/mysql.server /etc/init.d/mysqld //複製mysql默認配置文件及啓動腳本 /usr/local/mysql/scripts/mysql_install_db \ /切換到MySQL解壓目錄//初始化數據庫 --user=mysql \ --ldata=/var/lib/mysql \ --basedir=/usr/local/mysql \ --datadir=/home/mysql ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock /*直接創建軟鏈接*/ vim /etc/init.d/mysqld //mysqld中的mysql安裝路徑及數據目錄路徑 basedir=/usr/local/mysql datadir=/home/mysql service mysqld start mysqladmin -u root password 'abc123' //設置MySQL登錄密碼 mysq -u root -p //就能夠登錄
主MySQL 主配置文件 vim /etc/my.cnf server-id = 11 //主個從的區別總得有一個作老大吧 log-bin=master-bin //主服務器日誌文件// log-slave-updates=true //從服務器更新二進制日誌// service mysqld restart 從MySQL 主配文件 兩個從MySQL同樣的配置 vim /etc/my.cnf 注意這是在從服務器上配置 server-id = 22 //id這個兩個從的服務器都同樣 relay-log=relay-log-bin //從主服務器上同步日誌文件記錄到本地// relay-log-index=slave-relay-bin.index //定義relay-log的位置和名稱// 到此主從同步讀寫分離配置文件就到此接數
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.200.%' IDENTIFIED BY '123456'; 給與從服務器權限 對方的名字爲myslave 訪問的網段200端 密碼 123456 FLUSH PRIVILEGES; //當即生效 show master status; //查看狀態 以上就是主服務器的同步配置 下面是從服務器同步配置固然實在MySQL模式下 change master to master_host='192.168.200.132',master_user='myslave',master_password='123456',master_log_file='master-bin.000004',master_log_pos=339; //添加向主服務器同步數據命令 start slave; //開啓slave從服務器 show slave status\G; //查看狀態
在主MySQL上面添加新表 看看兩個從服務是否能同步
複製jdk包及安裝 cp jdk-6u14-linux-x64.bin /usr/local/ cd /usr/local/ //別忘切換目錄···· ./jdk-6u14-linux-x64.bin # yes 按enter 修改jdk目錄名稱 mv jdk1.6.0_14/ /usr/local/jdk1.6 添加jdk、jre、amoeba環境變量 vim /etc/profile //末尾添加 export JAVA_HOME=/usr/local/jdk1.6 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin export AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin source /etc/profile //刷新環境變 mkdir /usr/local/amoeba // 建立amoeba目錄 tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ //解壓amoeba軟件包至/usr/local/amoeba目錄下 chmod -R 755 /usr/local/amoeba/ //修改amoebab目錄權限 /usr/local/amoeba/bin/amoeba //驗證amoeba是否安裝成功 顯示amoeba start|stop說明安裝成功 +--------在三臺mysql上添加權限開放給amoeba訪問-----------------------+ |grant all on *.* to test@'192.168.200.%' identified by '123.com'; | +------------------------------------------------------------------+ vim conf/amoeba.xml //配置文件 ---30行-- <property name="user">amoeba</property> #訪問amoeba的用戶名 ----32行--------- <property name="password">123456</property> #密碼 ---117-去掉註釋- <property name="defaultPool">master</property> #默認爲主服務器 <property name="writePool">master</property> #寫入爲主服務器 <property name="readPool">slaves</property> #讀取爲slaves池,現有slave一、slave2服務器
vim conf/dbServers.xml 3 <dbServer name="master" parent="abstractServer"> #name爲master 44 <factoryConfig> 45 <!-- mysql ip --> 46 <property name="ipAddress">192.168.200.132</property> #主服務器IP地址 47 </factoryConfig> 48 </dbServer> 49 50 <dbServer name="slave1" parent="abstractServer"> #name爲slave1 51 <factoryConfig> 52 <!-- mysql ip --> 53 <property name="ipAddress">192.168.200.128</property> #從服務器1 IP地址 54 </factoryConfig> 55 </dbServer> 56 57 <dbServer name="slave2" parent="abstractServer"> #name爲slave2 58 <factoryConfig> 59 <!-- mysql ip --> 60 <property name="ipAddress">192.168.200.130</property> #從服務器2 IP地址 61 </factoryConfig> 62 </dbServer> 63 64 <dbServer name="slaves" virtual="true"> #name爲slaves 65 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> 66 <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--> 67 <property name="loadbalance">1</property> #默認爲輪詢方式 68 69 <!-- Separated by commas,such as: server1,server2,server1 --> 70 <property name="poolNames">slave1,slave2</property> #輪詢順序爲:slave一、slave2 71 </poolConfig> 72 </dbServer> /usr/local/amoeba/bin/amoeba start& //啓動服務 netstat -anpt | grep java //查看Java端口
這個就簡單了 yum install mysql -y //直接用yum 裝 mysql -u amoeba -p123456 -h 192.168.200.133 -P8066 //訪問的IP是變形蟲的IP地址的
驗證讀寫分離linux
stop slave; //關閉同步 在主服務器上建立一個表格 create table zhang (id int(10),name varchar(10),address varchar(20)); 則在客戶端能夠查看的到在Slave1,Slave2服務器上則看不到 反之當在從服務器自己上寫入數據則客戶端顯示出來,主服務器顯示不出來