本文記錄如何給一臺應用中的MySQL服務器部署Replication。
安裝環境
現有MySQL
現有MySQL服務器的特點:
- 沒有專門為Replication環境配置
- MySQL為編譯安裝
- MySQL處于運行狀態,不可長時間停機
目的
將現有服務器作為Master服務器,配置并運行一臺新的MySQL服務器作為Slave服務器
準備
- 服務器硬件
- 現有主服務器的安裝代碼包(mysql-5.x.xxx.tar.gz)
主服務器的配置和數據準備
Master服務器的必須配置
要使用Replication必須將Master的binlog打開,并設置服務器ID。最簡單的配置如下:
log-bin = mysql-bin
server-id = 1
當然關于MySQL Bin Log的配置還有很多設置,可以參考相關手冊
數據備份
現在需要將Master的數據備份出來要注意的是要記住
備份點的binlog日志和postion 。Master數據備份的方式可以是停機冷備份,如果安裝了LVM可以使用LVM的Snapshot。下面使用mysqldump 導出數據。在導出數據之前我們應該Flush表,并鎖住表,比允許數據寫入。
mysql> FLUASH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000157 | 18757860 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
使用mysqldump導出數據
mysql:~# mysqldump -uroot -p --all-databases > dump.sql
解鎖
mysql> UNLOCK TABLES;
安裝參數的提取
需要在Slave主機編譯安裝MySQL要了解Master安裝時的編譯參數,可以通過如下方式獲得:
mysql:~# cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE
repl用戶創建
在Master服務器中創建repl用戶,用于在Slave 數據庫中訪問Master數據
mysql> GREANT REPLICATION SLAVE ON *.* to 'repl'@'IP.SLAVE.SERVER' identified by 'repl_passwd';
Slave服務器的安裝
MySQL的安裝
- 按前面提取的configure參數對源代碼進行編譯(
./configure; make; make install;
)
- 安裝初始化數據庫:
#mysql_install_db --datadir=/data --user=mysql
- 參照@{mysql-src}/support-files/
目錄中my.cnf文件在
/etc/下創建@my.cnf
- 參照@{mysql-src}/support-files/mysql.server@文件在@/etc/init.d/
下配置@mysqldb
- 可嘗試啟動mysql。
/etc/init.d/mysqldb start
數據的導入
mysql# mysql -uroot -p < dump.sql
如果導入出現超出最大數據包錯誤可以嘗試修改my.cnf中的max_allow_packet
在my.cnf中配置slave
在my.cnf中配置:
server-id = 2
master-host = master_ip
master-user = repl
master-password = repl_passwd
在Slave服務器上啟動Slave
mysql> STOP SLAVE;
mysql> CHANGE MASTER TO
MASTER_HOST='masterip',
MASTER_USER='repl',
MASTER_PASSWORD='repl_passwd',
MASTER_LOG_FILE='mysql-bin.000157',
MASTER_LOG_POS=18757860 ;
mysql> START SLAVE;