MySQL主從配置:主從介紹、配置主和從 、測試主從同步

            MySQL主從介紹mysql

(兩臺機器數據同步)
linux

blob.png

主:-->binlog
sql

從:-->relaylog數據庫


主上有一個log dump線程,用來和從的I/O線程傳遞binlogide

 從上有兩個線程,其中I/O線程用來同步主的binlog並生成relaylog,另一個SQL線程用來把relaylog裏面的sql語句落地(執行)測試

blob.png


主從的應用場景:spa

(1)作數據的備份,(主:做讀寫數據,從:實時同步,當 主 宕機時,從 也能夠即便提供服務 )線程

(2)也是作備份。(客戶從 從 這臺機器上讀取數據(可是不能再從上寫),減輕主的壓力)rest


            準備工做orm

1.兩臺機器都裝上mysql,而且都開啓mysql的服務



         配置主

blob.png

主:192.1683.136.133      從:192.168.136.134

1.修改my.cnf,增長server-id=133和log_bin=canshenglinux1


blob.png

2.修改完配置文件後,啓動或者重啓mysqld服務

blob.png


重啓完後,咱們能夠發如今/data/mysql下生成了以在配置文件中定義log_bin=canshenglinux1爲開頭的文件

blob.png

這些文件很重要,否則不能實現主從


3.

把mysql庫備份並恢復成cansheng庫,做爲測試數據(這個庫就是用來作主從)

 mysqldump -uroot -p123456 mysql > /tmp/mysql.sql

 mysql -uroot -p123456 -e 「create database cansheng」

 mysql -uroot -p123456 cansheng < /tmp/mysql.sql



4.建立用做同步數據的用戶


(1)先進入到mysql

 (2)再建立同步數據的用戶

 grant replication slave on *.* to 'repl'@slave_ip identified by '123456';


blob.png

blob.png

5.鎖定一下表:

flush tables with read lock;

(爲了同步前數據一致。)


show master status (查看一下position和file)

blob.png

(退出mysql)


此時查看一下/data/mysql又是什麼庫

blob.png

(通常同步不要同步mysql庫,由於裏面有不少用戶名和密碼)



6.備份一下所須要同步的庫:

mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql

blob.png


                  配置從


1.查看my.cnf,配置server-id=134,要求和主不同

blob.png


2.修改完配置文件後,啓動或者重啓mysqld服務

/etc/init.d/mysqld restart

blob.png


3.把主上須要同步的庫複製過來:

scp 192.168.136.133:/tmp/*.sql /tmp/

blob.png


臨時建立alias,方便使用命令:

alias 'mysql=/usr/local/mysql/bin/mysql'

alias 'mysqldump=/usr/local/mysql/bin/mysqldump'


4.進入mysql

建立相對應的庫:

create database cansheng;

create database zrlog;

create database mysql2;


5.數據恢復:

mysql -uroot cansheng < /tmp/mysql.sql

blob.png


6.進入mysql

(1)stop slave;

(2)change master to master_host='192.168.136.133', master_user='repl', master_password='123456', master_log_fil_log_file='canshenglinux1.000002', master_log_pos=646207;

blob.png


blob.png

(3)start slave;


(4)斷定主從是否配置成功

blob.png

show slave status\G

blob.png

這樣是表示不成功配置成功的要出現兩個yes才成功。

blob.png

不成功的因素:

(1)防火牆 systemctl  stop firewalld

 (2)selinux   -->關閉 sentenforce 0

(3)用戶名是否正確


{而個人因素是在配置主的時候指定用戶名和密碼錯誤了,從頭來了一次}


7.回到主,進到mysql解除table(表)的鎖定

unlock tables;

blob.png

至此完成主從配置:




                        測試主從同步

blob.png

(只須要在主或者從,其中一個配置就能夠了。這些參數默認是沒有配置的,沒有手動配置,那默認是同步全部的庫

在從上配置儘可能使用最後兩個,能夠避免在忽略某個庫或者表時,當級聯查詢的時候避免出現數據丟失,不應忽略的也忽略了!!

 



測試主從是否成功,是否同步!

1.兩臺機器都進到mysql下,進到測試的數據庫:cansheng2

blob.png

blob.png

 此時清空主上的comment表;看看從上的comment表數據是否也清空,從而同步。

truncate table comment;


blob.png


blob.png


刪除表測試:

blob.png

blob.png


 咱們不能再 從 這臺機器上執行mysql操做,否則這時咱們的主從就斷開。

(由於此時咱們的position已經改變)

blob.png

若是此時咱們的主從斷開了,應該從新執行

(1)stop slave;

(2)change master to master_host='192.168.136.133', master_user='repl', master_password='123456', master_log_fil_log_file='canshenglinux1.000002', master_log_pos=646207;

blob.png


blob.png

(3)start slave;


(4)斷定主從是否配置成功


show slave status\G


這樣是表示不成功配置成功的要出現兩個yes才成功。

blob.png

相關文章
相關標籤/搜索