MySql之主從複製

前言

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

master已存在數據

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之主從複製,謝謝閱讀~