mysql的主从复制
问题:当我们在使用数据库时,在一个程序中要是面临很多的用户同时进行访问,那样大量的访问数据库,这就造成了大量的读写压力都有一台数据来承担,压力大,造成数据库服务器的磁盘损坏则数据会丢失,单点故障。
解决问题:使用多台数据来分担压力,同时数据库有多个可以实现数据备份,以及读写分离。
Mysql主从复制
配置-前置条件
提前准备好两台服务器,分别安装mysql 并启动服务器。
配置-主库Master
[mysqld]
log-bin=mysql-bin #[必须]启动二进制日志
server-id=100 #[必须]服务器的唯一ID其中的server-id不是固定的,可以自己给个id
在修改完配置文件后,我们需要去刷新服务,是修改完后,可以正常启动
systemctl restart mysqld
然后登录Mysql数据库,施行sql
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456'
第四步:
show master status
从库的配置
change master to master_host='192.168.138.100',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=439;
start slave;
注意:使用mysql-bin.000001是从主从配置里面的第四步进行查找的。master_log_pos=439也是查找到的。
在进行时出现上面的错误,按照提示的去进行关闭slave;
读写分离
Sharding-JDBC来帮助我们完成读写分离
相关坐标:
<!-- Sharding-JDBC来帮助我们完成读写分离-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC1</version>
</dependency>
Sharding-JDBC入门案例
在配置文件yml中进行配置:
server
要是没有进行配置
main:
allow-bean-definition-overriding: true会进行报错,这个报错是,配置的数据数据无法识别读取数据库