主从复制的配置
1、配置主服务器
设定主从服务器:一定是主服务器版本低于或者相同于从服务器。最佳的情况是主从服务器的版本一致。
1)开启二进制日志:
找到配置文件:my.ini
2)设置集群的唯一id:
打开它:
3)创建从服务器登录主服务器的授权账户:
权限:replication slave
查看账户:
4)主服务器的防火墙:
关闭防火墙
重启mysql服务器:
2、配置从服务器
1)设置集群的唯一id:
打开配置文件:
查看内容:
修改之后:
2)连接主服务器设置:
需要主服务器提供如下信息:
change master to
master_host=’192.168.142.52’
master_port=3306
master_user=’slave’
master_password=’123456’
master_log_file=’log-bin.000001’
master_log_pos=’107’
master_log_file :这个的值是主服务器的二进制文件的文件名
master_log_pos :这个值是主服务器的二进制文件最新的位置
重点说明:开始进行主服务器与从服务器的数据同步!把所有的主服务器的内容都复制到从服务器上面。
装假操作完成!
开始配置:
3、从服务器管理
查看从服务器状态:
show salve status\G
启动从服务器:
start slave
停止从服务器:
stop slave
清空从服务器配置:
reset slave all
1)查看状态:
2)启动从服务器:
start slave
开始从服务器之前,一定一定一定要把数据从主服务器上面同步过来。不然写SQL的时候,一定要报错的。
3)查看状态:
4)主服务器上面操作SQL语句:
查看了主服务器,也查看从服务器。
说明,主从同步的时候,之前的数据是不会同步过来的。因为我们写的二进制日志文件的开始位置是最新的。
从服务器去读的就是配置的主服务器文件的开始位置!
创建一张表:
查看:
5)从服务器查看数据同步情况:
从服务器接收到了主服务器的数据
6)主服务器上面操作:
查看位置:
从服务器,其实就是把这条sql语句读过去,执行了!
写入点数据:
从服务器就有数据了
8)查看主服务器:
查看状态:
9)从服务器:
停止从服务:
stop slave
查看状态:
10)主服务器:
11)从服务器:
从服务器,数据已经停止了,所有没有同步过来!
开始从服务:
查看状态:
每一次从服务器去主服务器读取数据,都会记录,读到的最新位置。下一次再去读取的时候,就是从这个记录的位置,开始向下读取。
12)停止从服务器,清空从服务器
清空:
reset slave all
查看状态:
4、读写分离的配置
PHP代码层面实现:
主服务器:192.168.142.52;
从服务器:192.168.142.38;
$db1 = mysqli_connect(); 主服务器
$db2 = mysqli_connect(); 从服务器
$sql = “select” 这条sql是你写的。你知道它是查询,请使用$db2操作
mysqli_query($db2, $sql);
$sql = “insert” 这条sql是你写的。你知道它是写的,请使用$db1操作
mysqli_query($db1, $sql);
5、ThinkPHP框架中的读写分离配置