MySQL主從復制是一種數據同步方案,通過將數據從主庫復制到從庫,可以實現高可用性、數據備份以及讀寫分離的需求。
讀寫分離是指利用從庫提供查詢服務,主庫則專門用于寫操作。這樣可以將讀壓力分散到從庫上,提升數據庫的性能和可用性。下面來簡單介紹一下MySQL主從復制和讀寫分離的實現方法。
MySQL主從復制
1. 在主庫上開啟二進制日志
# 在配置文件my.cnf中添加以下配置 server-id = 1 log-bin = /var/lib/mysql/mysql-bin.log
2. 在從庫上配置主庫信息
# 在配置文件my.cnf中添加以下配置 server-id = 2 # 配置從庫連接主庫的信息 # 注意:這里需指定主庫的IP地址、端口號、以及同步的二進制日志位置(即同步點) # 從庫必須在主庫備份日志文件的基礎上接著復制,否則同步會失敗 relay-log = /var/lib/mysql/mysql-relay-bin.log relay-log-index = /var/lib/mysql/mysql-relay-bin.index master-info-file = /var/lib/mysql/master.info master-host = master-port = 3306 master-user = master-password = master-connect-retry = 60
3. 初始化從庫
# 在從庫上執行以下命令 mysql>STOP SLAVE; -- 停止復制進程 mysql>RESET SLAVE; -- 清除從庫復制信息 mysql>CHANGE MASTER TO MASTER_HOST='', MASTER_USER='', MASTER_PASSWORD='', MASTER_PORT=3306, MASTER_LOG_FILE='', MASTER_LOG_POS=0; -- 配置主庫信息 mysql>START SLAVE; -- 啟動復制進程
4. 監控同步狀態
mysql>SHOW SLAVE STATUS\G; -- 查看從庫同步狀態
MySQL讀寫分離
1. 配置主從復制
2. 針對讀請求,將連接定向到從庫
# 在應用程序連接MySQL時,使用以下方式連接 jdbc:mysql:replication://master_ip:master_port,slave_ip_1:slave_port,slave_ip_2:slave_port/db_name?useUnicode=true&characterEncoding=utf8&autoReconnect=true
3. 實現負載均衡和故障轉移
可以使用第三方組件如HAProxy或MaxScale來實現負載均衡和故障轉移。當從庫宕機或不可用時,自動將讀請求轉發到其他可用從庫。
通過以上配置,可以實現MySQL主從復制和讀寫分離,提高數據庫的可用性和性能。