windows单台系统配置MySQL主从复制

介绍

MySQL数据库支持单向、双向、链式级联、环状等不同业务场景的复制。在复制过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(Slave),接收来自主服务器binlog文件的日志内容,解析出SQL重新更新到从服务器,使得主从服务器数据达到一致

应用场景

一,从服务器作为主服务器的实时数据备份

主从服务器架构的设置,可以大大加强MySQL数据库架构的健壮性。例如:当主服务器出现问题时,我们可以人工或设置自动切换到从服务器继续提供服务,此时从服务器的数据和宕机时的主数据库几乎是一致的。

二,主从服务器实时读写分离,从服务器实现负载均衡

主从服务器架构可通过程序(PHP、Java等)或代理软件(mysql-proxy、Amoeba)实现对用户(客户端)的请求读写分离,即让从服务器仅仅处理用户的select查询请求,降低用户查询响应时间及读写同时在主服务器上带来的访问压力。对于更新的数据(例如update、insert、delete语句)仍然交给主服务器处理,确保主服务器和从服务器保持实时同步。

安装MySQL

首先第一步要有多台MySQL服务器,可以一台电脑安装多台服务,或者多台电脑多台服务。

一,单台windows系统安装多个MySQL实例。

1.如果前面windows中已安装过mysql,最好先去service.msc中停掉。
2.如果想主从数据库的版本一致,可以直接将前面数据库的安装目录copy一份(带有bin目录的是安装目录)。记住,copy过来的是安装目录可能是没有data目录的(data是用来存放数据库文件以及一些日志信息等),所以我们需要先生成该目录,可以通过bin目录里面的sqld工具:

mysqld --initialize-insecure --user=mysql

该执行语句可能会略微有点耗时,完成之后,跟bin目录同级的地方会生成data目录。
data目录内容:


image.png

3.上面的完成之后,我们就可以来设置配置文件了。从之前的数据库中复制my.ini文件,如果没有可以自己新建一个放在跟data同级的目录下:

image.png

my.ini创建好之后需要将端口跟server-id等设为跟master不同。安装目录等要设为对应的slave数据库目录。

[mysql]
# 设置mysql客户端默认字符集
 character-set-server = utf8mb4
[mysqld]
#master如果是3306,slave可以设置3307
port = 3307
# 设置mysql的安装目录,尽量用斜杠,而不是反斜杠
basedir="D:/MySql/MySQL_2/"
# 设置mysql数据库的数据的存放目录,尽量用斜杠,而不是反斜杠
datadir=D:/MySql/MySQL_2/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
log_error=error.log
//可以根据需要设计自己的生成server-id的规则
server-id=2

4.因为我们之前是直接copy前面一个数据库的安装目录,所以我们需要安装生成mysql服务。

mysqld -install mysql3307 --defaults-file="D:\MySql\MySQL_2\my.ini"

这里指定了要生成的slave服务的名称mysql3307,可以根据自己需要随意设置。执行完成后会出现:

Service successfully installed.

5.最后我们可以输入net start mysql3307启动服务。


image.png

二,配置主从复制

主从复制,简单来讲就是从库根据主库的日志文件,然后在自己的数据库服务器中执行里面的代码,然后生成相同的数据。下面我们来做些简单的配置以开启主从复制。
1.在master数据库中输入,show master status,查看日志文件:


image.png

可以看到主库中有一个二进制日志文件,我们让从库关联它就可以实现主从同步。
登录从库,执行下面命令:

mysql> CHANGE MASTER TO  
MASTER_HOST='127.0.0.1', #这里是主库的ip  
MASTER_PORT=3306, #这里是主库的端口,从库的端口可以和主库不同  
MASTER_USER='root', #这里是主库上建立的用于复制的用户rpo  
MASTER_PASSWORD='111111', ##这里是root用户的密码  
MASTER_LOG_FILE='LAPTOP-CFDLNI4D-bin.000003', ###这里是show master status时查看到的二进制日志文件名称,注意不能多空格  
MASTER_LOG_POS=0; ##这里是show master status时查看到的二进制日志文件偏移量,注意不能多空格 

可以看到,上面在从库中设置的都是主库的配置信息。执行成功后,执行start slave开启主从复制。正常执行会返回Query OK,0 Rows affected.
2.配置完成后,我们执行show slave status\G;看一下从库是否正常:

image.png

如果有看到这两个线程为Yes则表明主从配置正常,否则可以去data目录里面的.err文件中看报错信息。
3.最后,我们在主库中创建一个demo数据库,然后在从库中可以看到则表明主从配置完成:


image.png
image.png

可以发现,主库创建后,从库也有了。
注意:我们现在做的只能从库同步主库,也就是说我们只能在主库写入,不能在从库写。不过一般我们做主从同步也就是为了读写分离,所以不需要从库写入。

你可能感兴趣的:(windows单台系统配置MySQL主从复制)