Mysql主要資料庫+備份資料庫部署教程

來源:互聯網
上載者:User

本文說的mysql主備是指單向、非同步資料複製。可以是一個主、多個備。這樣做的好處顯而易見:有利於健壯性、速度和系統管理。備用資料庫可以做為唯讀查詢和備份的機器,減輕主用資料庫的負擔。

實施前提:
主用資料庫的配置裡至少有:

[mysqld]
log-bin=mysql-bin
server-id=1

建議主備的資料庫版本一致。

我所知道的最簡單的實施方式(不需要停主庫,甚至不需要長時間地禁止主庫寫入):

主庫操作:
在主庫裡建一個複製用的使用者:

grant replication slave on *.* TO 'replication'@'備庫地址' identified by 'replication';

匯出主庫的資料,並記下當然記錄檔和位移:

mysqldump --master-data=2 --single-transaction -uroot -p --all-databases >dumpfile

這裡是把資料以SQL的形式匯出,並記下匯出瞬間的記錄檔和位移(得益於--master-data=2參數),出來的dumpfile的前面會有一行類似以下的注釋資訊,就是檔案名稱和位移值了:

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=1061553673;

    對於這步,網路上一般採用的方法為:

    FLUSH TABLES WITH READ LOCK;--先把主庫設定成唯讀,然後匯出SQL或者直接複製資料檔案
    SHOW MASTER STATUS; --記下記錄檔和位移
    UNLOCK TABLES;  --恢複主庫寫入

    這樣,至少在複製資料的那段時間,主庫是不可提供服務的。

備庫操作:
複製主庫的/etc/my.cnf和dumpfile。
把主庫配置裡的 server-id 改成2(或者3、4,多個備庫儲存互不相同),再加上

relay-log = slave-relay.log
relay-log-index = slave-relay-log.index

匯入資料:

 mysql <dumpfile

進入mysql命令列執行:

SLAVE STOP;
CHANGE MASTER TO
MASTER_HOST='主庫地址',
MASTER_PORT=3306,
MASTER_USER='replication',
MASTER_PASSWORD='密碼',
MASTER_LOG_FILE='mysql-bin.000011',
MASTER_LOG_POS=1061553673;
SLAVE START;

然後,就搞定了,可以在備庫執行

SHOW PROCESSLIST;

查看同步的狀態,如果此命令的輸出裡有兩個“system user”的進程,並且Command都是“Connect”的話,就差不多OK了,此時,任何對主庫的修改,都能准即時地從備庫裡查詢出來。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.