在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
可以根据需要,修改指定数据库。

浙公网安备 33010602011771号