溫馨提示×

centos mysql如何實現讀寫分離

小樊
56
2025-07-12 12:30:46
欄目: 云計算

在CentOS上實現MySQL的讀寫分離,通常需要以下幾個步驟:

  1. 主從復制配置

    • 首先,你需要配置MySQL的主從復制。這涉及到在主服務器上設置二進制日志,在從服務器上配置復制并指向主服務器。
  2. 配置讀寫分離器

    • 使用一個讀寫分離器(如ProxySQL、MaxScale、HAProxy等)來管理數據庫的讀寫請求。讀寫分離器會根據配置的規則將讀請求分發到從服務器,寫請求發送到主服務器。
  3. 應用層配置

    • 修改應用程序的數據庫連接字符串,使其指向讀寫分離器而不是直接指向MySQL服務器。

下面是一個簡單的示例,使用ProxySQL作為讀寫分離器:

1. 主從復制配置

主服務器(Master)

編輯/etc/my.cnf/etc/mysql/my.cnf文件,添加以下配置:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=your_database_name

重啟MySQL服務:

systemctl restart mysqld

創建一個用于復制的用戶:

CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;

查看主服務器的狀態:

SHOW MASTER STATUS;

記下FilePosition的值。

從服務器(Slave)

編輯/etc/my.cnf/etc/mysql/my.cnf文件,添加以下配置:

[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1
binlog-do-db=your_database_name

重啟MySQL服務:

systemctl restart mysqld

配置從服務器連接到主服務器:

CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123;
START SLAVE;

查看從服務器的狀態:

SHOW SLAVE STATUS\G

確保Slave_IO_RunningSlave_SQL_Running都是Yes。

2. 配置ProxySQL

安裝ProxySQL:

yum install proxysql

啟動ProxySQL服務:

systemctl start proxysql

配置ProxySQL: 編輯/etc/proxysql.cnf文件,添加以下配置:

[mysql_servers]
master = {host = "master_ip", port = 3306}
slave = {host = "slave_ip", port = 3306}

[mysql_query_rules]
rule1 = {id = 1, active = 1, match_pattern = "^SELECT", destination_hostgroup = "slaves", apply = ""}

[mysql_users]
admin = {password = "admin_password"}

[mysql_hostgroups]
slaves = {hostname = "slave_ip", port = 3306}

重啟ProxySQL服務:

systemctl restart proxysql

3. 應用層配置

修改應用程序的數據庫連接字符串,使其指向ProxySQL:

# 示例Python代碼
import pymysql

config = {
    'user': 'admin',
    'password': 'admin_password',
    'host': '127.0.0.1',
    'port': 6032,
    'db': 'your_database_name',
    'charset': 'utf8mb4',
    'cursorclass': pymysql.cursors.DictCursor
}

connection = pymysql.connect(**config)

通過以上步驟,你就可以在CentOS上實現MySQL的讀寫分離。請根據實際情況調整配置文件中的IP地址、端口、用戶名和密碼等信息。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女