mysql读写分离的实现(window)
要实现mysql的读写分离,可以使用mysql的主(master)从(slave)复制(Replication)来实现:
主(master)库只提供写数据的服务,而从(slave)库只提供读数据的服务。
使用两台电脑,取其中一台电脑的数据库为主数据库(master),都安装mysql,然后创建同个数据库名 mytest ,结构和数据都一样
停止数据库服务
1、主库设置
打开主库(master),找到对应的my.ini配置文件
在[mysqld]的后面添加如下代码:
server-id=1 #master的标示(先找找看有没有这个,有的话就不用加这条了)
log-bin=mysql-bin #slave会基于此log-bin来做replication
binlog-do-db=mytest #用于master-slave的具体数据库
binlog_ignore_db=mysql #不用于master-slave的具体数据库
binlog_ignore_db=information_schema #和binlog-do-db一样,可以设置多个
使用命令行(cmd)模式进入mysql管理
mysql -uroot -p (如果提示不是内部命令或者命令无法使用,就设置一下环境参数,把数据库安装位置的bin目录加入path参数即可)
先输入show master status\G; 查看一下,记下file和position的值
接着输入 grant replication slave on *.* to ‘slave’@’192.168.1.%’ identified by ‘123456’; (其中的’slave’为登录账号,’123456’为密码,’192.168.1.%’为从库的IP)这边ip使用了通配符,如果要精确可以使用完整的ip
2、从数据库配置
打开从数据库的配置文件my.ini,在[mysql的]后面添加代码:
log-bin=mysql-bin#slave会基于此log-bin来做replication
replicate-do-db=mytest#用于master-slave的具体数据库
看下有没有 server-id 参数,有的话改成 server-id=2(第二个从库就是 3 ,以此类推),没有就增加;
保存后启动从库的mysql服务,进入mysql的命令行,输入如下代码:
先停止它的slave:
stopslave;
再改变它的master:
change master to master_host=’192.168.1.11′,
master_port=3306,
master_user=’slave’,
master_password=’123456′,
master_log_file=’mysql-bin.000001′,
master_log_pos=0; //master_log_file和master_log_pos的值就是上面主数据库中记下来的file和position的值;如果还不清楚master_log_pos,可以填0;
再启动它的slave;
startslave;
然后再输入如下代码,检查是否成功:
showslave status\G;
看下如果下面的值是这样的就可以了
slave_io_running:yes
slave_sql_running:yes