主從複製:主庫可寫(會寫入從庫)可讀,從庫只能讀
主主複製:兩個庫可寫可讀,一個庫修改會寫入另一個庫
A.主從複製
1.準備兩臺機器
192.168.1.193 master 主庫機器
192.168.1.194 slave 從庫機器
2.在兩臺機器安裝mysql5.7
3.**配置 master 主庫機器 **
a.開啓binlog
設置mysql的唯一編號(mysql5.7即更高版本新加參數), 和開啓binlog日誌
輸入vi /etc/my.cnf 進入配置文件,按Insert鍵進入編輯模式,添加如下參數
server-id=1 (機器的唯一標識)
log-bin=/var/lib/mysql/mysql-bin (開啓binlog)
添加完後,按Esc鍵,輸入 :wq! 保存退出
b.重啓 service mysqld restart
c.進入mysql,查看binlog是否開啓成功,輸入cd /var/lib/mysql,看到如下文件代表開啓成功
d.創建用戶並授權
登錄MySQL mysql -uroot -p
創建用戶:create user ‘repl’ identified by ‘repl’;
授權:grant replication slave on . to ‘repl’@‘192.168.1.%’ identified by ‘repl’;
4.配置slave 從庫機器
a.開啓binlog
輸入vi /etc/my.cnf 進入配置文件,按Insert鍵進入編輯模式,添加如下參數
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
( ( server-id機器的唯一標識),後面兩步是用來打開slave的relaylog功能的)
添加完後,按Esc鍵,輸入 :wq! 保存退出
b.重啓 service mysqld restart
5.建立主從關係
a.打開主庫機器登錄mysql
輸入 show master status; 查看狀態
b.打開從庫機器登錄mysql
輸入 show slave status\G; 查看狀態,狀態未開啓時進行如下設置:
change master to
master_host=‘192.168.1.193’, // 主節點
master_port=3306, //主節點的端口號
master_user=‘repl’, // 賬號
master_password=‘repl’, // 密碼
master_log_file=‘mysql-bin.000002’, // show master status 對應的的日誌
master_log_pos=936; // show master status 對應的
c.輸入start slave 開啓從節點
輸入 show slave status\G; 查看狀態,如下圖所示爲成功
6.Navicat數據庫工具創建主從庫連接,如下圖所示:
如主從庫未開啓遠程訪問,需先開啓,操作如下:
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
可以操作數據庫啦
B.主主複製
1.準備兩臺機器
192.168.1.193 master 主庫機器
192.168.1.195 master 主庫機器
2.在兩臺機器安裝mysql5.7
https://blog.csdn.net/qq_16676539/article/details/81904714
3.修改my.cnf
開啓binlog
輸入vi /etc/my.cnf 進入配置文件,按Insert鍵進入編輯模式,添加如下參數
第一臺:
server-id=1
log-bin=/var/lib/mysql/mysql-bin
auto_increment_increment=2
auto_increment_offset=1
第二臺:
server-id=3
log-bin=/var/lib/mysql/mysql-bin
auto_increment_increment=2
auto_increment_offset=2
重啓 service mysqld restart
4. 創建用戶並授權
登錄MySQL mysql -uroot -p
創建用戶:create user ‘repl’ identified by ‘repl’;
授權:grant replication slave on . to ‘repl’@‘192.168.1.%’ identified by ‘repl’;
set global validate_password_policy=0;
set global validate_password_length=1;
5.建立關係
第二臺關聯第一臺
a.打開第一臺機器登錄mysql
輸入 show master status; 查看狀態
b.打開第二臺機器登錄mysql,執行如下操作
change master to
master_host=‘192.168.1.193’, // 主節點
master_port=3306, //主節點的端口號
master_user=‘repl’, // 賬號
master_password=‘repl’, // 密碼
master_log_file=‘mysql-bin.000002’, // show master status 對應的的日誌
master_log_pos=2072; // show master status 對應的
第一臺關聯第二臺
a.打開第二臺機器登錄mysql
輸入 show master status; 查看狀態
b.打開第一臺機器登錄mysql,執行如下操作
change master to
master_host=‘192.168.1.195’, // 主節點
master_port=3306, //主節點的端口號
master_user=‘repl’, // 賬號
master_password=‘repl’, // 密碼
master_log_file=‘mysql-bin.000001’, // show master status 對應的的日誌
master_log_pos=702; // show master status 對應的
6.啓動庫,執行start slave
7.數據庫工具Navicat新建連接,遠程操作數據庫,可以看到兩個庫可以互相讀寫
*大功告成~~~~*
原文鏈接:https://blog.csdn.net/a375015762/article/details/80164042
binlog主要用途
binlog的兩個重要用途:
-
主從複製
對於主從部署的mysql server,master將所有可能更改數據庫狀態的操作寫入binlog並將其同步給slave,後者重放binlog中的操作序列以便使其數據庫狀態與master達到一致,這樣就實現了master-slave的數據同步。 -
數據恢復
數據庫恢復時可以回放binlog重建宕機時的數據狀態。假設數據庫在某個備份點後又運行一段時間後宕機,則server重啓後,可以在上次備份點的基礎上,通過回放binlog來重做數據以便恢復上次備份點到server宕機這段時間內的數據狀態。
注意:binlog只包含可能改變數據庫狀態的操作,因此,select或show等不會修改數據的操作不會記錄在binlog中。
---------------------
原文地址:
https://blog.csdn.net/qq_16676539/article/details/81906959