一、架构思想
Mysql集群部署是为了数据库的高可用性,如果一台数据库服务器出了故障无法运行,还有其他台可以继续使用,当出故障的那一台服务器恢复之后,数据又可以继续恢复同步。
而且可以读写分离,主机一般为写数据,从机为读数据。
部署架构一般有:一主多从、多主多从。
(一主多从:一个主写库A多个从库,当主库A故障时,提升从库B为主写库,同时修改C、D库为B的从库。A故障修复后,作为B的从库。)
(多主多从:一个主机故障之后,还有另一套主机可以运行。等故障恢复之后,数据都会进行同步。)
数据恢复过程:
二、主从关系配置
1、配置/etc/my.cnf文件
如果之前安装mysql的时候清理了该文件,可以用命令:
vim /etc/my.cnf
输入下面的内容:
[mysqld]
log-bin=mysql-bin
server-id=102
配置好了之后,才会在之后产生相应的mysql-bin的日志文件
2、在主机上配置从机
在主机上,登录mysql数据库之后,输入下面的语句:
mysql>grant replication slave on . to ‘slave’@‘%’ identified by ‘123’;
说明:
slave是创建的从机的mysql用户名。
@后面可以输入 IP地址,如果输入的是IP地址,证明该主机就只有一个从。如果输入的是%证明可以配置多个从机。
123:就是从机的mysql密码。
执行完毕之后,就是 在主机上授权了一个“奴隶”名叫 slave 密码是123
注:如果是指定了IP地址,就是指定IP地址的那台机器 与 这台主机产生了联系。如果没有指定,登录了哪个机子进行了认证主机的操作,哪个机子就是该主机的从机。
flush tables with read lock;
该语句的目的是为了锁定数据库,此时不允许更改任何数据。确保主从数据保持一致。
执行完毕之后,会查看一下主机的状态,使用下面的语句:
show master status;
如果没有出现主机状态的时候,就重启一下mysql服务,然后再查看即可。
此时可以看到产生了一个 mysql-bin.000001的文件,该文件就是主机二进制日志文件,还有偏移量是 154。这些信息需要记录起来,用于下面配置从机。
如果想重置主机的状态,用:
reset master;
然后再 执行查看主机状态的语句。
3、在从机上面关联主机
从机上面的/etc/profile 文件也需要进行配置,
[mysqld]
server-id=103
这个server-id不与主机设置的相同即可。
然后登陆从机的mysql,执行下面语句:
change master to master_host=‘192.168.228.133’,master_port=3306,master_user=‘slave’,master_password=‘123’,master_log_file=‘mysql-bin.000001’,master_log_pos=154;
第一个是主机IP。
第二个是主机端口号。
第三个是主机用户名。
第四个是主机密码。
第五个是主机二进制文件名。(与主机上面一致即可)
第六个是主机偏移量位置。(与主机上面一致即可)
打开从机,语句:
start slave;
执行完毕之后,可以查看从机状态:
show slave status \G;
看到这个的时候 证明从机已经连接成功,并且语句已经可以执行。
如果Slave_IO_Running:No是这样的时候,证明从机连不上主机,可能是主机的3306的端口没开放,需要在主机上操作开放3306端口:
1、防火墙开启开启
开启端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
2、重启防火墙
firewall-cmd --reload
3、查看已经开放的端口:
firewall-cmd --list-ports
以上步骤,就可以配置好了 一个主机对应一个从机。
接下来可以通过创建表 创建表数据,测试主从同步情况。
这个是我在主机中创建了一个库 一个表,往表里面插入了一条语句:
从机查询一下:
目前主从数据已经保持了同步。
注意:
如果发生主从不同步的情况,先重启主从的mysql服务,然后用reset命令 主从都进行重置,重置到主机的 日志文件以及偏移量 都与之前从机配置的一致时,再启动从机的slave。