1、mysql的主從複製方案跟scp/rsync等命令進行的文件級別複製類似,都是數據的遠程傳輸。只不過是Mysql自帶這種功能而無需藉助第三方軟件而已。
2、它的複製並不是從磁盤上覆制,而是通過邏輯的binlog日誌中抓取sql語句重新應用到mysql數據庫中。
3、實現主從複製,master需要打開my.cnf中的binlog日誌功能。具體操作是增加以下參數:
[mysqld]
log-bin =/data/3306/mysql-bin --從數據庫可以不設置。避免影響性能。當然設置了也沒關係。
注意該語句需要放在[mysqld]模塊下。
4、用於主從複製的所有數據庫實例的server-id都不能相同。這點必須注意。
注意:my.cnf中參數是不能重複的。修改後需要重啓數據庫
5、建立用於複製的賬號:登陸到主數據庫,然後執行如下語句:
grant replication slave on *.* to 'rep'@'10.108.199.%' identified by 'redhat';可以看到只授權了replication的權限。只允許10.108.199網段以rep訪問。
select user,host from mysql.user;--查看結果。
6、備份數據庫語句:
mysqldump -uroot -p'redhat' -S /data/3306/mysql.sock --events -A -B |gzip > /data/backup/mysql_bak.$(date +%F).sql.gz
然後解壓。
然後把解壓的文件恢復到另外一個實例中。
mysql -uroot -p'redhat' -S /data/3308/mysql.sock < mysql_bak.2017-06-19.sql
登陸從數據庫:
CHANGE MASTER TO MASTER_HOST='10.0.0.7', MASTER_PORT=3306, MASTER_USER='rep', MASTER_PASSWORD='redhat', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1878;--對應的參數需要修改。
啓動slave;查看slave狀態;
start slave;
show slave status\G;
主要看到三個指標:IO_Running=yes;SQL_Running=yes;_Behind_Master=0;
如果這三個指標OK,說明主從設置成功。
以上內容請結合《跟老男孩學linux 運維--web集羣實踐》有更好理解(因爲爲是在學習這本書的時候做的筆記)