1.原理:(1)主服務(wù)器上面的任何修改都會保存在二進(jìn)制日志Binary log里面
(2) 從服務(wù)器上面啟動一個I/O thread,通過配置好的用戶名和密碼, 連接到主服務(wù)器上面請求讀取二進(jìn)制日志昵慌,然后把讀取到的二進(jìn)制日志寫到本地的一個Realy log(中繼日志)里面。
(3) 從服務(wù)器上面同時開啟一個SQL thread 定時檢查Realy log实抡,如果發(fā)現(xiàn)有更新立即把更新的內(nèi)容在本機的數(shù)據(jù)庫上面執(zhí)行一遍阁簸。
具體操作
1.在主服務(wù)器上啟用二進(jìn)制日志并記錄其是主服務(wù)器的標(biāo)識(在 /etc/my.cnf中加入)
[mysqld]log-bin=/var/log/mysql/mysql-bin
server-id=1
創(chuàng)建用戶并且授權(quán)
shell> mkdir /var/log/mysql
shell> chown mysql.mysql /var/log/mysql
重啟服務(wù)(這個都會)
2.創(chuàng)建個專門復(fù)制數(shù)據(jù)的用戶
然后試試是否能用此用戶連接
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql>
3.先導(dǎo)出數(shù)據(jù)然后SCP到從服務(wù)器中
shell > vim ~/.mysql_user
> 密碼
shell > mysqldump --defaults-file=~/.mysql_user -h127.0.0.1 --all-databases > dbdump.sql
scp dbdump.sql 'root'@'xxx.xxx.xxx.xxx':
4.配置從服務(wù)器 并且重啟
// my.cnf 文件
[mysqld]
server-id=2
5.導(dǎo)入數(shù)據(jù)到從服務(wù)器
shell> mysql < /root/fulldb.dump
6.在從服務(wù)器上的mysql中配置連接主服務(wù)器的信息
mysql> CHANGE MASTER TO
MASTER_HOST='mysql-master1',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
7.啟動從服務(wù)器的復(fù)制線程開始
mysql> start slave;
Query OK, 0 rows affected (0.09 sec)