Windows10 Mysql 主从搭建
一、mysql 安装
1.1 下载地址
https://downloads.mysql.com/archives/community/
我下的载
1.2 解压之后分别命名
1.3 解压之后没有 my.ini 和 data 需要创建 my.ini并配置 data 在初始化时自动会创建
二、主库搭建
2.1 修改配置 my.ini
[client]
port=3310
default-character-set=utf8
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3310端口
port = 3310
# 设置mysql的安装目录
basedir=D:\Apache\mysql\mysql-master
# 设置mysql数据库的数据的存放目录
datadir=D:\Apache\mysql\mysql-master\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#开启查询缓存
explicit_defaults_for_timestamp=true
#免密登录
skip-grant-tables
# 主库和从库需要不一致,分别配一个唯一的ID编号
server_id=1
# 二进制文件存放路径,存放在根目录data文件夹下
log_bin=master-bin
# 需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制,这里要是配置了,同时也要在Slave(也就是你的从库) 上设定
# binlog-do-db=test
# 不需要复制的库,和上项同理
# binlog-ignore-db=mysql
2.2 cmd 以管理员身份 进入主库的bin目录中,如下图:
2.3 初始化 进入到bin 目录下
mysqld --initialize
2.4 执行命令:其中 mysql-master 为服务的名字
mysqld --install mysql-master --defaults-file="D:\Apache\mysql\mysql-master\my.ini"
出现以下提示,表示服务安装成功
D:\Apache\mysql\mysql-master\bin>mysqld --install mysql-master --defaults-file="D:\Apache\mysql\mysql-master\my.ini"
Service successfully installed.
启动mysql服务器
执行命令:
启动命令 net start mysql-master
停止命令 net stop mysql-master
删除服务 sc delete 服务名
出现以下提示信息表示主库启动成功
2.5.初始用户和密码
登陆数据库
D:\Apache\mysql\mysql-slave-1\bin>mysql -u root -p
#将数据库切换至mysql库
mysql> USE mysql;
#修改密码
mysql> update user set authentication_string=PASSWORD('123456') where user='root';
#刷新MySQL权限相关的表
mysql> flush privileges;
mysql> exit;
三、从库搭建
和主库配置基本一样 但是注意端口 和 server_id
3.1.修改配置 my.ini
[client]
port=3320
default-character-set=utf8
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3310端口
port = 3320
# 二进制文件存放路径,存放在根目录data文件夹下
#log_bin=master-bin
# 设置mysql的安装目录
basedir=D:\Apache\mysql\mysql-slave-1
# 设置mysql数据库的数据的存放目录
datadir=D:\Apache\mysql\mysql-slave-1\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#开启查询缓存
explicit_defaults_for_timestamp=true
#免密登录
skip-grant-tables
# 主库和从库需要不一致,分别配一个唯一的ID编号
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
3.2 cmd 以管理员身份 进入主库的bin目录中,如下图:
3.3 初始化 进入到bin 目录下
mysqld --initialize
3.4 执行命令:其中 mysql-slave-1 为服务的名字
mysqld --install mysql-slave-1 --defaults-file="D:\Apache\mysql\mysql-slave-1\my.ini"
出现以下提示,表示服务安装成功
D:\Apache\mysql\mysql-slave-1\bin>mysqld --install mysql-slave-1 --defaults-file="D:\Apache\mysql\mysql-slave-1\my.ini"
Service successfully installed.
启动mysql服务器
执行命令:
启动命令 net start mysql-slave-1
停止命令 net stop mysql-slave-1
删除服务 sc delete 服务名
出现以下提示信息表示主库启动成功
3.5 初始用户和密码
登陆数据库
D:\Apache\mysql\mysql-slave-1\bin>mysql -u root -p
#将数据库切换至mysql库
mysql> USE mysql;
#修改密码
mysql> update user set authentication_string=PASSWORD('123456') where user='root';
#刷新MySQL权限相关的表
mysql> flush privileges;
mysql> exit;
3.6 主从就搭建完了从任务管理器中查看
四、关联主库(master)与从库(slave)
面我们已经把master和slave相关配置文件都已添加,并分别启动了master与slave,现在我们分别登录到master和slave的mysql中
4.1 master 的mysql 执行命令 show master status查看master的状态
4.2 slave 的mysql 执行命令 show slave status查看slave的状态
我们可以发现 ,master的状态下,生成了一个二进制的日志文件,而slave下是空的,所以我们现在就要把主库与从库关联起来。只需要让从库(slave)知道主库(master)的地址就可以了。
4.3 主库操作
首先我们需要在主库(master)中创建一个用户用于与从库同步的用户名和密码(这里我创建一个test用户,密码为mysql),并给test用户授权,以用于主库操作从库。
相关命令:
create user test;
grant replication slave on *.* to 'test'@'127.0.0.1'identified by '123456';
flush privileges;
4.4 从库操作
首先执行
change master to master_host='127.0.0.1',master_port=3310,master_user='test',master_password='123456',master_log_file='master-bin.000001',master_log_pos=0;
start slave 开启主从同步
然后执行命令查看 slave的状态
show slave status \G;
至此,主从跟踪已经开启,并全部配置完成
五、验证主从同步
在masert 中创建一个数据库 user ,看一下从库的变化
本文参考自其他博客:
1.https://www.cnblogs.com/naruto123/p/8138708.html
2.https://www.cnblogs.com/opsprobe/p/10904377.html