最近MySQL新推出了一个特性:读写分离 。让我们一起来感受一下这个新特性吧。
1.MySQL8.0与MySQL8.2读写分离的对比。
MySQL 8.0和MySQL 8.2在读写分离上的区别主要在于8.2版本正式引入了读写分离的功能。在MySQL 8.0中,读写分离主要是通过主从复制实现的,主库负责写操作,从库负责读操作。但是这种方式需要手动配置和管理,而且如果主库出现故障,需要手动切换到从库,操作相对复杂。而在MySQL 8.2中,读写分离得到了进一步的优化和改进。MySQL Router可以自动识别读写操作,并将它们路由到相应的实例(主库或从库),实现了自动化的读写分离。这种方式的优点在于简化了配置和管理过程,提高了系统的可用性和可扩展性。
此外,MySQL 8.2还提供了更多的读写分离相关的功能和优化,例如支持更多的复制策略、更好的负载均衡等。
2.下载MySQL及MySQL Router
3.初始化两个mysql数据库实例来模拟多服务。
这里要说一下的是有很多种方法去创建,可以安装两个数据库到不同的目录等。
(1)初始化主实例:
mysqld --initialize-insecure --console
这里可以初始化到对应的目录i如(mysqld --initialize-insecure --console --datadir=D:\Tools\MySQL\Master)因为我的搭建的目录结构如下:
这里的一些日志文件是我master.ini文件中有对应的配置,你们可以不用创建。
(2)启动主实例
mysqld --console --datadir=D:\Tools\MySQL\Master --defaults-file=D:\Tools\MySQL\master.ini
在启动前,需要对master配置文件进行配置:(配置文件根据自己的情况进行配置)
[mysqld]
server-id=1
port=3307
(3)初始化从实例
在另一个MySQL的bin目录下执行以上命令就好了
mysqld --initialize-insecure --console --datadir=(对应目录)
创建slave.ini配置文件
[mysqld]
server-id=2
port=3308
启动实例:
mysqld --console --datadir=(对应目录)
4.配置主从库的关系
这里你可以启动主库或者从库去配置 当你是启动主库的时候就配置从库 相反如此
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='数据库用户', MASTER_PASSWORD='对应的密码', MASTER_LOG_FILE='binlog文件名', MASTER_LOG_POS=日志位置;
其中日志文件名和文件二进制位置可以通过以下命令查找:
SHOW MASTER STATUS;
随后启动从服务器的复制进程:
START SLAVE;
查看是否配置成功,如果从服务器的`Slave_IO_Running`和`Slave_SQL_Running`的值都是"Yes"。那么配置成功。
SHOW SLAVE STATUS\G;
5 配置MySQL Router
1.修改MySQL Router的配置文件(通常为mysqlrouter.conf
),添加以下内容:
router:
router_type: router_plicic
server: 127.0.0.1:3307 # 主库端口号
replication_user: replicator # 从库复制用户名
replication_password: replicator_password # 从库复制密码
virtual_host: *
此时我们已经配置完了。
2.启动MySQL Router可以找到对应的.exe文件或者在命令行输入相对应的命令
3.在命令行中连接到MySQL Router:
mysql -hlocalhost -P33067 -uroot -p --skip-ssl --ssl-ca=ca-cert.pem --ssl-cert=server-cert.pem --ssl-key=server-key.pem -e "SHOW DATABASES;"
然后到这里mysql8.2的读写分离就完成了 接下来可以直接通过MySQL的可视化工具进行测试就可以了。