windows下mysql5.6的主从同步与读写分离配置


本文在Windows下安装了两个MySQL.5.6,并进行主从同步配置,最后采用mycat中间件进行读写分离和测试。

安装两个mysql数据库

如果本机上之前没有安装过MySQL,那么首先按照正常方法安装第一个MySQL即可,安装成功后接下来安装第二个MySQL,此时需注意:
1、先删掉安装之前的mysql配置的环境变量
2、关掉之前的mysql服务
3、添加配置文件
4、从cmd命令行进入当前mysql的安装目录的文件夹下,输入命令

mysqld install mysql2 --default-file="C:\mysql-5.7.22-winx64\my.ini"

default-file后是配置文件的路径。mysql2是给我们给MySQL服务起的名字,打开服务可以看到:
在这里插入图片描述
5、通过“win+r”输入regedit打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql2,修改ImagePath参数,更正mysql2服务相关路径。
改正后格式如下:
在这里插入图片描述6、启动数据库

C:\mysql-5.7.22-winx64\bin>net start mysql2
mysql2 服务正在启动 .
mysql2 服务已经启动成功。

mysql2服务启动后,去data/xxx.err文件中找到临时密码,进行登录
之后再修改密码

set password for root@localhost=password('001nX123456');

用新密码登录。

配置master数据库

1、my.ini配置文件如下:

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
 
[mysqld]
# 设置3306端口
port = 3307
# 设置mysql的安装目录
basedir=D:\\idea\\mysql-5.6.45-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
datadir=D:\\idea\\mysql-5.6.45-winx64\\data
#secure file priv

# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB


## 设置server_id,一般设置为IP
server_id=1
## 复制过滤:需要备份的数据库,输出binlog
binlog-do-db=mydb
binlog-do-db=db1
binlog-do-db=db2
binlog-do-db=db3
## 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志功能,可以随便取,最好有含义
log-bin=edu-mysql-bin
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
#slave_skip_errors=1062
## 如果需要同步函数或者存储过程
#log_bin_trust_function_creators=true

2、重启mysql服务
3、cmd进入mysql安装目录的bin文件下,
输入命令:mysql -uroot -P3307 -p
进入数据库
在这里插入图片描述4、grant replication slave, replication client on . to ‘slaver’@localhost identified by ‘123456’;
给主库添加一个用户,包含他的ip地址和密码,并赋予它复制的权限;
5、flush privileges;
刷新权限;
6、select user,host from mysql.user;
在这里插入图片描述
7、show master status;
查看master当前binlog的状态:
在这里插入图片描述这两个值需记下,在后面从库配置slave中使用。

配置slave数据库

一、配置文件,注意端口号需与master的不同

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
 
[mysqld]
# 设置3306端口
port = 3310
# 设置mysql的安装目录
basedir=D:\\idea\\mysql-5.6.45-slaver
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
datadir=D:\\idea\\mysql-5.6.45-slaver\\data
#secure file priv

# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB


## 设置server_id,一般设置为IP
server_id=2
## 复制过滤:需要备份的数据库,输出binlog
binlog-do-db=mydb
binlog-do-db=db1
binlog-do-db=db2
binlog-do-db=db3
## 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志功能,可以随便取,最好有含义
log-bin=edu-mysql-bin
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
#slave_skip_errors=1062
## 如果需要同步函数或者存储过程
#log_bin_trust_function_creators=true

2、重启mysql服务
3、cmd进入mysql安装目录的bin文件下,
输入命令:mysql -uroot -P3310 -p
进入数据库
在这里插入图片描述4、
输入
change master to master_host=‘127.0.0.1’,master_user=‘slave-win’,master_password=‘123456’, master_log_file= ‘edu-mysql-bin.000005’,master_log_pos=427,master_port=3307;
其中包含了主库的ip地址、端口号,之前在主库上设置的可访问的用户名和密码,以及master状态的信息master_log_file和master_log_pos。
如果出现
在这里插入图片描述
原因是从库用来连接主库的用户权限或者密码不对。
5、输入:
stop slave;
start slave;
6、show slave status;
在这里插入图片描述
在这里插入图片描述
看到两个yes即主从配置成功。

使用mycat进行读写分离

1、配置文件schema需添加读写分离的相关配置

<table name="employee" primaryKey="ID" dataNode="dn1,dn2"
			   rule="sharding-by-intfile" />
			   
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
		<heartbeat>show slave status</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="localhost:3307" user="root"
				   password="root">
			<!-- can have multi read hosts -->
			<readHost host="hostS2" url="localhost:3310" user="root" password="root" />
		</writeHost>

2、重启mycat服务
启动MyCat:
./mycat start
查看启动状态:
./mycat status
停止:
./mycat stop
重启:
./mycat restart
服务启动成功即可。

通过mycat9066管理端口查看后端数据库情况

输入:show @@datasource;
在这里插入图片描述可看到读写数据库都配置好了。

navicat连接mycat、master、slave并进行测试

1、navicat连接过程中如果出现错误:
在这里插入图片描述
删掉连接重连即可。
2、连接mycat、master、slave
在这里插入图片描述3、在master和slave分别创建database:db1、db2
4、在mycat中创建表bookinfo,user_id是分表键

create table bookinfo(
ID char(10),
name varchar(10)
);

在master和slave的db1、db2中可看到bookinfo这个表
在这里插入图片描述5、在bookinfo中插入值

insert into bookinfo (name,user_id) values ('计算机原理','2019091503');

查看mycat的日志文件:
在这里插入图片描述
在这里插入图片描述5读取bookinfo中的数据
select name,user_id from bookinfo where user_id= ‘2019091501’;

查看mycat日志信息:
在这里插入图片描述
在这里插入图片描述至此,一个简单的以mycat为中间件的mysql的读写分离就完成了。

发布了19 篇原创文章 · 获赞 2 · 访问量 1229

猜你喜欢

转载自blog.csdn.net/weixin_38377637/article/details/100864045