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表。