主從複製應用場景
MySQL 主從複製集羣功能使得 MySQL 數據庫支持大規模高併發讀寫成爲可能,同時有效地保護了物理服務器宕機場景的數據備份。
1、從服務器作爲主服務器的實時數據備份。
2、主從服務器實現讀寫分離,從服務器實現負載均衡。
3、把多個從服務器根據業務重要性進行拆分訪問。
主從複製實戰(一主多從)
這裏準備三臺主機,沒有條件,可以用虛擬機代替
主服務器:192.168.1.235
從服務器1:192.168.127.129
從服務器2:192.168.127.130
主機之間相互能ping的通,在三臺主機上面安裝各自mysql,我這裏用的是5.7版本
主服務器配置:
找到mysql配置文件,可以在【服務】裏面找到mysql配置文件的位置
打開配置文件,在【mysqld】節點下添加
#唯一,要與從機的不同
server-id = 1
# Binary Logging.
#開啓二進制日誌
log-bin= mysql-bin
注意server-id要唯一。
命令行登錄mysql,mysql -uroot -proot
1、分別給兩個從服務器創建用戶:
CREATE USER '使用名'@'備機IP地址' IDENTIFIED BY '密碼';#創建用戶
2、分別給兩個從服務器用戶賦權
GRANT REPLICATION SLAVE ON *.* TO '使用名'@'備機IP地址';#分配權限
3、刷新權限
flush privileges
4、重啓mysql,登錄mysql,輸入show master status;
5、爲防止position一直變動,此時我們給主服務器加上只讀鎖
flush table with read lock;
從服務器配置:
這裏只配置一個,另一個也是一樣的配置
1、同主服務器一樣,在mysql配置文件中,加入
#唯一,要與主機或其他從機的不同
server-id = 2
# Binary Logging.
#開啓二進制日誌
log-bin= mysql-bin
2、重啓mysql服務器,登錄mysql服務器,mysql -uroot -proot
CHANGE MASTER TO
MASTER_HOST='192.168.1.235', #主機的IP
MASTER_USER='slave1', #之前創建的那個使用名
MASTER_PASSWORD='slave1', #密碼
MASTER_LOG_FILE='mysql-bin.000007', #這是主庫中show master status;File下的那個值
MASTER_LOG_POS=154;#這是主庫Position下的那個值
開啓slave同步進程
start slave;
查看slave狀態
show slave status\G
當Slave_IO_Running和Slave_SQL_Running都yes時,主從複製創建成功。
主服務器給表解鎖:unlock tables
在主服務器創建數據庫:
庫名:123,建表:test,插入數據
從服務器1:192.168.1.129
從服務器2:192.168.1.130
到此,mysql一主多從已經搭建完畢
常見錯誤:
1、出現Slave_IO_Running:No:https://www.jb51.net/article/27220.htm
2、出現Slave_SQL_Runing:No:https://blog.csdn.net/heng_ji/article/details/51013710
3、當主服務器中有個庫從服務器從來沒有,如果主服務器操作之後,從服務器就會存在一個或多個事務需要手動去跳過
slave stop;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳過一個事務
slave start
不然就會在之後的同步過程中會同步失敗,想要通過配置,自動跳過這些錯誤的事務,在mysql的配置文件【mysqld】節點中加入
slave-skip-errors=all