在Windows搭建MySQL主从复制以应对高并发

综述

若大量的读写数据都在同一个数据库,会导致单库压力较大,降低系统性能,可以通过搭建MySQL主从数据库,主数据库负责写,从数据库负责读,从而减轻单库压力,提高系统的响应速度以及应对高并发的能力。

1.1.1 MySQL下载

MySQL的下载地址

https://dev.mysql.com/downloads/mysql/

下载免安装版本

这里用的是mysql-8.0.30-winx64版本

1.1.2 新建MySQL配置文件

下载后解压到指定文件夹,在MySQL目录下新建一个my.ini(编码为ASNI)文件。

my.ini文件内容如下:

[mysqld]

port=3307

basedir=D:\mysqltest\mysql-8.0.30-winx64

datadir=D:\mysqltest\mysql-8.0.30-winx64\data

max_connections=200

max_connect_errors=10

character-set-server=utf8

default-storage-engine=INNODB

default_authentication_plugin=mysql_native_password

binlog-do-db=test

server-id=1 #设置server-id

log-bin=mysql-bin #开启二进制文件




[mysql]

default-character-set=utf8




[client]

port=3307

default-character-set=utf8

 

1.1.3 初始化data文件夹

以管理员身份打开cmd窗口,切换到MySQL的bin目录

初始化data文件夹,执行命令

mysqld --initialize –console

这样就在root@localhost后面成了MySQL的登录密码,记录下密码。

在MySQL目录下也生成了data文件夹

1.1.4 安装MySQL服务

安装第一个MySQL服务,执行命令

mysqld --install MySQLMaster --defaults-file=D:\mysqltest\mysql-8.0.30-winx64\my.ini

(defaults-file修改成自己的my.ini文件路径)

这样在windows服务就可以看到安装好了的MySQL服务,在这里可以启动MySQL服务,或者在cmd窗口通过net start MySQLMaster启动

1.1.5 登录MySQL

登录指定端口的MySQL,执行命令

mysql -P 3307 -u root -p

输入前面生成的数据库密码,登录成功如下

1.1.6 修改密码

第一次登录需要修改密码,命令为

alter user  'root'@'localhost' identified by '123456';

flush privileges;

1.1.7 检查二进制日志状态

检查binlog日志是否开启,执行命令

show variables like 'log_%';

由于在my.ini文件已经配置了log-bin,所以这里是ON开启状态

1.1.8 安装第二个MySQL服务(从数据库)

将下载的MySQL文件复制一份并起另一个名字,如mysql-8.0.30-winx64Slave

同样新建my.ini文件,内容为

[mysqld]

port=3308

basedir=D:\mysqltest\mysql-8.0.30-winx64Slave

datadir=D:\mysqltest\mysql-8.0.30-winx64Slave\data

max_connections=200

max_connect_errors=10

character-set-server=utf8

default-storage-engine=INNODB

default_authentication_plugin=mysql_native_password

server-id=2 #设置server-id




[mysql]

default-character-set=utf8




[client]

port=3308

default-character-set=utf8

与安装第一个MySQL步骤一样,切换到第二个MySQL目录,

进行初始化data文件、安装启动服务、登录、修改密码

1.1.9 修改注册表

注意如果前面设置mysql的环境变量,会用到同一个mysqld.exe,此时需要修改注册表,运行regedit打开注册表,检查MySQL服务是否对应mysqld

1.1.10         开启MySQL主从复制

登录3307端口的MySQL数据库

创建一个slave用户,并赋予相应权限

CREATE USER 'slave'@'localhost' IDENTIFIED BY '123456';

GRANT ALL ON *.* TO 'slave'@'localhost';

查看binlog的位置,记录Position的值

show master status;

从库指向主库

切换从库目录并登录从库,执行命令

CHANGE MASTER TO 

MASTER_HOST='127.0.0.1',MASTER_PORT=3307,MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=1132;

启动slave,执行命令

start slave;

查看从库的状态,执行命令

show slave status\G;

若Slave_IO_Running以及Slave_SQL_Running都为Yes 代表已成功开启主从复制;若不成功,在Last_Errno可能会有错误日志提示。

在主库创建一个test数据库

create database test;

登录从库查看,发现也有了一个test数据库

这是因为在my.ini设置了对test数据库进行复制

binlog-do-db=test

可以根据需要,修改指定数据库。

posted @ 2022-08-25 18:02  Boxin-kim  阅读(211)  评论(0)    收藏  举报
Web Analytics
Guang Zhou Boxin