MySQL 5.5.x 配置Master-Slave主從複製
我的環境:
OS:CentOS-6.5-64bit
DBMS:MySQL 5.5.28
my.cnf位置是 /home/USERNAME/.my.cnf
(我的mysql安裝方法是http://blog.itpub.net/29773961/viewspace-1364808/
其中有一個步驟為cp support-files/my-medium.cnf ~/.my.cnf
故配置檔案在此,為避免使用root使用者,故不放置在/etc/my.cnf)
用的是兩個伺服器(建立在ESXi上的邏輯主機)
master ip:192.168.1.214
slave ip:192.168.1.215
步驟很簡單,過程也很簡單,所以搭建這個環境也是很簡單的。
步驟可以分解為:
1.配置一個伺服器作為master
2.配置一個伺服器作為slave
3.將slave連線到master
首先為了避免防火牆和SELinux可能造成的不便,首先我將其關閉或置為不可用狀態。
【1.配置一個伺服器作為master】
在我的第一個master伺服器上作出如下配置。
修改~/.my.cnf
在[mysqld]下新增
# master
log-bin = master-bin
log-bin-index = master-bin.index
server-id = 1
其中log-bin選項給出了binlog產生的所有檔案的基本名,如果你建立了一個以log-bin為副檔名的檔案,該副檔名將被忽略,而只使用檔案的基本名。
log-bin-index選項給出了二進位制索引檔案的檔名,這個索引檔案儲存了所有binlog檔案的列表。
實際上,不需要為log-bin選項提供值,其預設值為hostname-bin,hostname的值來自於pid-file,預設值是主機名。
如果管理員後來修改了主機名,binlog檔名也會隨之改變,但是索引檔案仍可以獲取正確的值,最好為伺服器建立一個與機器無關且唯一的伺服器名,因為一系列的binlog檔案中途改名可能會很混亂。
如果沒有為log-bin-index賦予任何值,其預設值與binlog檔案的基本名相同(如果沒有為log-bin提供值,則預設為hostname-bin)。
同樣,如果你不給log-bin-index賦值,索引檔名會隨主機名的改變而改變,所以如果你改變主機名然後重啟伺服器,將找不到索引檔案,從而認為索引檔案不存在,導致二進位制日誌為空。
每一個伺服器都有唯一的伺服器ID,所以如果一個slave連線了master,而且其server-id的引數值與master相同,則會產生master和slave伺服器id相同的錯誤。
將log-bin和server-id選項新增到配置檔案後重啟伺服器,然後新增一個複製使用者,這樣便完成了配置。
將my.cnf修改之後,重新啟動mysql服務,讓其載入新的my.cnf檔案。
進入root使用者:
REPLICATION SLAVE許可權並沒有其他特殊的地方,這個許可權可以使使用者能夠從master上取得二進位制日誌的轉儲資料。
雖然完全可以給一個常規使用者賦予REPLICATION SLAVE的許可權,但是最好還是將複製slave使用者與其他使用者區別開來,這樣的話,如果想禁止某些slave連線,只要刪除該使用者即可。
【2.配置一個伺服器作為slave】
在我的第二個slave伺服器上作出如下配置。
修改~/.my.cnf
在[mysqld]下新增
# slave
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
server-id = 2
與master配置檔案中的log-bin和log-bin-index一樣,relay-log和relay-log-index選項預設取值決定於hostname。
relay-log預設取值為hostname-relay-bin。
relay-log-index預設取值為hostname-relay-bin.index。
修改my.cnf檔案之後,重啟mysql服務,讓配置生效即可。
【3.將slave連線到master】
做連線,你只需要知道以下幾個部分即可:
主機名
埠號
master上擁有REPLICATION SLAVE許可權的使用者賬號
該使用者的密碼
在slave機上進行如下操作
首先將slave指向master,當然master_host需要填你目標master機的ip地址。
然後再開啟slave
至此,master和slave之間的第一個複製已經完成。
你可以在master機上開啟一個terminal,然後對其進行一些資料操作,比如建立表,插入資料,再到對應的slave機上檢視這些變化。
【一些問題】:
如果出現一些warning,可以透過show warnings這個指令來檢查警告或者錯誤。
當然也可以使用show slave status\G來檢視一些關於slave的資訊。
我在配置中出現的問題:
檢視status發現:
Slave_IO_Running: Yes
Slave_SQL_Running: No
解決辦法:
再
可能出現的另外一個問題:
slave的server-id與master衝突。
可以透過
來解決此問題。
OS:CentOS-6.5-64bit
DBMS:MySQL 5.5.28
my.cnf位置是 /home/USERNAME/.my.cnf
(我的mysql安裝方法是http://blog.itpub.net/29773961/viewspace-1364808/
其中有一個步驟為cp support-files/my-medium.cnf ~/.my.cnf
故配置檔案在此,為避免使用root使用者,故不放置在/etc/my.cnf)
用的是兩個伺服器(建立在ESXi上的邏輯主機)
master ip:192.168.1.214
slave ip:192.168.1.215
步驟很簡單,過程也很簡單,所以搭建這個環境也是很簡單的。
步驟可以分解為:
1.配置一個伺服器作為master
2.配置一個伺服器作為slave
3.將slave連線到master
首先為了避免防火牆和SELinux可能造成的不便,首先我將其關閉或置為不可用狀態。
【1.配置一個伺服器作為master】
在我的第一個master伺服器上作出如下配置。
修改~/.my.cnf
在[mysqld]下新增
# master
log-bin = master-bin
log-bin-index = master-bin.index
server-id = 1
其中log-bin選項給出了binlog產生的所有檔案的基本名,如果你建立了一個以log-bin為副檔名的檔案,該副檔名將被忽略,而只使用檔案的基本名。
log-bin-index選項給出了二進位制索引檔案的檔名,這個索引檔案儲存了所有binlog檔案的列表。
實際上,不需要為log-bin選項提供值,其預設值為hostname-bin,hostname的值來自於pid-file,預設值是主機名。
如果管理員後來修改了主機名,binlog檔名也會隨之改變,但是索引檔案仍可以獲取正確的值,最好為伺服器建立一個與機器無關且唯一的伺服器名,因為一系列的binlog檔案中途改名可能會很混亂。
如果沒有為log-bin-index賦予任何值,其預設值與binlog檔案的基本名相同(如果沒有為log-bin提供值,則預設為hostname-bin)。
同樣,如果你不給log-bin-index賦值,索引檔名會隨主機名的改變而改變,所以如果你改變主機名然後重啟伺服器,將找不到索引檔案,從而認為索引檔案不存在,導致二進位制日誌為空。
每一個伺服器都有唯一的伺服器ID,所以如果一個slave連線了master,而且其server-id的引數值與master相同,則會產生master和slave伺服器id相同的錯誤。
將log-bin和server-id選項新增到配置檔案後重啟伺服器,然後新增一個複製使用者,這樣便完成了配置。
將my.cnf修改之後,重新啟動mysql服務,讓其載入新的my.cnf檔案。
進入root使用者:
- CREATE USER repl_user;
- GRANT REPLICATION SLAVE ON *.* TO repl_user IDENTIFIED BY 'YOURPASSWORD';
REPLICATION SLAVE許可權並沒有其他特殊的地方,這個許可權可以使使用者能夠從master上取得二進位制日誌的轉儲資料。
雖然完全可以給一個常規使用者賦予REPLICATION SLAVE的許可權,但是最好還是將複製slave使用者與其他使用者區別開來,這樣的話,如果想禁止某些slave連線,只要刪除該使用者即可。
【2.配置一個伺服器作為slave】
在我的第二個slave伺服器上作出如下配置。
修改~/.my.cnf
在[mysqld]下新增
# slave
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
server-id = 2
與master配置檔案中的log-bin和log-bin-index一樣,relay-log和relay-log-index選項預設取值決定於hostname。
relay-log預設取值為hostname-relay-bin。
relay-log-index預設取值為hostname-relay-bin.index。
修改my.cnf檔案之後,重啟mysql服務,讓配置生效即可。
【3.將slave連線到master】
做連線,你只需要知道以下幾個部分即可:
主機名
埠號
master上擁有REPLICATION SLAVE許可權的使用者賬號
該使用者的密碼
在slave機上進行如下操作
首先將slave指向master,當然master_host需要填你目標master機的ip地址。
-
CHANGE MASTER TO
-
MASTER_HOST = '192.168.1.214',
-
MASTER_PORT = 3306,
-
MASTER_USER = 'repl_user',
- MASTER_PASSWORD = 'YOURPASSWORD';
然後再開啟slave
- START SLAVE;
至此,master和slave之間的第一個複製已經完成。
你可以在master機上開啟一個terminal,然後對其進行一些資料操作,比如建立表,插入資料,再到對應的slave機上檢視這些變化。
【一些問題】:
如果出現一些warning,可以透過show warnings這個指令來檢查警告或者錯誤。
當然也可以使用show slave status\G來檢視一些關於slave的資訊。
我在配置中出現的問題:
檢視status發現:
Slave_IO_Running: Yes
Slave_SQL_Running: No
解決辦法:
- STOP SLAVE;
- SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
可能出現的另外一個問題:
slave的server-id與master衝突。
可以透過
- SET GLOBAL SERVER_ID = 2;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-1384091/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql複製--主從複製配置MySql
- Mysqldump實現mysql的master-slave主從複製MySqlAST
- MYSQL主從複製配置(整理)MySql
- Innobackupex實現mysql線上搭建master-slave主從複製MySqlAST
- MYSQL主從複製製作配置方案MySql
- Mysql Master-slave複製簡單配置記錄MySqlAST
- MySQL 主從複製安裝部署配置MySql
- Docker 教程十五配置MySQL 主從複製DockerMySql
- mysql5.7主從複製,主主複製MySql
- MySQL主從複製MySql
- MySQL主從複製配置心跳功能介紹MySql
- MySQL主從複製之GTID複製MySql
- MySQL主從複製原理MySql
- MySQL的主從複製MySql
- mysql--主從複製MySql
- mysql 8.4 主從複製MySql
- mysql主從複製搭建MySql
- mysql主從複製配置與問題解決MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL++:Liunx - MySQL 主從複製MySql
- MySQL(13)---MYSQL主從複製原理MySql
- mysql主從複製(一):一主多從MySql
- MySQL 5.7 多主一從(多源複製)同步配置MySql
- MySQL主從複製配置引數 -- logs-slave-updatesMySql
- windows 下mysql主從複製WindowsMySql
- mysql實現主從複製MySql
- mysql主從延遲複製MySql
- MySQL 主從複製實操MySql
- MySQL主從複製歷程MySql
- MySQL-18.主從複製MySql
- Windows Mysql主從複製部署WindowsMySql
- Mysql 傳統主從複製MySql
- MySQL8.0主從複製MySql
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- MySQL 主從複製之多執行緒複製MySql執行緒
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- Mysql實現主從複製(一主雙從)MySql