mysql的主從複製,從庫設為只讀,不能寫。
mysql的主從複製,主要通過binlog日誌來實現
主要步驟:
1 master授權從庫連線(master上操作)
grant replication slave on *.* to 'backup'(使用者名稱)@'192.168.218.131(從庫ip)' identified by 'backup'(密碼);
2 master上操作:show master status;記錄master上的日誌檔名、position兩個值需要記住後面要用
3 slave上操作:讓slave連線master,並開始重做master二進位制日誌中的事件。master_log_file的值為上面的日誌檔名;master_log_pos為position的值
change master to master_host='192.168.218.131(主庫ip)',master_user='backup',master_password='backup',master_log_file='ZHAOPAN-PC-bin.000004(日誌檔名)',master_log_pos=764(position的值);
4 slave上操作檢視從庫:show slave status\G;檢視第三步的配置資訊,並且要檢視io程序是否啟動,如果沒有啟動,就執行
start slave;
5 slave上配置只讀,在配置檔案/etc/my.cnf中的mysqld中配置read_only=1
注意:read_only=1只讀模式,可以限定普通使用者進行資料修改的操作,但不會限定具有super許可權的使用者(如超級管理員root使用者)的資料修改操作。
如果想保證super使用者也不能寫操作,就可以就需要執行給所有的表加讀鎖的命令 “flush tables with read lock;”。
這樣使用具有super許可權的使用者登入資料庫,想要發生資料變化的操作時,也會提示表被鎖定不能修改的報錯。
我們的一般做法是,給從庫分配一個普通使用者。
將slave資料庫read-only=1設定只讀後,在master執行GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY'123456'WITH GRANT OPTION;(這裡要區別上面給從庫分配複製許可權的寫法,這裡分配的是usage許可權, 後面多了with grant option)
建立一個普通使用者,
然後用普通使用者登入從庫,執行操作會報錯。切換到root使用者後還是可以進行增刪改查的。