標籤:mysql主從
首先說下為什麼需要mysql主從?
主要有三個原因:1,可以輔助備份,提高資料安全性;2,可以實現讀寫分離,達到負載分擔的效果;3,可以實現高可用,在主伺服器故障時,迅速切換到從,保證業務不間斷運行。
針對上述需求,基本上一主一從,即可滿足。
再來看下mysql主從複製的工作過程:
主要有三步:
1)master將改變記錄到二進位日誌(binary log)中,(這些記錄叫做二進位日誌事件,binary log events)
2)slave將master的binary log events拷貝到它的中繼日誌(relay log);
3)slave重做中繼日誌中的事件,將改變反映它自己的資料。
下面是mysql主從的配置過程:
1,首先保證兩台伺服器上的mysql版本相同,
2,接下來可以編輯主和從上的設定檔/etc/my.cnf,主要添加這兩個參數:開啟二進位日誌和配置server-id。
#vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必須]啟用二進位日誌 server-id=808 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
3,重啟兩台伺服器上的mysql /etc/init.d/mysql restart
4,在主上建立複製賬戶並授權
GRANT REPLICATION SLAVE ON *.* to ‘mycopy‘@‘%‘ identified by ‘qq123456‘;
5,查詢並記錄master的狀態
mysql> SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000004 | 26085 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)
6,配置從伺服器
mysql> change master to master_host=‘192.168.1.10‘,master_user=‘mysync‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000004‘,master_log_pos=7298;
mysql> start slave;
mysql> show slave status\G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.10 Master_User: mysync Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 26085 Relay_Log_File: mysqld-relay-bin.000003 Relay_Log_Pos: 19038 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 26085 Relay_Log_Space: 19194 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No
此處,主要查看Slave_IO及Slave_SQL進程的狀態。如果都為YES狀態,則正常。否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。
7,現在可以在主伺服器上建立資料庫或表等,來做主從同步測試。
mysql主從配置