MySQL的主從架構Master-Worker

全部數據庫的主從架構,主要作的都是 讀寫分離

數據庫的主從概念,就是指的數據庫存儲在多臺電腦上,互做備份,同時讀寫分離。也就至關於硬盤組合中的RAID 1形式。
通常的設計是,寫就直接寫入Master數據庫,可是讀就從各個Worker從數據庫來讀取。這樣的分配是由於通常的讀寫配比是10: 1。mysql

因此通常商業網站,最少要有2臺電腦,一臺Master,一臺Worker。由於主從在同一臺機器上,是徹底沒有意義的。sql

image

整個數據庫的備份與修復:shell

# 備份某個數據庫的全部表結構和數據
$ mysqldump -u root -p "password123" 數據庫名 > backup.sql

# 備份整個服務器的全部數據庫和數據
$ mysqldump -u root -p "password123" --all-databases --lock-all-tables > master_db.sql

# 修復(導入)備份的數據庫:
$ mysql -u root -p "password123" 數據庫名 < backup.sql

主從的配置

前提條件:數據庫

  • 兩臺電腦都具有徹底相同的數據(須要備份和導入)

Master電腦和Worker電腦,分別都有一個一樣的配置文件/etc/mysql/my.cnf
注意:MySQL的主從設置,在配置文件裏是沒有說明的。須要在MySQL的shell裏輸入命令來指明。服務器

Master配置

Master須要在mysql.cnf中配置如下幾個選項:架構

server-id = 123    #  爲本機設置的服務器ID,能夠是任意整數,但不能和其它主機重複
log_bin = /var/log/mysql/mysql-bin.log  # 日誌文件

重啓服務器:$ sudo service mysql restart網站

而後在Master的MySQL服務中,建立專屬的帳號,做爲Worker服務器遠程鏈接登陸用:spa

GRANT REPLICATION SLAVE ON *.* TO worker1@'%' IDENTIFIED BY 'password123' ;
FLUSH PRIVILEGES ;

Worker配置

一樣是修改/etc/mysql/my.cnf:設計

server-id = 234    # 爲本機設置的服務器ID,能夠是任意整數,但不能和其它主機重複
log_bin = /var/log/mysql/mysql-bin.log

重啓服務器:$ sudo service mysql restartrest

開啓運行主從架構

以上配置完成後,實際上MySQL是分不出誰是主誰是從的。須要在每一個Worker服務器的MySQL的shell裏來指明本身的主人是誰:

-- 指明主人是誰,以及鏈接方式
CHANGE MASTER TO master_host='192.168.1.101', 
    master_user='worker1', master_password='password123', 
    master_log_file='mysql-bin.000006', master_log_pos=590 ;

-- 開始鏈接
START SLAVE ;

-- 查看Worker從屬的狀態 (本身的狀態)
SHOW SLAVE STATUS \G ;

image

只有以上標註的兩個Yes後,才證實同步成功。

此時若是在Master主機上,能夠看到本身的狀態:

-- 查看Master主人的狀態 (本身的狀態)
SHOW MASTER STATUS ;

image

此時,任何在Master主機上的修改,馬上就會同步更新到Worker從服務器。

相關文章
相關標籤/搜索