mysql的主從複製不但能夠做爲數據庫備份,也能實現數據庫的讀寫分離,爲之後處理高併發打下基礎
廢話很少說,直接上乾貨mysql
分佈式數據庫分爲主數據庫(master)和從數據庫(slaves)sql
主從複製的基本流程:數據庫
1.在master上更新的內容以二進制日誌(Binary Log)的方式存在本地服務器
2.slaves開啓IO線程拿到master服務器上的二進制流文件,並存入中繼日誌(Relay Log)
這個工做叫作:binlog dump process併發
3.slaves再開啓一個SQL線程來讀取反序列化後的中繼日誌,執行其中的sql語句,達到備份數據庫的效果分佈式
1.master受權給slave‘從複製(replication slave)’權限,並指定用戶名(to username),指定登陸IP(@IP),設置密碼(identified by password)ide
mysql > GRANT REPLICATION SLAVE ON *.* TO username@’192.168.0.138’ IDENTIFIED BY ‘password’;
2.查看master的file和position值,並記錄,以後有用高併發
show master status;
3.對master和slave進行配置(server_id最好是本機IP的最後幾位,保證惟一性)線程
masterrest
vi /etc/my.cnf server_id=155 log-bin=mysql-bin
slave
vi /etc/my.cnf server_id=138 log-bin=mysql-bin relay_log= mysql-relay-bin log_slave_updates=1 read_only=1
重啓mysql
service mysqld restart
4.配置slave,使之master與同步
mysql> change master to master_host=’master的IP’, master_user=’username’, master_password=’password’, master_log_file=’mysql-bin.000005’, master_log_pos=0;
5.啓動slave的同步進程:
mysql> start slave;
查看進程狀態
SHOW SLAVE STATUS
6.在master上查看主從複製的狀態
mysql> show processlist \G
1.鎖住master,防止進行寫入操做
mysql> FLUSH TABLES WITH READ LOCK;
2.查看master狀態,拿到file和position值
mysql> show master status;
3.將主master的數據文件(整個/opt/mysql/data目錄)複製到slave,經過tar歸檔壓縮後再傳到從服務器解壓
配置slave,使之master與同步時
master_log_file=’5’, master_log_pos=;
填寫剛纔記錄的
4。取消主數據庫鎖定
mysql> UNLOCK TABLES;
以上即是MySql之主從複製,謝謝閱讀~