萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Mysql主數據庫+備份數據庫部署教程

Mysql主數據庫+備份數據庫部署教程

本文我們來講講Mysql主備如何部署,這裡說的主是指Mysql主數據庫,備是從數據庫,備可以是多個,也可以是一個。

本文說的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了,此時,任何對主庫的修改,都能准實時地從備庫裡查詢出來。

copyright © 萬盛學電腦網 all rights reserved