1. 程式人生 > >分庫分表操作

分庫分表操作

1、對於儲存層的壓力知道如何去提供及解決方案和思路。

2、對分庫分表的常用手段有全面瞭解。

3、瞭解mycat的主從以及 binlog

4、知道 Mycat以及其他相似的中介軟體

課程安排:

    1.為什麼要分庫分表

        超大容量資料問題

        查詢效能的問題

        如何做到:

            垂直切分、水平切分

            1.垂直分庫:把相關聯的一類表部署在一個庫上(垂直分庫解決的是表過多的問題)

            2.垂直分表:解決的是單表列過多的問題(列多的表拆分成列少的表)

            水平切分:大資料表拆分成小表(資料上億必須拆分)

                

            一致性hash    

            範圍拆分,可以按照id

            日期拆分,根據增添入表中資料的日期

            拆分之後帶來的問題:

                1.跨庫的join問題,  select a.x,b.y from a join b on a.id=b.id

                    設計的時候考慮到應用層的join問題。

                    在服務層去做呼叫。

                    A服務中查詢到一個list   

                     A服務、B服務

                2.在服務層去做呼叫

                    A服務裡面查詢到一個list

                    for(list){

                        bservice.select(list);

                    }

                3.全域性表

                    1.資料變更比較少的基於全域性應用的表

                    2.

    2.如何去做到

    3.常見的拆分策略

    4.拆分後帶來的問題

    5.Mysql主從配置(5.7版本的資料庫)

            wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

            rpm -ivh mysql57-community-release-el7-8.noarch.rpm

            yum install mysql-server

    6、瞭解 binlog 以及主從複製原理

centos7安裝mysql:

 wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

rpm -ivh mysql57-community-release-el7-8.noarch.rpm

 yum install mysql-server

 systemctl start mysqld

登入到mysql當中:

    執行mysql -uroot -p 回車 回車

設定root使用者的密碼:

    set password = password('root')

建立一個使用者(用於做資料同步):

create user repl identified by 'repl';    

grant replication slave on *.* to 'repl'@'%' identified by 'repl';

mysql的主從配置檔案:

    資料庫版本5.7版本

       mysql的資料檔案和二進位制檔案:   /var/lib/mysql/

       mysql的配置檔案: /etc/my.cnf

       mysql的日誌檔案:  /var/log/mysql.log

    接下來以192.168.159.136為master,192.168.159.137為slave,192.168.159.135為 slave。