mysql主從備份配置

前提條件 準備兩臺均已安裝好mysql的主機   例如主服務器:192.168.199.128和從服務器:192.168.199.129

配置步驟 1、編輯主服務器   vim /etc/my.cnf   在文件下編寫 log-bin=mysql-bin server-id=128 從服務器的server-id=129(兩個不能一致,儘量和ip後綴一樣) 2、設置兩臺服務器 mysql開機啓動和啓動mysqld chkconfig mysqld on service mysqld start 3、在主服務器上登陸mysql   輸入指令,賦予從服務器權限讓從服務器連接主服務器,主機給從機授備份權限slave(登陸到MySQL) GRANT REPLICATION SLAVE ON . TO '從機MySQL用戶名'@'從機ip' identified by '從機MySQL密碼'; 說明:一般不用root賬戶,'%'表示所有客戶端都能連,只要賬戶,密碼都正確,此處可以用具體客戶端IP代替,加強安全 4、執行刷新權限語句# FLUSH PRIVILEGES; 5、查詢master狀態# show master status;

記錄下File字段以及Posttion字段信息; 6、在從服務器上登錄MySQL並進行配置 change master to master_host='192.168.199.128,master_user='root',master_password='Root!!2018',master_log_file='mysql-bin.000002',master_log_pos=359; 注意:語句中間不要斷開,master_port爲mysql服務器端口號(無單引號),master_user爲執行同步操作的數據庫賬戶,此處的359就是:show master status中看到的position的值,mysql-bin.000002就是file的值 7、重啓從服務器複製功能# start slave; 8、檢查從服務器賦值功能狀態 # show slave status \G

  注意:Slave_IO_Running: Yes、Slave_SQL_Running: Yes必須都爲yes才代表成功!! 9、可在主服務器對數據庫進行操作,在從服務器數據庫驗證結果 10、注意事項#   如果linux中一臺配置好mysql的話,克隆出第二臺的話,要將auto.cnf刪除,二臺mysql的uuid不能相同!!!,要不然主從複製出問題 問題解決 停止從庫的mysqld服務,刪除他的auto.cnf文件,再啓動數據庫服務即可: [root@localhost mysql]# systemctl stop mysqld.service [root@localhost mysql]# mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak [root@localhost mysql]# systemctl start mysqld.service 此時再去查看從庫auto.cnf,已自動生成新的server-uuid: [root@localhost mysql]# vim /var/lib/mysql/auto.cnf [auto] server-uuid=2682888d-994a-11e8-aaf0-000c298cdafc

11、讀寫分離設置 在從庫執行以下語句 set global read_only=1;--針對普通MySQL數據庫用戶設置爲只讀 set global super_read_only=1;--針對super類MySQL數據庫用戶設置爲只讀,比如root用戶

12、MYSQL同步故障問題解決方法" SLAVE_SQL_RUNNING:NO" 兩種解決辦法 進入slave服務器,運行: mysql> show slave status\G Relay_Log_File: localhost-relay-bin.000535 Relay_Log_Pos: 21795072 Relay_Master_Log_File: localhost-bin.000094 Slave_IO_Running: Yes Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB:  解決辦法一、 Slave_SQL_Running: No 1.程序可能在slave上進行了寫操作 2.也可能是slave機器重起後,事務回滾造成的. 一般是事務回滾造成的: 解決辦法: mysql> stop slave ; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> start slave ; 解決辦法二、 首先停掉Slave服務:slave stop 到主服務器上查看主機狀態: 記錄File和Position對應的值 進入master mysql> show master status; ±---------------------±---------±-------------±-----------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | ±---------------------±---------±-------------±-----------------+ | localhost-bin.000094 | 33622483 | | | ±---------------------±---------±-------------±-----------------+ 1 row in set (0.00 sec)  然後到slave服務器上執行手動同步: mysql> change master to master_host=‘master_ip’, master_user=‘user’, master_password=‘pwd’, master_port=3306, master_log_file=localhost-bin.000094’, master_log_pos=33622483 ; 1 row in set (0.00 sec) mysql> start slave ; 1 row in set (0.00 sec) mysql> show slave status\G *************************** 1. row *************************** … Master_Log_File: localhost-bin.000094 Read_Master_Log_Pos: 33768775 Relay_Log_File: localhost-relay-bin.000537 Relay_Log_Pos: 1094034 Relay_Master_Log_File: localhost-bin.000094 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB:  手動同步需要停止master的寫操作!

參考網址:https://www.cnblogs.com/zhaoying/p/11737464.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章