分布式存儲——MySQL


分布式存儲——MySQL

常見的分布式存儲有:MySQL、Oracle、HDFS

一、centos7安裝MySQL

rpm的安裝方式

  • 1、輸入 yum -y remove mariadb-libs-1:5.5.44-2.el7.centos.x86_64 解決兼容問題

  • 2、下載三個包

    鏈接: https://pan.baidu.com/s/1xBqteubB6Q8rrb-kF-blBg  密碼: 6q43
    
  • 3、移植到centos的/usr/local/路徑下

  • 4、直接安裝

    [root@node01 local]# rpm -ivh MySQL-server-5.5.58-1.el7.x86_64.rpm MySQL-client-5.5.58-1.el7.x86_64.rpm MySQL-devel-5.5.58-1.el7.x86_64.rpm
    
  • 5、啟動服務

    [root@node01 local]# service mysql start
    
  • 6、設置開機自啟動

    [root@node01 local]# chkconfig mysql on
    
  • 7、設置mysql密碼

    [root@node01 local]# mysqladmin -uroot password admin
    
  • 8、登錄

    [root@node01 local]# mysql -uroot -padmin
    

二、mysql主從復制(冷備)

1、普通文件的同步

  • NFS網絡文件共享可同步存儲數據
  • Windows的Samba
  • Linux定時任務
  • ftp數據同步
  • ssh + scp服務器遠程同步

查看此時的定時任務:

[root@node01 local]# crontab -l
no crontab for root

每分鍾同步文件:

[root@node01 local]# crontab -e
* * * * * cp /etc/profile /home/profile.bak

*代表的順序是:分 時 日 月 周
2-6表示:2 3 4 5 6

刪除定時任務

[root@node01 local]# crontab -l

2、文件系統的同步

  • drbd(基於文件系統同步),幾乎同步任何業務數據

3、數據庫的同步

  • MySQL主從復制(數據同步)
  • Oracle DataGuard(甲骨文推出的一種高可用性數據庫方案)

4、MySQL主從復制介紹

直接關機、叉掉、復制虛擬機

  • MySQL支持單向、雙向、鏈式級聯、實時、異步復制,在復制過程中,一台服務器充當主服務器(master),一個或多個其他服務器充當從服務器(slave)
  • 復制可以是單向:M——>S,可以是雙向:M<——>M

5、主從復制的應用場景

  • 主從服務器互為備份,加強數據庫架構的健壯性
  • 主從服務器讀寫分離,分擔網站壓力,從服務器只處理用戶的查詢請求
  • 將從服務器按照業務拆分,分擔壓力

6、主從復制的原理

  • SQLyog也有mysql的日志信息

  • Master將改變記錄到二進制日志(binary log)中

  • Slave將Master的二進制日志事件(binary log events)拷貝到它的中繼日志(relay log)

  • Slave重做中繼日志(relay log)中的事件,將Master上的改變反映到它自己的數據庫中

  • 這些都是由從庫在做,所以是異步的數據同步

7、搭建MySQL主從復制

必須檢查防火牆是否已經關閉,若開啟狀態,先關閉

[root@node01 local]# systemctl status firewalld.service

第一台機器:

  • 1、復制mysql配置文件模板到/etc/my.cnf

    [root@node01 local]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
    
  • 2、重啟mysql

    [root@node01 local]# service mysql restart
    
  • 3、可以查詢到第一台機器,id是1

    mysql> show variables like "server_id";
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 1     |
    +---------------+-------+
    1 row in set (0.01 sec)
    

第二台機器:

  • 1、復制mysql配置文件模板到/etc/my.cnf

    [root@node02 local]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
    
  • 2、修改server-id=2

    [root@node02 local]# vi /etc/my.conf
    server-id = 2
    
  • 3、重啟mysql

    [root@node02 local]# service mysql restart
    
  • 4、可以查詢到第二台機器,id是2

    mysql> show variables like "server_id";
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 2     |
    +---------------+-------+
    1 row in set (0.01 sec)
    

第一台機器:

  • MySQL里查看主庫的日志文件信息

    mysql> show master status;
    

第二台機器:

  • slave節點mysql輸入一下內容,IP庫是主庫IP,日志文件信息,要跟第一台信息對應,即把下面SQL語句復制粘貼執行

    change master to 
    master_host='192.168.190.130',
    master_user='root',
    master_password='admin',
    master_log_file='mysql-bin.000001',
    master_log_pos=107;
    
  • 啟動從服務

    mysql> start slave;
    
  • 查看從服務信息

    mysql> show slave status\G
    

第一台機器:

  • 執行授權,兩邊都授權刷新一下

    mysql> grant all privileges on *.* to 'root'@'%' identified by 'admin' with grant option;
    
  • 刷新設置

    mysql> flush privileges;
    
  • 測試:第一台機器建個庫,第二台機器也存在

8、主從復制存在的問題

  • 因為是異步同步,有可能丟失極小一部分數據

9、centos7搭建MySQL雙主互備(熱備)

雙主互備就是要保持兩個數據庫的狀態自動同步,對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫數據一致,這樣做的意義是既提高了數據庫的容災性,又可以做負載均衡,可以將請求分攤到其中任何一台上,提高網站吞吐量

第二台機器:

  • 查看日志信息

    mysql> show master status;
    

第一台機器:

  • 在master輸入一下內容,IP是第二台機器

    change master to 
    master_host='192.168.190.130',
    master_user='root',
    master_password='admin',
    master_log_file='mysql-bin.000001',
    master_log_pos=419;
    
  • 啟動從服務

    mysql> start slave;
    
  • 測試:第二台建個庫,第一台也同步


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM