1. 程式人生 > >MySQL主從配置:主從介紹、配置主和從 、測試主從同步

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

mysql主從配置

MySQL主從介紹

(兩臺機器數據同步)

技術分享圖片

主:-->binlog

從:-->relaylog


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

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

技術分享圖片


主從的應用場景:

(1)做數據的備份,(主:作讀寫數據,從:實時同步,當 主 宕機時,從 也可以即使提供服務 )

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


準備工作

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



配置主

技術分享圖片

主:192.1683.136.133 從:192.168.136.134

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


技術分享圖片

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

技術分享圖片


重啟完後,我們可以發現在/data/mysql下生成了以在配置文件中定義log_bin=canshenglinux1為開頭的文件

技術分享圖片

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


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';


技術分享圖片

技術分享圖片

5.鎖定一下表:

flush tables with read lock;

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


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

技術分享圖片

(退出mysql)


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

技術分享圖片

(一般同步不要同步mysql庫,因為裏面有很多用戶名和密碼)



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

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

技術分享圖片


配置從


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

技術分享圖片


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

/etc/init.d/mysqld restart

技術分享圖片


3.把主上需要同步的庫復制過來:

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

技術分享圖片


臨時創建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

技術分享圖片


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;

技術分享圖片


技術分享圖片

(3)start slave;


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

技術分享圖片

show slave status\G

技術分享圖片

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

技術分享圖片

不成功的因素:

(1)防火墻 systemctl stop firewalld

(2)selinux -->關閉 sentenforce 0

(3)用戶名是否正確


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


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

unlock tables;

技術分享圖片

至此完成主從配置:




測試主從同步

技術分享圖片

(只需要在主或者從,其中一個配置就可以了。這些參數默認是沒有配置的,沒有手動配置,那默認是同步所有的庫

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



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

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

技術分享圖片

技術分享圖片

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

truncate table comment;


技術分享圖片


技術分享圖片


刪除表測試:

技術分享圖片

技術分享圖片


我們不能再 從 這臺機器上執行mysql操作,不然這時我們的主從就斷開。

(因為此時我們的position已經改變)

技術分享圖片

如果此時我們的主從斷開了,應該重新執行

(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;

技術分享圖片


技術分享圖片

(3)start slave;


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


show slave status\G


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

技術分享圖片















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