1. 程式人生 > >mysql的主從複製,從庫設為只讀不能寫

mysql的主從複製,從庫設為只讀不能寫

mysql的主從複製,主要通過binlog日誌來實現

主要步驟:

1、master授權從庫連線(master上操作)

grant replication slave on . to 'backup'(使用者名稱)@'192.168.1.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.1.131(主庫ip)',master_user='backup',master_password='backup',master_log_file='ZHAOPAN-PC-bin.000004(日誌檔名)',master_log_pos=120(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使用者後還是可以進行增刪改查的。