mysql數據庫主從搭建

有不少公司的網站存在大量的併發訪問,通常的解決方式就是利用MySQL主從配置,實現讀寫分離,減輕數據庫壓力,今天就記錄一下,這幾回搭建主從的一些心得mysql

什麼是MySQL主從複製

簡單來講就是保證主SQL(Master)和從SQL(Slave)的數據是一致性的,向Master插入數據後,Slave會自動從Master把修改的數據同步過來(有必定的延遲),經過這種方式來保證數據的一致性,就是主從複製sql

  1. 第一步固然是安裝MySQL,數據庫版本要一致,減小出現不可預支的問題
  2. 配置Master主服務器

      在Master MySQL上建立一個用戶「slave」,並容許其餘Slave服務器能夠經過遠程訪問Master,經過該用戶讀取二進制日誌,實現數據同步。數據庫

mysql>create user slave; //建立新用戶vim

//repl用戶必須具備REPLICATION SLAVE權限,除此以外沒有必要添加沒必要要的權限,密碼爲mysql。說明一下192.168.0.%,這個配置是指明repl用戶所在服務器,這裏%是通配符,表示192.168.0.0-192.168.0.255的Server均可以以repl用戶登錄主服務器。固然你也能夠指定固定Ip。centos

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.0.%' IDENTIFIED BY 'mysql';服務器

刷新一下權限   flush privileges;併發

     找到MySQL安裝文件夾修改my.ini文件。mysql中有好幾種日誌方式,這不是今天的重點。咱們只要啓動二進制日誌log-bin就ok。網站

 在[mysqld]下面增長下面幾行代碼spa

server-id=1   #給數據庫服務的惟一標識,通常爲你們設置服務器Ip的末尾號,若是從數據庫也設置這個參數的話,必定不能相同,隨便給個數字就能夠了rest

log-bin=master-bin

log-bin-index=master-bin.index   #開啓二進制日誌功能,能夠隨便取,最好有含義(關鍵就是這裏了)

## 複製過濾:須要備份的數據庫,輸出binlog

#binlog-do-db=roncoo

## 複製過濾:不須要備份的數據庫,不輸出(mysql庫通常不一樣步)

binlog-ignore-db=mysql

     查看日誌

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

 

 重啓MySQL服務

   4. Slave從服務器(centos)

(1)找到MySQL安裝文件夾修改my.cnf文件,vim my.cnf

server-id= 101  #不可跟其餘主從數據庫相同

log-bin=edu-mysql-slave1-bin  # 開啓二進制日誌功能,以備Slave做爲其它Slave的Master時使用

relay-log=mysql-relay-bin   #relay_log配置中繼日誌

log-slave-updates=1

read-only=1   #設定以後就是隻讀數據庫了,只有super權限的用戶能夠讀寫

replicate-wild-do-table=db.%  #過濾掉不須要同步的數據庫,只同步db數據庫,這個最好在從庫過濾

slave-skip-errors = 1133     #同步過程當中忽略的錯誤碼

(2) 重啓數據庫  service mysql restart;

(3)鏈接Master

change master to master_host='192.168.0.?',   //指定主服務器IP地址
master_port=3306,   
master_user='slave',   //指定在主服務器上能夠進行同步的用戶名
master_password='mysql',    //指定在主服務器上能夠進行同步的用戶名的密碼
master_log_file='master-bin.000001',   //Master服務器產生的日誌,必須跟主數據庫的file字段一致
master_log_pos=0   //必須跟主數據庫的Position一致

(4)啓動Slave

  start slave;

 查看狀態   show slave status; 

 

 

mysql 1236錯誤

相關文章
相關標籤/搜索