8.31 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
修改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主從配置、準備工作、配置主、配置從、測試主從同步