mysql主從配置
MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從后,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據實時同步的
MySQL主從是基于binlog的,主上須開啟binlog才能進行主從。
主從過程大致有3個步驟
1)主將更改操作記錄到binlog里
2)從將主的binlog事件(sql語句)同步到從本機上并記錄在relaylog(中繼日志)里
3)從根據relaylog里面的sql語句按順序執行
主上有一個logdump線程,用來和從的I/O線程傳遞binlog
從上有兩個線程,其中I/O線程用來同步主的binlog并生成relaylog,另外一個SQL線程用來把relaylog里面的sql語句落地
這里寫圖片描述
主從配置-主上操作
安裝mysql
修改my.cnf,增加server-id=130和log_bin=aminglinux1
[root@wwlinux701logs]#vim/etc/my.cnf
server-id=130
log_bin=wwlinux701
修改完配置文件后,啟動或者重啟mysqld服務
[root@wwlinux701logs]#/etc/init.d/mysqldrestart
ShuttingdownMySQL....SUCCESS!
StartingMySQL..............SUCCESS!
[root@wwlinux701logs]#
1
2
3
4
把mysql庫備份并恢復成aming庫,作為測試數據
mysqldump-uroot-p123456mysql>/tmp/mysql.sql
mysql-uroot-p123456-e“createdatabaseaming”
mysql-uroot-p123456aming</tmp/mysql.sql
[root@wwlinux701logs]#mysqldump-uroot-p123456mysql>/tmp/mysql.sql
Warning:Usingapasswordonthecommandlineinterfacecanbeinsecure.
[root@wwlinux701logs]#mysql-uroot-p123456-e"createdatabaseaming"
Warning:Usingapasswordonthecommandlineinterfacecanbeinsecure.
[root@wwlinux701logs]#mysql-uroot-p123456aming</tmp/mysql.sql
Warning:Usingapasswordonthecommandlineinterfacecanbeinsecure.
[root@wwlinux701logs]#
創建用作同步數據的用戶
mysql-uroot-p123456aming
grantreplicationslaveon.to‘repl’@192.168.11.131identifiedby‘123456’;
flushtableswithreadlock;#需要先鎖定表
showmasterstatus;
[root@wwlinux701logs]#mysql-uroot-p123456aming
grantreplicationslaveon*.*to'repl'@192.168.11.131identifiedby'123456';
mysql>grantreplicationslaveon*.*to'repl'@192.168.11.131identifiedby'123456';
QueryOK,0rowsaffected(1.00sec)
mysql>
flushtableswithreadlock;#需要先鎖定表
mysql>flushtableswithreadlock;
QueryOK,0rowsaffected(0.11sec)
mysql>
wwlinux701.000001|660619#需要記住這兩個參數
這里寫圖片描述
主從配置-從上操作
安裝mysql
查看my.cnf,配置server-id=131,從要求和主不一樣從上不需要log_bin,因為只有主才需要二進制文件
修改完配置文件后,啟動或者重啟mysqld服務
scp192.168.11.130:/tmp*.sql/tmp/
把主上aming庫同步到從上mysql庫除外的其他庫都同步一下
可以先創建aming庫,然后把主上的/tmp/mysql.sql拷貝到從上,然后導入aming庫
mysql-uroot-p123456
stopslave;
changemastertomaster_host=’192.168.11.130’,master_user=’repl’,master_password=’123456’,master_log_file=’wwlinux701.000001’,master_log_pos=660619;
startslave;
showslavestatus\G#用這個命令監測如果是兩個yes就是沒問題的
這里寫圖片描述
還要到主上執行unlocktables;
查看主從同步是否正常
從上執行mysql-uroot
showslavestauts\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:
幾個配置參數
主服務器上
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-p123456aming
selectcount(*)fromdb;
這里寫圖片描述
truncatetabledb;
到從上mysql-uroot-p123456aming
selectcount(*)fromdb;
這里寫圖片描述
主上繼續droptabledb;
從上查看db表
主上執行
select*fromuserwhereHost=’localhost’;
mysql>deletefromuserwhereHost=’localhost’;
這里寫圖片描述
從上執行
select*fromuserwhereHost=’localhost’;
這里寫圖片描述