在安裝配置MySQL主從複制前,主從伺服器的安裝請檢視《MySQL5.5源碼包安裝 for Red Hat Enterprise Linux 6》這篇文章。
1、主從伺服器的資訊如下
主從 | IP位址 | 主機名稱 |
master | 192.168.0.10 | leon |
slave | 192.168.0.11 | leonslave |
2、master伺服器建立[email protected]賬号用于slave伺服器連接配接
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.11' IDENTIFIED BY 'abc123';
3、在master伺服器的/etc/my.cnf的[mysqld]部分添加如下參數
log_bin=mysql-bin
server_id=10
重新開機mysql服務,使配置生效
[[email protected] /]# service mysql restart
4、在slave伺服器的/etc/my.cnf的[mysqld]部分添加如下參數
log_bin = mysql-bin
server_id = 11
重新開機mysql服務,使配置生效
[[email protected] /]# service mysql restart
5、生成master伺服器的資料檔案快照
會話一:確定資料庫沒有操作,以便獲得一緻性的快照
mysql> flush tables with read lock;
會話二:記下顯示結果中的日志檔案及偏移位置。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000009 | 107 | | |
+------------------+----------+--------------+------------------+
會話三:打包data目錄的檔案
[[email protected] mysql5548]# tar -cvf data.tar data
會話一:結束鎖表操作
mysql> unlock tables;
6、将master伺服器的一緻性備份恢複到slave伺服器
停止mysql服務,删除data目錄,并将master的data.tar解壓在這個位置
[[email protected] mysql5548]# service mysql stop
[[email protected] mysql5548]# rm -rf data
[[email protected] mysql5548]# tar -xvf data.tar
7、在slave伺服器使用--skip-slave-start 選項啟動slave資料庫,這樣不會立即啟動slave數
據庫服務上的複制程序,友善我們對從資料庫的服務進行進一步的配置
[[email protected] mysql5548]$ ./bin/mysqld_safe --skip-slave-start &
對slave資料庫伺服器做相應設定,指定複制使用的使用者,主資料庫伺服器的IP、端
口以及開始執行複制的日志檔案和位置等
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.10',MASTER_USER='repl',MASTER_PASSWORD='leonliao',
MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=107;
啟動slave線程
mysql> start slave;
檢視slave線程的狀态,若Slave_IO_Running和Slave_SQL_Running參數都為YES,表示複制已經運作
mysql> show slave status\G;
8、常見的問題
Slave_IO_Running參數如果是connecting,表示還未連接配接到master資料庫,産生的原因有如下幾種:
a、防火牆問題
b、使用者的權限問題
c、在slave資料庫連接配接master資料庫的IP、使用者名、密碼、日志、pos等配置不正确