【MySQL】数据库——主从复制和读写分离
MySQL数据库的主从复制和读写分离可以通过以下步骤实现:
主从复制:
配置MySQL的主服务器(Master)和从服务器(Slave),确保从服务器能够连接到主服务器,并获取其二进制日志(binlog)。
Master配置(my.cnf):
[mysqld] log-bin=mysql-bin server-id=1
Slave配置(my.cnf):
[mysqld] server-id=2
在Slave上执行:
CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position;
启动复制:
START SLAVE;
读写分离:
使用中间件如:MySQL Router、ProxySQL、Amoeba等,或编写自定义应用程序逻辑来根据读写需求路由到主服务器或从服务器。
示例代码(使用Python和MySQL Connector):
import mysql.connector from mysql.connector import Error def get_connection(host, database, user, password, read_only=False): try: if read_only: cnx = mysql.connector.connect(host='slave_host', database=database, user=user, password=password) else: cnx = mysql.connector.connect(host='master_host', database=database, user=user, password=password) return cnx except Error as e: print(f"Error: {e}") # 使用 cnx = get_connection('mydatabase', 'myuser', 'mypassword', read_only=True) cursor = cnx.cursor() # 执行查询... cursor.close() cnx.close()
在实际应用中,还需要考虑复制延迟、故障转移、负载均衡等问题。
评论已关闭