配置主服务器(开启二进制日志文件)
编辑主master服务器配置文件/etc/my.cnf
在[mysqld]节点下加入两句话
server-id=1
log-bin=mysql-bin #启用二进制日志;
重启服务:service mysql restart
在启动或者重启mysql服务的过程中会有一些常见问题,可以参考附录3--mysql常见问题解决(云主机不太可能出现,待补充)
登录mysql:mysql –uroot -proot
查看主节点的二进制文件(名称),position的值,为从节点挂接主节点准备数据;
mysql>flush tables with read lock; #数据库锁表,不让写数据;这步骤可不做
对于当前环境的mysql无需使用lock命令,因为没有人操作,但是生产环境中必须这样做
mysql>show master status; #查看MASTER状态(这两个值File和Position)其中的file就是二进制文件,position记录当前操作sql的步骤数(注意一条sql包含多步,所以不是sql语句的条数)
mysql>unlock tables; #从启动好后,记得要解除锁定
主数据库到此配置完毕
配置从服务器
修改/etc/my.cnf增加一行
server-id=2
:重启服务
service mysql restart
通过mysql命令配置同步日志的指向:(类似于redis的slaveof挂接主从)
mysql>change master to master_host='106.75.74.254', 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结果纵向显示。必须大写,这个命令无法再sqlyog中使用
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虽然支持主从关系但是并没有维护读写分离的状态
Mysql的双机热备
搭建步骤
按照主从的关系将新的主从挂接
1 开启主节点二进制
2 查看主节点的二进制文件名称和position
3 在从节点挂接
4 启动从节点的线程
start slave
5 测试,将其中任何一个宕机,在另外一台服务器写入新的数据,观察宕机启动的数据库中有没有宕机期间的更新数据-->有,双机热备