17.1 MySQL主從介紹
17.2 準備工做
17.3 配置主
17.4 配置從
17.5 測試主從同步
17.6擴展
17.7課堂筆記
17.1 MySQL主從介紹
MySQL主從又叫作Replication、AB複製。簡單講就是A和B兩臺機器作主從後,在A上寫數據,另一臺B也會跟着寫數據,二者數據實時同步的
MySQL主從是基於binlog的,主上須開啓binlog才能進行主從。
主從過程大體有3個步驟
主從共有3個線程:
主從原理圖
當有寫入操做時,會記錄到Master的binlog裏面,主上(Master)的log dump 線程會和從上(Slave)的I/O線程相互通訊;從上將binlog信息讀到Slave,生成一個Relaylog中繼日誌;從上的SQL線程將Relaylog裏面的sql語句執行
主從應用場景:
一、作數據備份;主機器宕機,能夠啓動從機器,給web、客戶端提供服務。
二、不只作數據備份,還要做爲讀庫,讓web、客戶端從從機器讀取數據,減緩主機器讀取壓力
17.2 準備工做
準備兩臺機器,都要有mysql服務
###注意,進行主從配置同步操做時必定要保持兩邊數據一致
17.3 配置主
1、安裝mysql
2、修改my.cnf,增長server-id=150和log_bin=xin1
vim /etc/my.cnf
server-id=150
log_bin=xin2
3、修改完配置文件後,啓動或者重啓mysqld服務
/etc/init.d/mysqld restart
4、把mysql庫備份並恢復成xin庫,
做爲測試數據
mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
mysql -uroot -p123456 -e "create database xin"
mysql -uroot -p123456 xin < /tmp/mysql.sql
5、建立用做同步數據的用戶
grant replication slave on *.* to 'repl'@slave_ip identified by 'password';
#slave_ip爲從機器的ip
grant replication slave on *.* to 'repl'@192.168.233.129 identified by '123456';
flush tables with read lock;
#鎖表,防止表繼續寫入
show master status;
#查看binlog的位置和數值,須要記住,待會要用到
17.4 配置從
1、安裝mysql
2、編輯my.cnf,配置server-id=129,(要求和主上不同,且從上沒有binlog日誌)
vim /etc/my.cnf
server-id=129
3、修改完配置文件後,啓動或者重啓mysqld服務
/etc/init.d/mysqld restart
4、把主上xin庫同步到從上
scp 192.168.233.150:/tmp/*.sql /tmp/
[root@xinlinux-01 ~]#
scp 192.168.233.150:/tmp/*.sql /tmp/
root@192.168.233.150's password:
xin.sql 100% 649KB 8.6MB/s 00:00
zrlog.sql 100% 9863 1.9MB/s 00:00
5、能夠先建立xin庫,而後把主上的/tmp/mysql.sql拷貝到從上,而後導入xin庫
mysql -uroot
create database xin;
create database zrlog;
mysql -uroot xin < /tmp/xin.sql
mysql -uroot zrlog < /tmp/zrlog.sql
6、實現主從同步
mysql -uroot
stop slave;
change master to master_host='', master_user='repl', master_password='', master_log_file='', master_log_pos=xx;
#master_host爲主機器ip,msaster_pasword爲主機器密碼,master_log_file爲binlog日誌名稱,master_log_pos爲binlog日誌數值
change master to
master_host='192.168.233.150',master_user='repl',master_password='123456',master_log_file='xin2.000002',master_log_pos=665019;
start slave;
#斷定主從是否配置成功
show slave status\G
查看主從同步是否正常
一、
查看Slave_IO_Running和Slave_SQL_Running是否爲yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
二、關注是否有error信息
Seconds_Behind_Master: 0 #爲主從延遲的時間
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
7、還要到主上執行
unlock tables; #解鎖表
17.5 測試主從同步
my.cnf配置文件的幾個配置參數(主從機器均可配置)
主服務器上
binlog-do-db= #僅同步指定的庫
binlog-ignore-db= #忽略指定庫
從服務器上
replicate_do_db= #同步指定庫
replicate_ignore_db= #忽略指定庫
replicate_do_table= #同步指定表
replicate_ignore_table= #忽略指定表
replicate_wild_do_table= #如aming.%, 支持通配符%,同步指定庫
(經常使用)
replicate_wild_ignore_table= #忽略指定庫,可用通配符%
(經常使用)
測試主從
主上操做
mysql -uroot -p123456;
use xin;
show tables;
select count(*) db;
mysql>
select count(*) db;
+----+
| db |
+----+
| 1 |
+----+
1 row in set (0.06 sec)
從上操做
mysql -uroot
use xin;
select count(*) db;
mysql>
select count(*) db;
+----+
| db |
+----+
| 1 |
+----+
對比可知主從的數據徹底同樣,限制開始對主機器的數據進行操做,查看從機器是否同步操做的數據
主上操做清空db表數據
truncate table db;
select * from db;
mysql>
select * from db;
Empty set (0.00 sec)
從上操做
select * from db;
mysql>
select * from db;
Empty set (0.00 sec)
#發現從機器的db表數據清空了
主上繼續操做
drop table db;
從上查看wp_users表
select count(*) db;
若是不當心對從機器進行的誤刪等操做致使主從機器不一致:
一、能夠先stop slave,再start slave;查看slave show slave status 兩個yes是否在;
二、若是仍是不行,就須要在從機器從新配置主從同步
(前提是要保持數據一致)
stop slave;
change master to master_host='', master_user='repl', msaster_pasword='', master_log_file='', master_log_pos=xx;
start slave;
17.6擴展
#若是遇到主從不能正常同步,提示uuid相同的錯誤。這是由於克隆機器致使。
不停庫不鎖表在線主從配置
主從不一樣步
主主
mysql-proxy 實現讀寫分離
mysql-proxy相似的產品有:
mycat實現分庫分表
mysql環形主從
MHA架構
17.7課堂筆記
1、NFS
案例:nfs服務端鏈接了不少的nfs客戶端,修改了nfs服務端的配置直接重啓rpcbind服務途中致使一個php網站的nfs客戶端訪問不了nfs服務端,用戶訪問網頁一直加載不了網頁在等待,nfs客戶端出現大量php進程請求,致使磁盤佔用高
解決方法:在重啓rpcbind服務前,將客戶端掛載的nfs先卸載掉;這樣即便用戶訪問不了界面也不須要等待,會返回404錯誤,客戶端的磁盤佔用也不會高
2、FTP
#安裝purl-ftpd前須要安裝epel擴展源
3、Tomcat
基礎概念:
JAVAEE Java Plateform Enterprise Edition 企業版本 用來作網站的
JAVAEE Java Plateform Standard Edition 標準版本 用來作電腦運行的軟件的
JAVAEE Java Plateform Micro Edition 微型版本 作手機軟件的
JDK Java Development kit java的開發環境 JDK=java開發工具+JRE
JRE Java Runtime Environment java程序的運行環境,包含java運行所須要的類庫和LVM
LVM java虛擬機
server 和jsp
編寫java web網站的
在html代碼中內嵌java代碼就是jsp,而servlet是純jsp代碼寫的
jsp主要用來展示頁面效果,而servlet主要負責邏輯控制
用戶第一次運行jsp時,會自動轉換爲servlet代碼,因此說jsp本質上是一種servlet
第一次訪問servlet時,會將其編譯爲類文件,後續能夠直接訪問類文件。
要想使用servlet必須把它放在特定的位置,並且西藥對其配置,jsp放到哪裏均可以(webapps下),不須要配置。
tomcat、JDK、java web應用三者關係
tomcat是容許並java web應用的一箇中間件,好比要運行一個java的網站,須要安裝tomcat,就像運行PHP網站須要安裝php。簡單說,jsp程序須要解析須要tomcat。
而tomcat是用java開發的一款軟件,要想讓tomcat運行起來,須要一個運行環境,JDK就是給tomcat提供這個運行環境的。
4、tomcat 8005端口啓動慢解決方法
編輯$JAVA_HOME/jre/lib/security/java.security,將"securerandom.soure=file:/dev/random"的/dev/random改成"/dev/urandom"
$JAVA_HOME的位置:
若是是openjdk(yum安裝的),在/usr/lib/jvm/
若是是下載的二進制包,就在jdk主目錄(如:/usr/local/jdk_1.8)
5、普通用戶啓動tomcat
#1024之內的端口都必須用root用戶才能啓動,通普通用戶身份啓動不了
一、建立普通用戶
useradd tomcat
二、修改tomcat目錄屬主
chown -R tomcat /usr/local/tomcat
三、啓動tomcat
- su -c "/usr/local/tomcat/bin/startup.sh" tomcat
- 或者先登陸普通用戶,而後運行啓動命令
四、關閉tomcat
su -c "/usr/local/tomcat/bin/shutdown.sh" tomcat
#注意:用普通用戶啓動tomcat,監聽端口不能使80,由於80必須以root身份監聽
6、tomcat目錄介紹
- bin:主要存放腳本文件,例如經常使用的windows和linux系統中剛啓動和關閉腳本
- conf:主要存放配置文件,其中個最重要的兩個配置文件是server.xml和web.xml
- lib:主要存放tomcat運行所依賴的包
- LICENSE:版權許可證,軟件版權信息及適用方位等信息
- logs:主要村翁運行時產生的日誌文件,例如catalina.out、catalina.(date).log等
- NOTICE:通知信息,一些軟件的所屬信息和地址等
- RELEASE-NOTES:發佈說明,包含一些版本升級功能點
- RUNNING.txt:運行說明,必需的運行環境等信息
- temp:存放tomcat運行時產生的臨時文件,例如開啓了緩存的應用城西,會在該目錄下生成一些文件
- webapps:部署web應用程序的默認目錄,也就是war包所在默認目錄
- work:主要存放有jsp文件生成的servlet(java文件以及最終編譯生成的class文件)
7、tomcat配置文件
8、重定向web應用程序目錄
#在一臺服務器上tomcat跑多個端口
一、建立實例目錄
mkdir -p /data/tomcat-instance
mkdir /data/tomcat-instance/www.123.com
cd !$
cp -r /usr/local/tomcat/conf /data/tomcat-instance/www.123.com
二、建立tomcat服務相關目錄
mkdir -p /data/tomcat-instance/www.123.com/{common,logs,temp,server,shared,webapps,work}
三、建立啓動和關閉腳本
四、配置編輯文件
vim /data/tomcat-instance/www.123.com/conf/server.xml
#修改三個端口,目的是爲了避免和其餘實例衝突
課堂筆記
1、NFS
案例:nfs服務端鏈接了不少的nfs客戶端,修改了nfs服務端的配置直接重啓rpcbind服務途中致使一個php網站的nfs客戶端訪問不了nfs服務端,用戶訪問網頁一直加載不了網頁在等待,nfs客戶端出現大量php進程請求,致使磁盤佔用高
解決方法:在重啓rpcbind服務前,將客戶端掛載的nfs先卸載掉;這樣即便用戶訪問不了界面也不須要等待,會返回404錯誤,客戶端的磁盤佔用也不會高
2、FTP
#安裝purl-ftpd前須要安裝epel擴展源
3、Tomcat
基礎概念:
JAVAEE Java Plateform Enterprise Edition 企業版本 用來作網站的
JAVAEE Java Plateform Standard Edition 標準版本 用來作電腦運行的軟件的
JAVAEE Java Plateform Micro Edition 微型版本 作手機軟件的
JDK Java Development kit java的開發環境 JDK=java開發工具+JRE
JRE Java Runtime Environment java程序的運行環境,包含java運行所須要的類庫和LVM
LVM java虛擬機
server 和jsp
編寫java web網站的
在html代碼中內嵌java代碼就是jsp,而servlet是純jsp代碼寫的
jsp主要用來展示頁面效果,而servlet主要負責邏輯控制
用戶第一次運行jsp時,會自動轉換爲servlet代碼,因此說jsp本質上是一種servlet
第一次訪問servlet時,會將其編譯爲類文件,後續能夠直接訪問類文件。
要想使用servlet必須把它放在特定的位置,並且西藥對其配置,jsp放到哪裏均可以(webapps下),不須要配置。
tomcat、JDK、java web應用三者關係
tomcat是容許並java web應用的一箇中間件,好比要運行一個java的網站,須要安裝tomcat,就像運行PHP網站須要安裝php。簡單說,jsp程序須要解析須要tomcat。
而tomcat是用java開發的一款軟件,要想讓tomcat運行起來,須要一個運行環境,JDK就是給tomcat提供這個運行環境的。
4、tomcat 8005端口啓動慢解決方法