一、MySQL 主從簡介
- MySQL 默認支持主(master)從(slave)功能.
- 配置完主從備份后效果:在主數據庫中操作時,從同步進行變化.
- 主從本質:主數據的操作寫入到日志中,從數據庫從日志中讀取,進 行操作.
- 主從原理
- 默認 MySQL 沒有開啟日志功能
- 每個 數據庫需 要有一 個 server_id, 主 server_id 值小 於從 server_id
- 每個 mysql 都有一個 uuid,由於虛擬機直接進行克隆,需要修改 uuid 的值
- 必須要在主數據庫中有一個用戶具有被從數據庫操作的權限
- MySQL5.7以前只支持一主一從的配置,5.7以后版本支持多主一從。
二、MySQL主從配置
2.1 安裝mysql解壓版
- 設置了root用戶的密碼為root
- 把虛擬機克隆一份
- 主從的ip
- 主:192.168.17.132
- 從:192.168.17.133
2.2 修改主數據庫的my.cnf文件
- 執行命令:
vim /etc/my.cnf
- 修改內容
- log_bin 日志文件名稱,啟用日志功能
- server_id 給定一個值
- 重啟mysql:
service mysql restart
2.3 進入主數據庫的客戶端工具
mysql -u root --proot
2.4 新建一個myslave用戶並賦予權限
- 命令:
grant all privileges on *.* to 'myslave'@'192.168.17.133' identified by 'smallming' with grant option; grant all privileges on *.* to root@'%' identified by 'root' with grant option; //授予root所有IP均可訪問的權限
" * .* "
表示任意數據庫的任意表- myslave 用戶名
- 192.168.17.133 從數據庫的ip,哪個客戶端可以連接mysql服務端
- root是myslave的密碼
- 檢查執行結果:
2.5 通過命令可以觀察主數據庫在主從關系中狀態
- 日志文件:存在於mysql安裝目錄/data
- data文件夾xxxxx.index文件,存儲日志文件在哪里
- data文件夾auto.cnf編寫當前mysql的uuid
2.6 修改主數據庫的防火牆,放行3306端口
vim /etc/sysconfig/iptables
- 重啟防火牆:
service iptables restart
2.7 操作從數據庫的內容
- 修改從數據庫的my.cnf的server_id:
vim /etc/my.cnf
- 設置server_id為2
2.8 修改從的uuid
vim /usr/local/mysql/data/auto.cnf
- 隨意把值修改一下,只要和主數據庫的UUID值不同即可。
- 重啟mysql服務:
service mysql restart
2.9 進入從數據庫的客戶端工具
mysql -u root --proot
2.10 操作slave
- 關閉slave:
stop slave
- 在從中配置出master的信息
change master to master_host='192.168.17.132',master_user='myslave',master_password='root',master_log_file='master_log.000001';
- 開啟slave:
start slave
- 顯示slave狀態:
show slave status \G;
- 只要沒有錯誤,說明配置成功主從關系.
2.11 驗證主從關系
- 主從服務都重新啟動.
- 在主數據庫中新建數據庫,新建表,添加數據,觀察從數據庫的狀態.
create database demo1 default character set utf8;
- 新數據查看是否有該數據庫,有則說明配置成功。