全部數據庫的主從架構,主要作的都是
讀寫分離
。
數據庫的主從概念,就是指的數據庫存儲在多臺電腦上,互做備份,同時讀寫分離。也就至關於硬盤組合中的RAID 1
形式。
通常的設計是,寫就直接寫入Master數據庫,可是讀就從各個Worker從數據庫來讀取。這樣的分配是由於通常的讀寫配比是10: 1。mysql
因此通常商業網站,最少要有2臺電腦,一臺Master,一臺Worker。由於主從在同一臺機器上,是徹底沒有意義的。sql
整個數據庫的備份與修復: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須要在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 ;
一樣是修改/etc/mysql/my.cnf
:設計
server-id = 234 # 爲本機設置的服務器ID,能夠是任意整數,但不能和其它主機重複 log_bin = /var/log/mysql/mysql-bin.log
重啓服務器:$ sudo service mysql restart
rest
以上配置完成後,實際上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 ;
只有以上標註的兩個Yes後,才證實同步成功。
此時若是在Master主機上,能夠看到本身的狀態:
-- 查看Master主人的狀態 (本身的狀態) SHOW MASTER STATUS ;
此時,任何在Master主機上的修改,馬上就會同步更新到Worker從服務器。