**
Mysql主從複製服務器搭建步驟
Mysql服務器主主複製容易出現的問題就是:
①數據混亂;
②主鍵可能重複;
從而爲了提高MySQL服務器穩定性 ,就出現了MySQL服務器主從複製。MySQL服務器主從複製(下問就以主從代替)讓mysql服務器穩定性提升,避免單臺mysql服務器宕機後影響整個業務,當出現宕機問題後,可以立即使從機提升爲新的主服務器。從而實現sql高可用冗餘性。
不廢話了,接下來我們來配置一下!
一、操作系統:Centos7
首先需要搭建2臺mysql服務器
搭建步驟可以參考我之前的文章
虛擬機CentOS搭建PHP開發環境以及安裝Memcached
1. 查看主從服務器IP:
IP查看命令
ipconfig/all
主服務器:
從服務器:
2. 主從分別安裝mariadb
yum install mariadb mariadb-test mariadb-server
cp /usr/share/mysql/my-huge.cnf /etc/my.cnf #拷貝配置文件
提示是否覆蓋,輸入y繼續
3.修改主服務器
vi /etc/my.cnf
① server-id=120 (服務id,每個id不能重複,都是唯一的,用ip的最後三位即可,這是一個技巧)
② log-bin=master-bin (二進制日誌,文件格式爲master-bin.0000001)
③ log-bin-index=master-bin.index (這一句可能沒有,自己添加)
4. 啓動主服務器:
systemctl restart mariadb.service
mysql>show master status;
5. 登錄主服務器,並增加用以同步的賬戶:這裏的repl是自己定義的用戶名
a) mysql>create user repl;
b) GRANT REPLICATION SLAVE ON *.* TO 'repl'@'從ip' IDENTIFIED BY ' repl的用戶密碼';
c) flush privileges;//刷新MySQL的系統權限相關表
d) 說明:爲從服務器創建一個用戶repl,有連接主服務器並複製數據的權限.
e) 如果從ip寫%,表示允許所有的IP訪問.可以自己設置只允許哪些IP訪問.(例如192.168.%.%)
f) 生產環境中不建議使用root用戶,必須重新創建新用戶進行登陸
g) 賬號驗證(查看賬號是否添加到數據庫中):
i) show databases;
ii) use mysql;
iii) show tables like ‘%user%’;
iv) select User,Password,Host from user;
6. 重啓主服務器
a) systemctl restart mariadb.service #重啓mariadb
7. 關閉CentOS7主/從防火牆:
a) 如果不關閉會導致主從複製失敗
b) systemctl stop firewalld
8.修改從服務器:
a) server-id=130
b) log-bin=relay-bin
c) log-bin-index=relay-bin.index
d) relay-log=slave-relay
9.在從服務器界面輸入代碼切換至主服務器:
a) mysql>change master to master_host='主ip',
b) master_port=3306,
c) master_user='repl',
d) master_password=' repl的用戶密碼',
e) master_log_file='master-bin.000003',
f) master_log_pos=715;
上圖中的master_log_file和master_log_pos的值不能隨便寫.在主服務器中查看相關信息:
10.開啓從服務器:
a) mysql>start slave;
11.常見錯誤1:
解決方案:
mysql>stop slave;
mysql>reset slave;
重新執行 change master ****代碼
12. 測試是否成功
①打開主服務器的mysql和從服務器的mysql,默認有三個數據庫
②創建一個數據庫,現在有四個數據庫
③打開從服務器的數據庫,變成四個數據庫說明主從複製成功
④在從服務器的mysql中執行 show slave status \G;命令查看從數據庫的複製功能狀態.
Master_Host | 表示主數據庫地址 |
Master_User | 使用哪個用戶登錄 |
Master_Port | 連接端口 |
Read_Master_Log_Pos: 245 | 同步讀取二進制日誌的位置,必須大於或等於下面的Exec_Master_Log_Pos數據 |
Slave_IO_Running: Yes | 必須爲Yes,否則需要查找原因 |
Slave_SQL_Running: Yes | 必須爲Yes,否則需要查找原因 |
Exec_Master_Log_Pos: 245 |
⑤e)你也可以在主服務器的數據庫中插入幾條數據,在從服務器的數據庫中查詢,看看有沒有數據.
13.附件
今天是520,祝大家節日快樂♥