MYSQL主从复制
读写分离(减轻单台数据库服务压力过大、以及规避单点故障(数据库磁盘发生损坏)问题保证数据备份)读写分离基于Mysql主从复制:只有遵循相应的配置就能实现数据库的主从复制(一个数据库负责查询,一个数据库负责写(写的时候会将数据同步到从数据库))之后就能在业务代码中实现读写分离,架构如图所示:

对数据库操作的时候数据库自身会记录日志——>而且数据库还可以通过读取日志还原数据操作

提前准备好两台服务器,分别安装Mysql并启动服务成功
主库和从库都设置唯一的服务ID
此外主库需要开启二进制日志功能并创建一个具有复制日志权限的用户供从库Slave连接(指定当前主库的日志文件和状态才能同步连接)读写二进制日志,最后从库启动Slave的io线程即可完成主从复制的配置
第一步:修改Mysql数据库的配置文件/etc/my. cnf

第二步:重启Mysql服务:systemctl restart mysqld

第三步:登录Mysql数据库,执行下面SQL
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
注:上面SQL的作用是创建一个用户xiaoming,密码为Root@123456,并且给xiaoming用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。
第四步︰登录Mysql数据库,执行下面SQL,记录下结果中File和Position的值
show master status;
注:上面SQL的作用是查看Master的状态,执行完此SQL后不要再执行任何操作。
主从复制需要保证从一个状态节点(每次数据库操作都会令状态节点发生更改)开始进行复制

第一步:修改Mysql数据库的配置文件/etc/my.cnf

第二步:重启Mysql服务:systemctl restart mysqld

第三步:登录Mysql数据库,执行下面sQL
change master to master_host='192.168.138.100', master_user='xiaoming ' ,master_password='Root@123456' ,master_log_file='mysql-bin.eo00e5 ' ,master_log_pos=441;
启动slave线程(io)
start slave;

第四步:登录Mysql数据库,执行下面SQL,查看从数据库的状态
show slave status;

上面是在数据库层面操控实现主从架构和读写分离,而在应用层我们可以使用Sharding-JDBC来实现,而且它不仅仅是读写分离,它还可以用来配合分库分表!