1. 程式人生 > 實用技巧 >MySQL主從庫快速搭建

MySQL主從庫快速搭建

MySQL主從資料庫配置

今天給我FastAPI的新專案做讀寫分離,記錄一下mysql的配置過程

具體原理請參考https://blog.csdn.net/qq_40378034/article/details/91125768

我這個專案邏輯是,優先順序高的寫和讀操作使用主庫,後臺管理和優先順序沒那麼高的操作用從庫讀。

首先你需要準備兩個相同配置的mysql伺服器,在主資料庫下選定你想要做主從複製的庫,自己用伺服器搭或者用阿里雲和騰訊雲的第三方好像都可以

下面開始配置

master

  1. 建立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你的密碼
    

    連線上了表示成功了

  2. 修改配置檔案,Linux一般在 /etc/my.cnf

    [mysqld]
    server-id = 1        #唯一id
    log-bin=mysql-bin          #其中這兩行是本來就有的,可以不用動,新增下面兩行即可.指定日誌檔案
    binlog-do-db = test     #記錄日誌的資料庫
    binlog-ignore-db = mysql   #不記錄日誌的資料庫
    

    儲存並退出

  3. 重啟mysql,再進mysql看看

    [root@主資料庫 ~]# service mysqld restart
    ..
    mysql> show master status; 
    

    這裡可以看到剛剛設定要做主從複製的資料庫,生成的日誌檔案,頭兩個引數一會要在從資料庫上用到

    到這裡,如果有表,可以先鎖表防止資料不同步,完事再解開

slave

  1. 修改my.cnf配置

    [mysqld]
    server-id = 2 # 與主資料庫不一樣的整數即可
    log-bin=mysql-bin
    replicate-do-db = test
    replicate-ignore-db = mysql,information_schema,performance_schema
    
  2. 重啟mysql服務

  3. 用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;
    # 後面兩個是主資料庫的兩個引數
    
  4. 重啟slave

    mysql>stop slave;
    mysql>reset slave;
    mysql>start slave;
    
  5. 檢視從庫狀態

    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