上一篇文章中搭建完成了mysql的单机版,实际上在真正生产环境中根据实际需求会搭建不同的环境。Mysql的主从搭建适合于查询较多,写入较少的情况,而且可以一主多从,在项目中可以用代码控制实现不同数据源的访问,例如,CUD操作全部走主库,查询操作全部走剩下的从库。
1、环境准备
准备另一台虚拟机(132)
2、安装mysql
按照上一篇文章中的单机形式先安装在132机器上
此时131和132数据库都已经安装完成
注意安装时my.cnf文件中不需要开启log-bin,因为此台mysql是从数据库,只需要主数据库开启log-bin就可以了,这样从数据库一直通过主数据库的log-bin去同步数据。
132下面的my.cnf配置。
3、主从同步(主为131从为132)
首先在主库上给从库复制的权限,且查看主库当前的状态,
GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.109.132' identified by '123456';
show master status;
此时到从库执行以下命令
change master to master_host='192.168.109.131', master_user='root', master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=451;
注意里面的log-bin文件根据上图一致,偏移量也需要一致,这样从库的状态就会和主库保持一致
然后从库同步开启
此时查看从库的状态同步是否开启成功
4、测试是否正确
客户端连接到131和132两台数据库,在主数据库上写入数据,从数据库会立即同步
此时在从数据库中写入,则主库不会改变
当然,如果要控制从数据库只能读,写都不能写,需要新建一个普通用户,然后在从数据库命令行中进行
set global read_only=1;
这样就普通用户登录进行就只能读从数据库了。
因为从数据库中root用户需要同步主数据库中数据,所以不能修改root用户只读,否则同步不会成功。