网站首页技术博客
【原创】Mysql的主从配置,实现读写分离
在一些中大型项目中,由于高并发、高访问,数据库往往是提升服务器性能的瓶颈,而优化数据库的方法有很多,今天重点研究的是mysql数据库的读写分离,可以实现master服务器只负责写操作(insert、update、delete)而slave服务器只负责读(query)操作;
mysql的读写分离需要依靠mysql数据库本身的主从配置即mysql的复制来实现。下面开始正式的配置
一、准备两台服务器,我实在本地进行的测试;
master服务器:
操作系统:windows10 64位专业版
mysql版本:v 5.7.13
ip:192.168.16.11
slave服务器:
操作系统:windows7
ip: 192.168.16.159
mysql版本:v 5.7.20
二、配置master服务器
①配置一个可以外部访问的mysql账户
②然后my.ini加入以下配置
在[mysqld]下面增加下面几行代码
server-id=112 #给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号 log-bin=master-bin log-bin-index=master-bin.index
查看日志
mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 1285 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
重启MySQL服务
三、配置slave服务器
找到MySQL安装文件夹修改my.ini文件,在[mysqld]下面增加下面几行代码
[mysqld] server-id=159 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin replicate-do-db=custmgr #指定要复制的数据库
重启MySQL服务
四、slave服务器连接master服务器
mysql控制台输入以下命令进行连接
change master to master_host='192.168.0.104', //Master 服务器Ip master_port=3306, master_user='repl', master_password='mysql', master_log_file='master-bin.000001',//Master服务器产生的日志 master_log_pos=0;
五、启动slave
start slave;
至此,mysql的主从配置已经完成,测试一下,在master服务器下执行数据库的插入、删除、更新,slave是否会同步master服务器的操作。
注意:①配置成功的关键是slave服务器所监控的log_file要与master服务器产生的一样,即show master status显示出来的文件与slave连接master服务器的log_file一致。如果不一致可以在slave服务器change master。②master服务器重启或者mysql服务重启后log_file会发生变化,如果slave服务器没有随master重启会出现无法监控master服务器log文件的问题,此时需要change master或者重启slave服务器的mysql 服务;