centos mysql讀寫分離

centos系統(tǒng)上實(shí)現(xiàn)mysql的讀寫分離,通常需要以下幾個(gè)步驟:

  1. 設(shè)置mysql主從復(fù)制

    • 在主服務(wù)器上安裝mysql,并確保其可以被其他服務(wù)器訪問。
    • 在從服務(wù)器上安裝MySQL,并設(shè)置為從主服務(wù)器同步數(shù)據(jù)。
  2. 配置主服務(wù)器

    • 修改主服務(wù)器的MySQL配置文件(通常位于/etc/my.cnf或/etc/mysql/my.cnf),加入以下配置:
      [mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = your_database_name  # 替換為你要復(fù)制的數(shù)據(jù)庫名稱
    • 重啟MySQL服務(wù):
      sudo systemctl restart mysqld
    • 創(chuàng)建用于復(fù)制的用戶,并賦予相應(yīng)權(quán)限:
      CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';  # 替換為你的密碼 GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES;
  3. 配置從服務(wù)器

    • 編輯從服務(wù)器的MySQL配置文件,添加以下內(nèi)容:
      [mysqld] server-id = 2 relay_log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log replicate_do_db = your_database_name  # 替換為你要復(fù)制的數(shù)據(jù)庫名稱
    • 重啟MySQL服務(wù):
      sudo systemctl restart mysqld
    • 在從服務(wù)器上設(shè)置復(fù)制,使用主服務(wù)器的復(fù)制用戶信息:
      CHANGE MASTER TO MASTER_HOST='master_ip',  # 替換為主服務(wù)器的IP地址 MASTER_USER='replicator', MASTER_PASSWORD='password',  # 替換為你的密碼 MASTER_LOG_FILE='mysql-bin.000001',  # 替換為主服務(wù)器的binlog文件名 MASTER_LOG_POS=123;  # 替換為主服務(wù)器的binlog位置 START SLAVE;
  4. 驗(yàn)證復(fù)制狀態(tài)

    • 在主服務(wù)器上查看復(fù)制狀態(tài):
      SHOW MASTER STATUS;
    • 在從服務(wù)器上查看復(fù)制狀態(tài):
      SHOW SLAVE STATUSG
    • 確保Slave_IO_Running和Slave_SQL_Running都顯示為Yes。
  5. 設(shè)置讀寫分離

    • 使用MySQL代理工具(如ProxySQL、MaxScale等)來實(shí)現(xiàn)讀寫分離。

    • 安裝并配置ProxySQL:

      sudo yum install proxysql
    • 編輯ProxySQL配置文件(通常是/etc/proxysql.cnf),配置主從服務(wù)器和讀寫分離規(guī)則:

      [mysqld] bind_address = 0.0.0.0  [mysql_servers] server=master_ip,hostname=master,weight=1 server=slave_ip,hostname=slave,weight=1  [mysql_query_rules] rule=1, name="read-only", active=1 match_pattern=^SELECT, GROUP BY, ORDER BY, LIMIT destination_hostgroup=slave_group  rule=2, name="read-write", active=1 match_pattern=^INSERT, UPDATE, DELETE, CREATE, DROP, ALTER destination_hostgroup=master_group  [mysql_hostgroups] hostgroup=master_group, hostname=master_ip hostgroup=slave_group, hostname=slave_ip
    • 啟動(dòng)ProxySQL:

      sudo systemctl start proxysql
  6. 測(cè)試讀寫分離

    • 通過ProxySQL連接到MySQL,并執(zhí)行讀寫操作,確保讀操作被路由到從服務(wù)器,寫操作被路由到主服務(wù)器。

通過上述步驟,你可以在centos系統(tǒng)上實(shí)現(xiàn)MySQL的讀寫分離。根據(jù)實(shí)際需求,你可能需要進(jìn)一步調(diào)整配置和優(yōu)化性能。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享