1. 程式人生 > >8.31 MySQL主從配置、準備工作、配置主、配置從、測試主從同步

8.31 MySQL主從配置、準備工作、配置主、配置從、測試主從同步

stop 恢復備份 rep nor my.cnf 用戶 兩個 前綴 host

1、MySQL主從配置

   MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據是實時同步的

  MySQL主從是基於binlog的,主上須開啟binlog才能進行主從。

  主從過程大致有3個步驟

    1)主將更改操作記錄到binlog裏

    2)從將主的binlog事件(sql語句)同步到從本機上並記錄在relaylog裏

    3)從根據relaylog裏面的sql語句按順序執行

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

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

2、配置主

  主上操作

  安裝mysql

  修改my.cnf,增加server-id=130和log_bin=aminglinux1

  修改完配置文件後,啟動或者重啟mysqld服務,/etc/init.d/mysql restart,重啟之後查看/data/mysql目錄下,發現生產多個以aminglinux1為前綴的文件,這個文件是實現主從的主要文件

技術分享圖片

  把mysql庫備份並恢復成aming庫,作為測試數據

  mysqldump -uroot mysql > /tmp/mysql.sql

技術分享圖片

  mysql -uroot -e “create database aming”創建新的庫

  mysql -uroot aming < /tmp/mysql.sql,恢復備份文件至新創建的庫

  創建用作同步數據的用戶

  進入數據庫,然後執行如下命令:

  grant replication slave on *.* to ‘repl‘@slave_ip identified by ‘password‘;

  flush tables with read lock;,鎖定表,停止數據寫入

  show master status;

技術分享圖片

3、配置從 

  從上操作

  安裝mysql

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

技術分享圖片

  從不需要增加log_bin參數,修改完配置文件後,啟動或者重啟mysqld服務

  把主上aming庫同步到從上

  可以先創建aming庫,然後把主上的/tmp/mysql.sql拷貝到從上,然後導入aming庫

技術分享圖片

  創建表之後,執行如下命令進行恢復:

mysql -uroot blog < /tmo/blog.sql

mysql -uroot zrlog < /tmo/zrlog.sql

mysql -uroot aming < /tmo/aming.sql

  然後執行如下命令,實現主從

  mysql -uroot

  stop slave;

  change master to master_host=‘‘,192.168.1.130 master_user=‘repl‘, master_password=‘‘, master_log_file=‘aminglinux1.000001‘, master_log_pos=474566;  //此命令是實現主從的重要配置

  start slave;

  然後執行show slave status\G查看從狀態,此處應顯示為兩個yes

技術分享圖片

  還要到主上執行 unlock tables

4、測試主從同步

  主服務器上

binlog-do-db= //僅同步指定的庫

binlog-ignore-db= //忽略指定庫

  從服務器上

replicate_do_db=

replicate_ignore_db=  //不常用

replicate_do_table=  //僅同步哪些表,不常用

replicate_ignore_table=  //忽略哪些表,此操作容易導致數據不完整,因此建議采用下面兩種操作

replicate_wild_do_table= //如aming.%, 支持通配符%

replicate_wild_ignore_table=

  

  主從測試

  主上

  mysql -uroot aming

  select count(*) from db;

  truncate table db;此時該db為空

技術分享圖片

  到從上

  mysql -uroot aming

  select count(*) from db;

  主上繼續drop table db;

  從上查看db表,此時也沒有該表

技術分享圖片

8.31 MySQL主從配置、準備工作、配置主、配置從、測試主從同步