搭建数据库集群,主从复制,读写分离

一、这段时间因为公司系统经常卡死,原因是因为出现死锁或者同一资源访问时间过长,其他请求等待时间过长的情况,所以公司打算把数据库改成一主一从,可读写分离;

之前对这一块无任何经验,只是听说过,数据库集群已是相当成熟的技术了;

虽然这么说但是在自己实践的过程中,还是遇到好多配置不知道是怎么回事儿,还是踩到好多坑;前前后后耽误好些时间,唉说出来都有些脸红了;

下面就先列出踩得那些坑,几点注意事项和几点疑惑:

一、主从数据库名称必须一样,否则:

1.无法进行主从复制;

主从复制可通过配置文件解决;

2.无法进行读写分离;

当启动中间件后,数据库中没有数据,只有表没有数据(这里猜测,中间件读取的是从数据库的数据);

二、主从数据库做主从配置时候,数据必须完全相同,否则:

1.当在主数据库中有操作到从数据库中没有的数据时,主从配置就会报错,并且失效,更麻烦的是还得重新配置主从;

2.备份数据库时候必须转储为sql文件,因为只有sql文件还原时主从复制才会生效,而使用备份在主数据库还原时,从数据库没有数据;

下面写上步骤:

一、修改主从数据库的配置文件my.ini

主服务器:

[mysqld]
log-bin=mysql-bin //打开二进制功能,MASTER主服务器必须打开此项

server-id=1
binlog-do-db=ceshi_test  //指定同步某个数据库

从服务器:

log-bin=mysql-bin 
server-id=2

重启服务器;

二、主服务器上创建同步数据的账户并授权

搭建数据库集群,主从复制,读写分离

GRANT REPLICATION SLAVE ON *.* TO 'ABC'@'192.168.2.39' IDENTIFIED by 'slave';

允许其他Slave服务器可以通过远程192.168.2.39访问Master,通过用户ABC读取二进制日志,实现数据同步

参数说明:

                                  *.*  :表示对所有表的所有操作

                                  ABC:slave连接master使用的账号

                                  IDENTIFIED BY 'admin' :slave连接master使用的密码

                                  192.168.2.39:slave IP

搭建数据库集群,主从复制,读写分离

可以看到主数据库上已经创建了用户abc

mysql>flush privileges; //刷新系统权限表

三,查询主数据库的位置信息

mysql>show master status;

搭建数据库集群,主从复制,读写分离

此处的二进制文件名和位置信息在配置从服务器的时候用到;

四、配置从服务器信息;

进入从数据库命令行或者Navicat连接执行此语句;

连接Master

change master to master_host='192.168.2.39', //Master 服务器Ip
master_port=3306,
master_user='abc',
master_password='mysql', 
master_log_file='master-bin.000001',//Master服务器产生的日志
master_log_pos=0;

mysql>start slave;

到此,主从同步已经配置完成;

监测一下主从是否可用

mysql>show slave master\G

持续更新完善中。。。。。。。。