mysql主從複製指兩個伺服器之間資料庫的同步,當主伺服器的數據進行了變更,從伺服器也會自動更新,其過程是通過bin log日誌實現的,本質是binlog日誌的傳輸。 mysql主從分兩個角色 1、主伺服器 master 2、從伺服器 slave 主伺服器 MySQL 配置 從伺服器 MySQL 配 ...
mysql主從複製指兩個伺服器之間資料庫的同步,當主伺服器的數據進行了變更,從伺服器也會自動更新,其過程是通過bin-log日誌實現的,本質是binlog日誌的傳輸。
mysql主從分兩個角色
1、主伺服器 master
2、從伺服器 slave
主伺服器 MySQL 配置
#/etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必須]啟用二進位日誌
server-id=1 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
binlog-do-db=target_db_name //[可選] 設置需要同步的數據,如果不設置將同步所有資料庫
binlog_ignore_db=mysql //[可選] 忽略mysql數據,因為mysql資料庫是mysql的一些帳戶存放,這個沒有必要同步
從伺服器 MySQL 配置
[mysqld]
log-bin=mysql-bin //[必須]啟用二進位日誌
server-id=2 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
登錄主伺服器為從伺服器授權
GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync'; //不建議使用root
查看主伺服器的狀態
show master status;
mysql> show master status;
+------------------+----------+------------------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+------------------------------+------------------+
| mysql-bin.000075 | 101236 | target_db_name,target_db_name| mysql,mysql |
+------------------+----------+------------------------------+------------------+
登錄從伺服器配置
mysql> CHANGE MASTER TO
-> MASTER_HOST = 'master_ip',
-> MASTER_USER ='sync',
-> MASTER_PASSWORD='sync_pwd',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mysql-bin.000075',
-> MASTER_LOG_POS=101236;
開啟從伺服器的複製功能
START SLAVE
開查看從伺服器的狀態
show slave status
# 查詢後存在如下鍵值
Slave_IO_Running = Yes
Slave_SQL_Running = Yes
修改從伺服器同步配置信息
CHANGE MASTER TO MASTER_HOST='another_master_ip';
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000012'MASTER_LOG_POS=32106;
SLAVE STOP // 停止同步
SLAVE START // 恢復同步