MySQL優化---主從複製

 1、主從複製概念

  

  影響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極可能跟不上。】安全

2、解決問題

  數據如何不被丟失服務器

  備份網絡

  讀寫分離併發

  數據庫負載均衡負載均衡

  高可用

3、主從複製原理

   依賴於二進制日誌,binary-log.

   二進制日誌中記錄引發數據庫發生改變的語句

   Insert 、delete、update、create table

 

主機全部寫的數據都會生成二進制SQL日誌執行文件,從機只須要將SQL日誌執行文件獲取到,而後進行數據同步便可

4、MySQL環境搭建(一主一從相同操做

  MySQL-master:192.168.33.135

  MySQL-slave:192.168.33.136

一、 鏈接到虛擬機,在/usr/local下新建一個文件夾爲mysql,將tar包上傳到此目錄當中

  

二、切換到/usr/local/mysql目錄,進行拆包   tar -xvf MySQL-5.5.44-1.linux2.6.x86_64.rpm-bundle.tar

  

三、 安裝mysql客戶端

  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

  

四、 安裝服務端    rpm -ivh MySQL-server-5.5.44-1.linux2.6.x86_64.rpm --nodeps

  

  安裝服務端,若是當前虛擬機有mysql報錯,出現版本衝突  yum remove mysql-libs  而後從新安裝服務端

  

五、 檢測是否安裝客戶端和服務器    rpm -qa|grep -i mysql

  

六、 啓動mysql服務   service mysql start

  中止服務:service mysql stop

  重啓服務:service mysql restart

  

七、 mysql默認安裝完畢後是沒有密碼的 更改密碼mysqladmin -uroot -p password '新密碼'

  

八、 登錄mysql服務器    mysql -uroot -p 

  

九、 SQLyog去鏈接虛擬機mysql  

  鏈接報1130錯誤,沒有權限進行遠程鏈接,更改權限爲%

  

  ①登錄mysql服務器   

    

  ②切換到mysql數據庫下   use mysql;

    

  ③查詢當前用戶表中用戶名和host信息,select user,host from user;  

  發現host爲127.0.0.1表明只能本機使用root ,外界用不了 

    

  ④更改權限,將host改成%       update user set host='%' where user='root'; 

  若是報ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY’ 不用理會  

    

  ⑤再次查看 權限已更改   select user,host from user;   

    

  ⑥刷新權限 flush privileges;  

    

  ⑦退出客戶端,重啓mysql   service mysql restart

    

  ⑧使用SQLyog去鏈接

    

5、搭建主從複製

一、 配置節點信息

  找到my.cnf配置文件,rpm方式安裝在/etc下沒有該文件,mysql默認啓動的時候會加載/usr/share/mysql/my-medium.cnf,只須要將這個文件複製到/etc下更名爲my.cnf便可

二、配置主節點

  ①執行 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

    

  ②編輯 vi /etc/my.cnf文件

  server-id = 保證惟一,建議配置成ip地址第四位
  log-bin=mysql-bin 爲了讓主機生成二進制SQL日誌執行文件

    

  ③重啓mysql服務器      service mysql restart

    

  ④查看當前server-id是否生效,使用sqlyog工具查看,若是返回值爲0或者1表明是默認的   SHOW VARIABLES LIKE 'server_id'

    

  ⑤查看當前主服務器狀態,若是看到的不是null表明成功~   SHOW MASTER STATUS

    

三、配置從節點

  ①執行 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

    

  ②編輯 vi /etc/my.cnf文件

  server-id = 22
  log-bin=mysql-bin
  binlog_do_db=test

    

  ③重啓mysql服務器   service mysql restart

    

  ④查看當前server-id是否生效,使用sqlyog工具查看,若是返回值爲0或者1表明是默認的       SHOW VARIABLES LIKE 'server_id'

    

四、設置服務器讀取權限

  主服務器建立一個帳號,將帳號分配從服務器,從服務器拿到該帳號而後才能夠執行同步數據操做
  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;

    

  ②開啓同步  START SLAVE

    

六、 mysql環境卸載

  rpm -qa|grep -i mysql   查看安裝狀況

  

  卸載命令:  

    rpm -e MySQL-server-版本號
    rpm -e MySQL-client-版本號

  查找mysql目錄:find / -name mysql

    

  刪除 rm -rf xxx/mysql

相關文章
相關標籤/搜索