MySQL主從庫快速搭建
阿新 • • 發佈:2020-08-20
MySQL主從資料庫配置
今天給我FastAPI的新專案做讀寫分離,記錄一下mysql的配置過程
具體原理請參考https://blog.csdn.net/qq_40378034/article/details/91125768
我這個專案邏輯是,優先順序高的寫和讀操作使用主庫,後臺管理和優先順序沒那麼高的操作用從庫讀。
首先你需要準備兩個相同配置的mysql伺服器,在主資料庫下選定你想要做主從複製的庫,自己用伺服器搭或者用阿里雲和騰訊雲的第三方好像都可以
下面開始配置
master
-
建立salve使用者
mysql> grant replication slave on *.* to 'slave賬戶名'@'xx.xx.xx.xxx' identified by 'slave賬戶密碼'; mysql> flush privileges;
建立好後,可以在從資料庫訪問,看設定是否成功
[root@從資料庫 ~]# mysql -hxx.xx.xx.xxx -uslave -p你的密碼
連線上了表示成功了
-
修改配置檔案,Linux一般在 /etc/my.cnf
[mysqld] server-id = 1 #唯一id log-bin=mysql-bin #其中這兩行是本來就有的,可以不用動,新增下面兩行即可.指定日誌檔案 binlog-do-db = test #記錄日誌的資料庫 binlog-ignore-db = mysql #不記錄日誌的資料庫
儲存並退出
-
重啟mysql,再進mysql看看
[root@主資料庫 ~]# service mysqld restart .. mysql> show master status;
這裡可以看到剛剛設定要做主從複製的資料庫,生成的日誌檔案,頭兩個引數一會要在從資料庫上用到
到這裡,如果有表,可以先鎖表防止資料不同步,完事再解開
slave
-
修改my.cnf配置
[mysqld] server-id = 2 # 與主資料庫不一樣的整數即可 log-bin=mysql-bin replicate-do-db = test replicate-ignore-db = mysql,information_schema,performance_schema
-
重啟mysql服務
-
用change mster 語句指定同步位置
mysql>stop slave; # 必須先停止slave執行緒,否則會設定不成功 mysql>change master to >master_host='主資料庫地址',master_user='slave賬號',master_password='密碼', > master_log_file=' mysql-bin.000001 ',master_log_pos=2562; # 後面兩個是主資料庫的兩個引數
-
重啟slave
mysql>stop slave; mysql>reset slave; mysql>start slave;
-
檢視從庫狀態
show slave status\G
引數很多,只要框起來這兩行是Yes就表示成功了
現在嘗試在主庫中新建表或插入資料,測試是否正常
問題解決
如果玩著玩著發現Slave_SQL_Running變成No了,可以這樣解決
stop slave;
set global sql_slave_skip_counter =1;
start slave;
# 之後再用mysql> show slave status\G