簡介
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語句落地mysql
主從配置
主上操做
安裝mysql
vi /etc/my.cnf,增長server-id=130和log_bin=slx1
修改完配置文件後,啓動或者重啓mysqld服務(/etc/init.d/mysqld restart)
重啓後會在/data/mysql/目錄下生成(跟log_bin有關)
-rw-rw----. 1 mysql mysql 120 4月 11 19:03 slx1.000001
-rw-rw----. 1 mysql mysql 14 4月 11 19:03 slx1.indexsql
把mysql庫備份並恢復成slx庫,做爲測試數據
mysqldump -uroot mysql > /tmp/mysql.sql
mysql -uroot -e 「create database slx」
mysql -uroot slx < /tmp/mysql.sql
建立用做同步數據的用戶
grant replication slave on . to 'repl'@[slave_ip] identified by 'password';
flush tables with read lock; 暫時把動做凍結,鎖定
show master status; 顯示結果
mysql> show master status;
+-------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------+----------+--------------+------------------+-------------------+
| slx1.000001 | 652233 | | | |
+-------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)服務器
從上操做
安裝mysql
查看my.cnf,配置server-id=132,要求和主不同
修改完配置文件後,啓動或者重啓mysqld服務
把主上aming庫同步到從上
能夠先建立aming庫,而後把主上的/tmp/mysql.sql拷貝到從上,而後導入aming庫
mysql -uroot
stop slave;
change master to master_host='[ip]', master_user='repl', master_password='', master_log_file='[主上的File]', master_log_pos=[主上的position],
start slave;
還要到主上執行 unlock tables 解鎖ide