MySQL数据库读写分离

# 在一个服务器上,配置MySQL的主从复制环境以实现读写分离 #

1. 安装多个MySQL实例

  • 安装MySQL:如果未安装,请先安装(安装完成默认端口为3306)。

  • 配置多个实例:指定不同的端口来运行,此篇文章中以3307端口和3308端口为例。

2. 配置主服务器(Master)

  • 寻找文件:找到MySQL数据存放位置(C:\ProgramData\MySQL)。

  • 新建文件夹:新建 MySQLServer8.0_3307 和 MySQLServer8.0_3308 文件夹(名称中不要包含中文和空格)。

  • 拷贝文件:打开文件夹 MySQL Server 8.0 ,复制除Data外的其它文件夹和文件,粘贴至3307和3308文件夹下。

   

  • 编辑MySQL配置文件(my.ini):添加或修改以下配置,为实例设置唯一的服务器ID。

port=3307

datadir=C:/ProgramData/MySQL/MySQLServer8.0_3307/Data

server-id=1

# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQLServer8.0_3307/Uploads"

# The TCP/IP Port the MySQL Server X Protocol will listen on.
loose_mysqlx_port=33070

  • 创建服务以及初始化数据

# 创建服务
mysqld install MySQL80_3307 --defaults-file="C:\ProgramData\MySQL\MySQLServer8.0_3307\my.ini"

# 初始化服务
mysqld --initialize --console --datadir=C:\ProgramData\MySQL\MySQLServer8.0_3307\Data --port=3307
  • 启动服务

3. 配置从服务器(Slave)

  • 编辑MySQL配置文件(my.ini):添加或修改以下配置,为实例设置唯一的服务器ID。

port=3308

datadir=C:/ProgramData/MySQL/MySQLServer8.0_3308/Data

server-id=2
relay-log="LAPTOP-H9QEHHCP-relay-bin"
# 设置为只读(可选,但推荐在测试环境中使用)
read_only=1

# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQLServer8.0_3308/Uploads"

# The TCP/IP Port the MySQL Server X Protocol will listen on.
loose_mysqlx_port=33080
  • 创建服务以及初始化数据

# 创建服务
mysqld install MySQL80_3308 --defaults-file="C:\ProgramData\MySQL\MySQLServer8.0_3308\my.ini"

# 初始化服务
mysqld --initialize --console --datadir=C:\ProgramData\MySQL\MySQLServer8.0_3308\Data --port=3308
  • 启动服务

4. 在主库上创建复制用户

-- 创建用户:为复制过程创建一个具有必要权限的用户。
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'replica_password';  
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';  
FLUSH PRIVILEGES;


-- 锁定表并获取二进制日志位置:在进行快照或备份之前,锁定表并记录当前二进制日志的位置。
FLUSH TABLES WITH READ LOCK;  
SHOW MASTER STATUS;
-- 记下输出的File和Position值,稍后将在从库上使用。

5. 备份并传输主库数据到从库

6. 配置从库以连接到主库

-- 设置复制源:使用之前在主库上获取的二进制日志文件和位置来配置从库。
CHANGE MASTER TO  
    MASTER_HOST='localhost',  
    MASTER_PORT=3307,  
    MASTER_USER='replica_user',  
    MASTER_PASSWORD='replica_password',  
    MASTER_LOG_FILE='记录的File值',  
    MASTER_LOG_POS=记录的Position值;

-- 启动复制线程:在从库上启动复制线程。
START SLAVE;

-- 检查复制状态。
SHOW SLAVE STATUS;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值