对于集中式架构来说,日益增长的并发,会造成mysql数据读取的瓶颈!
利用mysql主从复制可以实现读写分离!主库用来写,从库用来度!可以提升系统的并发性能(主要是数据读取方面的)
步骤1:首先下载安装两个mysql服务器!可以利用docker! 但是基础是要保证 两个服务器所在的机器可以网络通讯!
这里我是使用本机的mysql作为从库,虚拟机docker作为主库!
修改配置:
[mysqld]
log_bin=localhost-bin #开启二进制日志
#主从复制是从二进制日志里面同步数据,二进制文件可以读取操作的命令,命令就不写了(insert/update/delete)
server_id=122
重启服务
#主库添加给从库,复制的账号,并给账号赋予权限
create user 'slave'@'%' IDENTIFIED BY 'slave';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
SHOW MASTER STATUS;#查看主库的日志文件状态
修改配置文件
[mysqld]
server_id = 45 #id是保证唯一,不与主库相同就可以了,从库建议不要开二进制日志
重启服务
从库连接主库,并指定二进制日志的进行到哪里了
change master to
master_host='192.168.73.128',master_user='slave',master_password="slave",master_log_file='localhost-bin.000002',master_log_pos=649;
开启从节点(会连接主库)
start slave
show slave status;
两个yes表示成功,在主库创建一个数据库会同步到从库!
Slave is not configured or failed to initialize properly. You must at least set --server-id
配置文件没有修改好! 请重修修改并启动!
从主库到从库执行指令的时候可能会报错
This operation cannot be performed with a running slave io thread; run STOP
两个命令一起执行:
STOP slave;
change master to
master_host='192.168.73.128',master_user='slave',master_password="slave",master_log_file='localhost-bin.000021',master_log_pos=649;
show slave status;
Slave_IO_Running 显示在connecting的话是 服务器之间通讯有问题!
我的是5.7版本:
%programData% //c盘下面查找
####docker查找
docker ps
查看在运行的容器
docker exec -it d52a6d2d9a89 /bin/bash
进入容器内部,内部内有vim以及vi 需要自己安装 可以使用more查看
more /etc/mysql/mysql.conf.d/mysqld.cnf
`如果需要修改可以先复制到宿主机修改后在复制回到容器内部(文件夹需要自己创建)!命令如下:
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/mysql/mysqld.cnf
mysql为启动是容器的名字 – name 后面指定的
然后在宿主机vim修改完成,复制回容器 重启容器 docker restart mysql(容器名字或者使用容器id)
docker cp /usr/local/mysql/mysqld.cnf mysql:/etc/mysql/mysql.conf.d/mysqld.cnf
最后祝大家成功!