mysql主從庫配置

1.場景描述

廢話不多說了,簡單記錄下mysql主從庫配置,實現讀寫分離,還可以設置延遲同步,防止誤操作,起到備庫作用。。

2.解決方案

簡單記錄下如何快速對現有mysql庫實現讀寫分離,至於可能遇到的數據不一致等問題,後續再解釋,本次只介紹如何快速對現有mysql做主從庫配置/讀寫分離。

2.1 原理

MySQL主從庫或者讀寫分離配置,其實依靠的mysql自帶二進制日誌。

簡單說就是在主庫上做的動作(增刪改)會全部記錄在主庫中的日誌中,從庫通過查詢主庫(主庫要給權限)日誌,然後照着主庫日誌再從庫上操作一遍,這樣就實現了主從複製。

說明:

兩臺服務器,每個上面一個數據庫,主庫ip:192.168.10.14,從庫ip:192.168.10.16

2.2 主庫設置(192.168.10.14):

(1)root下進入mysql用戶

su - mysql

(2) 修改配置文件my.cnf ,並給從庫設置日誌查詢權限。

vi /etc/my.cnf  

server_id =14
log-bin=mysql-bin
binlog_do_db=test 
:wq

#軟件老王,重啓mysql
service mysqld restart

創建用戶並賦權:
GRANT replication slave ON *.* TO 'slave'@'%' identified by 'laowang';

(3)查看主庫信息,後續從庫中要配置

通過navicat或者直接連接myql查看下信息(/usr/local/mysql/bin/mysql -uroot -p mysql),後續從庫中要用這個信息

show master status;

在這裏插入圖片描述

2.3 從庫設置(192.168.10.16):

(1)修改/etc/my.cnf

vi /etc/my.cnf  

server_id =16
log-bin=mysql-bin
binlog_do_db=test 
:wq
#軟件老王,重啓mysql
service mysqld restart

(2)在secureCRT下操作,設置從庫配置。

mysql>stop slave;

mysql>change master to 
master_host='192.168.10.14',
master_user='slave',
master_password='laowang',
master_log_file='mysql-bin.000002',
master_log_pos=1236;

mysql>start slave;
mysql> show slave status;    

(3)還可以設置延遲同步,以免誤操作主從庫數據都沒有了,如下:延遲3分鐘30分鐘同步。

CHANGE MASTER TO MASTER_DELAY = 1800;單位爲秒

2.4 驗證

(1)分別在主庫(14)和從庫(16)的test數據庫下創建測試表

CREATE TABLE `dfdaf` (
  `dfafd` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2)對主庫14進行操作,然後查詢從庫16,看是否同步過來了。

在這裏插入圖片描述


I’m 「軟件老王」,如果覺得還可以的話,關注下唄,後續更新秒知!歡迎討論區、同名公衆號留言交流!

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