影響MySQL-A數據庫的操做,在數據庫執行後,都會寫入本地的日誌系統A中。假設,實時的將變化了的日誌系統中的數據庫事件操做,在MYSQL-A的3306端口,經過網絡發給MYSQL-B。MYSQL-B收到後,寫入本地日誌系統B,而後一條條的將數據庫事件在數據庫中完成。 那麼,MYSQL-A的變化,MYSQL-B也會變化,這樣就是所謂的MYSQL的複製,即MYSQL replication。node
在上面的模型中,MYSQL-A就是主服務器,即master,MYSQL-B就是從服務器,即slave。mysql
日誌系統A,其實它是MYSQL的日誌類型中的二進制日誌,也就是專門用來保存修改數據庫表的全部動做,即bin log。【注意MYSQL會在執行語句以後,釋放鎖以前,寫入二進制日誌,確保事務安全】linux
日誌系統B,並非二進制日誌,因爲它是從MYSQL-A的二進制日誌複製過來的,並非本身的數據庫變化產生的,有點接力的感受,稱爲中繼日誌,即relay log。sql
能夠發現,經過上面的機制,能夠保證MYSQL-A和MYSQL-B的數據庫數據一致,可是時間上確定有延遲,即MYSQL-B的數據是滯後的。數據庫
【即使不考慮什麼網絡的因素,MYSQL-A的數據庫操做是能夠併發的執行的,可是MYSQL-B只能從relay log中讀一條,執行下。所以MYSQL-A的寫操做很頻繁,MYSQL-B極可能跟不上。】安全
數據如何不被丟失服務器
備份網絡
讀寫分離併發
數據庫負載均衡負載均衡
高可用
依賴於二進制日誌,binary-log.
二進制日誌中記錄引發數據庫發生改變的語句
Insert 、delete、update、create table
主機全部寫的數據都會生成二進制SQL日誌執行文件,從機只須要將SQL日誌執行文件獲取到,而後進行數據同步便可
MySQL-master:192.168.33.135
MySQL-slave:192.168.33.136
rpm -ivh MySQL-client-5.5.44-1.linux2.6.x86_64.rpm 此命令會報錯
rpm -ivh MySQL-client-5.5.44-1.linux2.6.x86_64.rpm --nodeps
安裝服務端,若是當前虛擬機有mysql報錯,出現版本衝突 yum remove mysql-libs 而後從新安裝服務端
中止服務:service mysql stop
重啓服務:service mysql restart
鏈接報1130錯誤,沒有權限進行遠程鏈接,更改權限爲%
發現host爲127.0.0.1表明只能本機使用root ,外界用不了
若是報ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY’ 不用理會
找到my.cnf配置文件,rpm方式安裝在/etc下沒有該文件,mysql默認啓動的時候會加載/usr/share/mysql/my-medium.cnf,只須要將這個文件複製到/etc下更名爲my.cnf便可
server-id = 保證惟一,建議配置成ip地址第四位
log-bin=mysql-bin 爲了讓主機生成二進制SQL日誌執行文件
server-id = 22
log-bin=mysql-bin
binlog_do_db=test
主服務器建立一個帳號,將帳號分配從服務器,從服務器拿到該帳號而後才能夠執行同步數據操做
GRANT REPLICATION SLAVE ON *.* TO 'zheng'@'%' IDENTIFIED BY 'zheng';
從服務器執行同步操做,使用主服務器生成的權限帳號,將二進制文件同步
根據主服務器ip地址,生成的權限帳號的用戶名和密碼以及二進制文件名稱還有文件大小進行同步
CHANGE MASTER TO MASTER_HOST='192.168.33.135',MASTER_USER='zheng',MASTER_PASSWORD='zheng',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=241;
rpm -qa|grep -i mysql 查看安裝狀況
卸載命令:
rpm -e MySQL-server-版本號
rpm -e MySQL-client-版本號
查找mysql目錄:find / -name mysql
刪除 rm -rf xxx/mysql