什么是MySQL集群,为什么要做主从复制?
MySQL集群是为了解决单一MySQL服务器性能瓶颈、提高数据库的可用性、和扩展性而设计的一种解决方案。
为了解决服务器性能瓶颈,面对大流量并发时所产生的查询缓慢宕机等问题,在主机出现问题时,可以快速切换到从库提供服务,降低主库的访问压力,可以在从库上执行备份,以避免备份期间影响主库的服务
必要性:数据库服务器和其他的前端业务服务器一样,也存在性能短缺的问题,当面对大流量的并发是,数据库服器往往出现查询缓慢宕机等问题,所以要进行扩展
主从同步的作用:
1、master记录二进制日志bin_log,MySQL讲事务写入二进制日志,即使事务种的语句都i是交叉执行的,在事件写入二进制日志完成后,master通知存储引擎提交事务
2、slave打开I/O线程,I/O线程在master打开一个普通的连接,然后开始读取bin_log
3、从机打开sql线程,从bin_log日志读取事件,并重新执行其中的事件更新slave数据,使其与master中的数据一致
主从同步的原理:
1、master记录二进制日志bin_log,MySQL讲事务写入二进制日志,即使事务种的语句都i是交叉执行的,在事件写入二进制日志完成后,master通知存储引擎提交事务
2、slave打开I/O线程,I/O线程在master打开一个普通的连接,然后开始读取bin_log
3、从机打开sql线程,从bin_log日志读取事件,并重新执行其中的事件更新slave数据,使其与master中的数据一致
跟主从复制功能相关的文件:
master.info :用于保存slave连接至master时的相关信息,例如账号 密码等
relay-log.info :保存在当前slave节点上已经复制的二进制日志和本地relay log日志的对应关系
mysql-relay-bin.00000# :中继日志,保存从主节点复制过来的二进制日志,本质就是二进制日志
MySQL主从同步的优点:
1、高可用性 主从同步可以保证在主服务器故障的情况下,从服务器可以立即接管,从而保证数据的完整性和可用性
2、数据备份 主服务器的数据可以被复制到多个从服务器上,从而实现数据备份
3、负载均衡 可以通过添加从服务器来分担主服务器的负载,从而提高性能
实现主从复制步骤:
前提准备:安装2台mysql作为主机和从机,可以用复制虚拟机
主机
1、修改ip 如果新建虚拟机可以不用改
vim /etc/sysconfig/network-scripts/ifcfg-ens32
修改与复制的虚拟机IP不同
2、修改配置文件
vim /etc/my.cnf
在mysqld 下添加以下四行
server-id=1 主从要设置不一样
log-bin=mysql-bin-master 启用二进制日志
binlog-do-db=HA 可以被从服务器复制的库,二进制需要同步的数据库名
binlog-ignore-db=mysql 不可以被从服务器复制的库
3、修改uuid 如果新建虚拟机此步骤可以不做
vim /usr/local/mysql/data/auto.cnf
讲uuid修改一位即可
4、重启MySQL服务
systemctl restart mysql
5、登录mysql并创建用户和赋予权限
mysql -uroot -p1
以下两行是MySQL8的语法
create user slave@'%' identfied with mysql_native_password by '1';
grant replication slave on *.* to slave@'%';
flush privileges; 刷新权限
6、创建从服务器可以复制的数据库
create database HA;
7、查看主机的状态
show master status;
从机:
1、修改IP
2、修改配置文件
vim /etc/my.cnf
在mysqld下添加一行即可
server-id=2 与上述主机不一致
3、修改uuid
vim /usr/local/mysql/data/auto.cnf
修改与主机不一致即可
4、重启服务
systemctl restart mysql
5、登录mysql
mysq -uroot -p1
6、先停止同步
stop slave;
7、建立与主机连接
change master to master_host='主机ip',master_port=3306,master_user='主机创建的用户',master_password='用户的密码',master_log_file='主机最后查看出来的',master_log_pos=主机最后查看出来的;
8、开始同步
start slave;
9、查看同步情况
show slave status \G;
10、在主机进行测试
use HA; 使用可以复制的数据库
create table test(id int, name varchar(20)); 创建一个表查看从机是否有
11、在从机查看
use HA;
show tables;
查看是否有主机创建的test表
总结
主从同步是一种MySQL高可用性解决方案,通过同步主服务器与多个从服务器之间的数据,保证了数据的完整性和可用性,当主服务器发生故障时,从服务器可以立即接管,保证了数据的可用性,可以帮助用户实现数据备份和负载均衡,在使用时需要注意一些细节问题,以确保器正常运行。