mysql主從複製-方案2

   MySQL主從介紹mysql

(兩臺機器數據同步)linux

blob.png

主:-->binlogsql

從:-->relaylog數據庫

 

 

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

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

blob.png

 

主從的應用場景:測試

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

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

 

 準備工做3d

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

======================== 配置主========================

blob.png

主:192.1683.136.133      從:192.168.136.134

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

 

log-bin=mysql-bimlog

binlog_format=mixed

server-id = 159
binlog-do-db = bim    #指定數據庫
binlog-do-db = bam
binlog-do-db = apphub

 

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_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

相關文章
相關標籤/搜索