首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.5 主從複寫部署完整步驟詳解(CentOS 環境)

     編輯:MySQL 綜合教學

MySQL 5.5 主從複寫架構部署指南

MySQL 主從複寫是實現資料庫高可用、讀寫分離與災備的核心技術。本文以 CentOS 5.x、MySQL 5.5.33 為例,詳細記錄從原始碼編譯安裝到主從同步驗證的完整流程。

1. 環境規劃與前置準備

角色IP 位址說明
Master (主庫)192.168.10.151提供寫入服務,啟用 Binlog
Slave (從庫)192.168.10.152同步主庫資料,提供讀取服務

安裝依賴套件:

yum -y install gcc gcc-c++ libtool-libs autoconf freetype-devel gd libjpeg-devel \
libpng-devel libxml2-devel ncurses-devel zlib-devel zip unzip curl-devel wget crontabs \
file bison cmake patch mlocate flex diffutils automake make kernel-devel cpp \
readline-devel openssl-devel vim-minimal glibc-devel glib2-devel \
bzip2-devel e2fsprogs-devel libidn-devel gettext-devel expat-devel \
libcap-devel libtool-ltdl-devel pam-devel pcre-devel libmcrypt-devel

2. Master/Slave 同步安裝 MySQL 5.5.33

# 建立用戶與群組
groupadd mysql
useradd -g mysql mysql

# 解壓與編譯安裝
tar zxf mysql-5.5.33.tar.gz && cd mysql-5.5.33
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
      -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
      -DDEFAULT_CHARSET=utf8 \
      -DDEFAULT_COLLATION=utf8_general_ci \
      -DWITH_EXTRA_CHARSETS=complex \
      -DWITH_READLINE=1 \
      -DENABLED_LOCAL_INFILE=1
make && make install

# 權限與初始化
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
cd support-files
cp my-medium.cnf /etc/my.cnf
cp -f mysql.server /etc/rc.d/init.d/mysqld
mkdir /var/lib/mysql
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf \
    --basedir=/usr/local/mysql --datadir=/var/lib/mysql --user=mysql

# 設定開機自啟與庫路徑
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
cat > /etc/ld.so.conf.d/mysql.conf <

Slave 端安裝步驟完全相同,此處略過。

3. 主從複寫配置

Master 端配置 (/etc/my.cnf)

[mysqld]
log-bin=master-bin
log-bin-index=master-bin.index
server-id = 1
innodb_file_per_table = 1
binlog_format=mixed

建立複寫專用帳號:

mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'dbmysql'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

重啟 MySQL:service mysqld restart

Slave 端配置 (/etc/my.cnf)

[mysqld]
relay-log = relay-log
relay-log-index = relay-log.index
server-id = 2
innodb_file_per_table = 1
binlog_format=mixed

重啟 MySQL:service mysqld restart

4. 建立同步連線與驗證

在 Master 查看 Binlog 狀態:

mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 107      |              |                  |
+-------------------+----------+--------------+------------------+

在 Slave 設定同步參數並啟動:

mysql> CHANGE MASTER TO 
    MASTER_HOST='192.168.10.151',
    MASTER_USER='dbmysql',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='master-bin.000001',
    MASTER_LOG_POS=107;

mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G

關鍵指標均為 Yes 即同步成功:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes
  • Seconds_Behind_Master: 0

5. 常見問題排查

  • 連線失敗 (Last_IO_Errno: 2003):檢查雙向防火牆是否開放 3306 埠,iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
  • 同步延遲:調整 binlog_format=ROW、優化 Slave SQL 執行緒、確保網路延遲低。
  • 資料不一致:使用 pt-table-checksum 定期校驗,必要時重新同步。

6. 驗證同步效果

-- Master 建立測試資料庫
mysql> CREATE DATABASE emlog;

-- Slave 查看是否同步
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| emlog              |
| mysql              |
| performance_schema |
| test               |
+--------------------+

出現 emlog 即代表主從複寫部署成功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved