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

MySQL主從介紹 準備工作 配置主 配置從 測試主從同步

 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並啟動。3,配置主。 修改my.cnf,增加server-id=130和log_bin=aminglinux1
 修改完配置檔案後,啟動或者重啟mysqld服務,/etc/init.d/mysqld restart。在/data/mysql/目錄下,我們可以看到aminglinux1.index和aminglinux1.000001兩個檔案。index為索引檔案,000001結尾的為二級制檔案,可以生成很多個。這兩個檔案是實現主從的根本。
 把mysql庫備份並恢復成aming庫,作為測試資料
 mysqldump -uroot  mysql > /tmp/mysql.sql      //注意:如有密碼則加上-p密碼,後面類似。
 mysql -uroot -e “create database aming”
 mysql -uroot aming < /tmp/mysql.sql
 建立用作同步資料的使用者
 grant replication slave on *.* to 'repl'@slave_ip identified by 'password'; //slave_ip是從的ip
 flush tables with read lock;
 show master status;
4,配置從。

 檢視my.cnf,配置server-id=132,要求和主不一樣
 修改完配置檔案後,啟動或者重啟mysqld服務
 把主上aming庫同步到從上
 可以先建立aming庫,然後把主上的/tmp/mysql.sql拷貝到從上,然後匯入aming庫
 mysql -uroot
 stop slave;
 change master to master_host='', master_user='repl', master_password='', master_log_file='', master_log_pos=xx;
 start slave;

 還要到主上執行 unlock tables。

5,檢視主從是否同步。

 從上執行mysql -uroot
 show slave stauts\G
 看是否有
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
 還需關注
 Seconds_Behind_Master: 0  //為主從延遲的時間
 Last_IO_Errno: 0
 Last_IO_Error:
 Last_SQL_Errno: 0

 Last_SQL_Error:

6,幾個配置引數

主伺服器上
 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=

7,測試主從。

 主上 mysql -uroot aming  
 select count(*) from db;
 truncate table db;
 到從上 mysql -uroot aming
 select count(*) from db;
 主上繼續drop table db;
 從上檢視db表。