mysql replication 主要通過復制二進制日志,在slave上執行master一樣的來SQL來保持master 和slave的數據一致。
好處不必多說, 第一個 master-slave的結構首先能實現讀寫分離, 對於緩解數據庫Server的鴨梨會起到一定好處, 另外當master宕機的話, 可以馬上切到slave上邊,可以提高系統的可用性。
1. mysql 的主從復制是通過 bin log來實現的, 首先master要開啟二進制日志
代碼如下 復制代碼server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_ignore_db = mysql
2. master 上要開一個專供復制的賬號
grant file,select,replication slave on *.* to slave@'%' identified by '123456'; --我這裡是有問題的,開了權限給所有的庫 所有的機器,而且還設置了弱密碼,不過做為測試機玩玩也未必不可
3. slave 機器 設置一個 server-id
server-id = 2
4. 設置復制信息
這裡要先看一下當前 master 的binlog 記到哪裡了, 從哪個文件開始的哪一個位置, 然後設置slave從這個地方開始復制。 所以這個時候要保證 master 和 slave的數據是一樣的,這樣才能保證master和slave數據的一致性。
先在master端執行 : show master status;
代碼如下 復制代碼mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000015 | 26560211 | | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
得到當前的二進制日志文件和當前的位置
在 slave 端執行:
代碼如下 復制代碼change master to master_host='192.168.57.64',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000015',
master_log_pos=26560211;
最後 slave端 start slave;
用 show slave status\G; 查看參數 Slave_IO_Running 和 Slave_SQL_Running, 如果兩個參數都是 yes , 說明搞定