主從複製

## 簡介
master記錄全部的更新操做到二進制日誌文件,slave 根據二進制日誌文件進行同步;若是沒有特別指定,二進制日誌中全部的操做slave 都會執行,固然,你能夠指定slave 只執行特定的數據庫和表的更新操做;可是,你沒辦法指定master只記錄特定的數據庫和表的更新操做;
全部的節點都必須指定惟一的server-id,此外,slave s還必需要指定master的主機名,二進制文件名,和日誌文件位置;這些同步操做都是slave 本身主導的,同步進程有可能隨時都會鏈接,斷開,從新鏈接等;


## 配置說明
有多種方法進行配置副本集,具體的配置方法還要取決於你配什麼樣的副本集(主從、主主、層級主從),以及主庫是否已經有數據;
這些任務是你必需要完成的;
* 在master上,你必須啓用binary log,並配置server-id,重啓
* 每一個slave 必須配置server-id,重啓
* 看你心情,在master上建立一個單獨的用戶用來讀取binary log使用
* 在建立數據快照或者開啓副本集進程前,你須要在master上記錄當前binary log的位置,這在你配置slave時要讓他知道從哪裏開始執行;
* 若是你的master上已經有數據了,而且你但願同步到slave上去,你須要建立數據快照,複製到slave上去。
* 配置slave能夠鏈接到master上;

## 備份 恢復

## 開始配置
1. 配置master
For the greatest possible durability and consistency in a replication setup using  InnoDB  with transactions, you should use  innodb_flush_log_at_trx_commit=1  and  sync_binlog=1  in the master  my.cnf  file.
``` 
   #server-id   1~232-1
     log-bin=mysql-bin
     server-id=1  
```
2. 配置slave
    server-id=2

3. 建立用戶,可選

4. 獲取master的binary log 位置
在一個命令行中執行` mysql> FLUSH TABLES WITH READ LOCK; `
在另外一個命令行中查看` mysql > SHOW MASTER STATUS; `

5. 配置slave
```
    在mysql下執行:
     CHANGE MASTER TO
    MASTER_HOST='slave2.vfhdfs.com',
    MASTER_USER='repl',
    MASTER_PASSWORD='slavepass',
    MASTER_LOG_FILE='bin.000001',
    MASTER_LOG_POS=1480;
```
6. 開啓關閉slave
```
    mysql> start slave;
    mysql> stop slave;
```
8. 查看slave狀態
    ```
    show slave status\G
     ```

## 問題列表
* 在slave上沒法啓用查詢日誌,即在/etc/my.cnf中配置log時啓動錯誤
    [ERROR] /usr/sbin/mysqld: ambiguous option '--log=/var/log/mysql/slave.log' (log-bin, log_slave_updates)
     查了google,解決方案是目前log參數棄用,改用
     general_log=ON
  general_log_file=/tmp/mysql.log



相關文章
相關標籤/搜索