MySQL主从热备

版权声明:Arno https://blog.csdn.net/yu342107056/article/details/87867456

自己先预先在两台机器上安装mysql。

配置主服务器(开启二进制日志文件)

编辑主master服务器配置文件/etc/my.cnf
在[mysqld]节点下加入两句话
server-id=1 #MySQL服务ID唯一的
log-bin=mysql-bin #启用二进制日志;

在这里插入图片描述

重启服务:service mysql restart

在这里插入图片描述

登录mysql:mysql –uroot -proot

查看主节点的二进制文件(名称),position的值,为从节点挂接主节点准备数据;

mysql>flush tables with read lock; #数据库锁表,不让写数据;这步骤可不做,为了在配置同步时查询到的二进制文件(名称),position的值准确不会被更改

对于当前环境的mysql无需使用lock命令,因为没有人操作,但是生产环境中必须这样做

mysql>show master status; #查看MASTER状态(这两个值File和Position)其中的file就是二进制文件,position记录当前操作sql的步骤数(注意一条sql包含多步,所以不是sql语句的条数)

在这里插入图片描述

mysql>unlock tables; #从启动好后,记得要解除锁定

主数据库到此配置完毕

配置从服务器

修改/etc/my.cnf增加一行

server-id=2 #MySQL服务ID唯一的
log-bin=mysql-bin #启用二进制日志;

在这里插入图片描述
重启服务

service mysql restart

通过mysql命令配置同步日志的指向:(类似于redis的slaveof挂接主从)

mysql>change master to master_host=‘192.168.1.25’, master_port=3306,
master_user=‘root’,master_password=‘root’,
master_log_file=‘mysql-bin.000001’,
master_log_pos=120;

master_host 主服务器的IP地址
master_port 主服务器的PORT端口
master_log_file 和主服务器show master status中的File字段值相同
master_log_pos 和主服务器show master status中的Position字段值相同
mysql>start slave; #stop slave;停止服务,出错时先停止,再重新配置,这里启动从服务
mysql>show slave status\G; #查看SLAVE状态,\G结果纵向显示。必须大写
service mysql restart #重启服务
在这里插入图片描述
在这里插入图片描述

注意:如果出错,可以看后面的错误信息。观察Slave_SQL_Running_State字段,它会记录详细的错误信息

此处配置为一台主一台从,如果需要互为主从需要在主服务器上执行一遍从服务的内容即可

测试同步状态,如果一台主一台从只需在主操作,从查看即可,如果互为主从,需要在双方各自操作,在另外一方查看刚才的操作是否同步过来。
案例1:在主中创建表格,插入数据
观察从
案例2:将从节点中插入数据,然后在主里继续添加数据
观察主,从状态(如果为一主一从,此处会破坏主从结构,互为主从不影响)
在这里插入图片描述
案例3:对第二个案例的数据在主中进行变更,
观察从
由于第二步操作主从结构失效

这是发现没法同步,调用show slave status 发现已经报错
在这里插入图片描述
sql线程已经不工作了
在这里插入图片描述
id为3的重复,在从中有数据了

重新挂接(不能够轻易的在单机热备的从节点中操作写)
错误数据必须清除或者调整正确否则继续主从失效
查看主节点中的二进制文件名称 pos
停止从节点的从状态
stop slave
在这里插入图片描述
show master status;
在这里插入图片描述
在从节点中把查询出来的最新数据放到命令里挂接主节点
在这里插入图片描述
启动从节点的slave
start slave
在这里插入图片描述
但是这个时候发现id为3的对应b1字段的值没有改

所以mysql虽然支持主从关系但是并没有维护读写分离的状态

猜你喜欢

转载自blog.csdn.net/yu342107056/article/details/87867456
今日推荐