mysql主從和半主從

mysql主從和半主從

Mysql主從複製(Mysql主從複製就是爲了保障數據的數據安全性和安全性)

MYSQL主從同步架構是目前使用最多的數據庫架構之一,尤其是負載比較大的網站,因此對於主從同步的管理也就顯得非常重要,新手往往在出現主從同步錯誤的時候不知道如何入手,這篇文章就是根據自己的經驗來詳細敘述mysql主從的管理。

MYSQL主從同步的作用

(1) 數據分佈
(2)
負載平衡(load balancing)
(3)
備份
(4)
高可用性(high availability)和容錯

MYSQL主從同步的原理

關於MYSQL的主從同步,最主要的是要了解MYSQL的主從同步是如何工作的也即主從同步的原理,通過下圖能很明白的指導其工作的過程:

wKiom1NnXGjxs9-WAAFUBfOrsPw027.jpg

大致描述一下過程:從服務器的IO線程從主服務器獲取二進制日誌,並在本地保存爲中繼日誌,然後通過SQL線程來在從上執行中繼日誌中的內容,從而使從庫和主庫保持一致。主從同步的詳細過程如下:

1.主服務器驗證連接。

2.主服務器爲從服務器開啓一個線程。

3.從服務器將主服務器日誌的偏移位告訴主服務器。

4.主服務器檢查該值是否小於當前二進制日誌偏移位。

5.如果小於,則通知從服務器來取數據。

6.從服務器持續從主服務器取數據,直至取完,這時,從服務器線程進入睡眠,主服務器線程同時進入睡眠。

7.當主服務器有更新時,主服務器線程被激活,並將二進制日誌推送給從服務器,並通知從服務器線程進入工作狀態。

8.從服務器SQL線程執行二進制日誌,隨後進入睡眠狀態。

-------------------------------------------------------------------------------------

一:修改主從數據庫配置文件的id,

vi /etc/my.cnf

[mysqld]

log-bin=mysql-bin  //[必須]啓用二進制日誌

server-id=1       //[必須]服務器唯一ID,假設是1,

二:主從複製配置

(1):master上進行操作

Mysql增加權限

Grant 權限 on 數據庫.* to 用戶名@登陸主機identity by 密碼

例子:grant replication slave on *.* to repl@'10.168.10.10' identified by 'password';


(2)查詢主數據庫的狀態:show master status;


wKiom1NHlPvDPr36AACh9nZaMHY248.jpg

記下File以及Position的值,在後面進行從服務器操作的時候需要使用。

三:配置從服務器

(1)修改從服務器的配置文件/etc/my.cnf

使得“server-id=2”,並確定這個id沒有被別的mysql服務所使用。

(2)進入mysql裏面,

停掉:stop slave;

重置:reset slave; (reset 用於以前做過主從)

(3)執行同步的sql語句

change master_to master_host = ‘主機號’,master_user=’用戶名’

master_pasword=‘密碼’,master_log_file=’文件號’,master_log_pos=位置

  例子:

change master to master_host='10.168.102.45',master_user='repl',master_password='cc@snda2014',master_log_file='mysqld-bin.000002',master_log_pos=329;

開啓:start slave

就啓動了slave同步功能。

(4)主從同步檢查

執行如下語句

1mysql>show slave status\G

wKiom1NHl1zRubKKAAH0F_ZDZ7o286.jpg====================================================================================

mysql半主從

mysql半主從就是,master服務器在運行中再添加slave服務器,其實就是多了一個mysql備份,先把master上面的數據備份出來,導入slave mysql中,再做一下主從

數據庫備份mysqldump

mysqldump 導出數據

   a. 只導出表結構

       mysqldump --opt  -d  數據庫名 -u 用戶名 -p 密碼> xx.sql

       如: mysqldump --opt -d shop_data -u root  -p admin >onlystruct_shop_data.sql

   b. 只導出數據

       mysqldump -t  數據庫名 -u 用戶名-p 密碼 > xx.sql

       如: mysqldump --t shop_data -u root  -p admin > onlydata_shop_data.sql

   c. 導出所有數據和結構

       mysqldump 數據庫 -u 用戶名 -p 密碼 > xx.sql

       如: mysqldump shop_data -u root -p admin > shop_data.sql

   d. 導出特定表

       mysqldump  數庫 -u 用戶名 -p 密碼  -B  --table 表名 > xx.sql

       如: mysqldump shop_data -u root -p admin -B --table user > user.sql

默認字體格式  --default-character-set=utf8

導入數據sources

source 導入數據

  source  /home/root/XX.sql   只能用mysql -uroot -padmin 登錄後才能使用

如: source  /home/root/test.sql

=====================================================================================

綜上所述,mysql主從其實也就是那簡單的幾步,配置server_id

master機器:

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

show master status;

slave機器:

停掉:stop slave;

重置:reset slave

change master to master_host='10.168.102.45',master_user='repl',master_password='cc@snda2014',master_log_file='mysqld-bin.000002',master_log_pos=329;

start slave;


============================================================================

假如做完主從沒有成功,從以下三個原因分析和查找,一定能成功

1.slave權限問題

2.帳號密碼配置錯誤

3.查看物理網絡是否ok




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章