两种方式实现读写分离
基于以下原因,我们会用读写分离:
1.写时锁表,会影响读
2.读写的压力达到单台数据库极限,使用多台来分摊压力.
主从参见:https://www.bilibili.com/video/BV1Q4411g7s1?from=search&seid=323994097297460924
以两种方式实现读写分离:
1.在项目代码中使用多数据源,指定当前请求线程使用的数据库进行读写分离.(缺点:当某台数据库宕机,无法检查)
2.使用mycat配置读写分离(优点多多)
参见:https://www.bilibili.com/video/BV1AJ411P7z6?p=9
一旦从库写入数据,与主库不一致,从库立即会停止Slave_SQL_Running,
解决方法
1.主库 show master status 查看信息
2.从库 先 stop slave,再执行change master to master_host='192.168.88.200',master_user='root', master_password='918428',master_port=3306,master_log_file='mysql-bin主库的',master_log_pos=主库的; 最后start slave
注意如果从库数据跟主库已经不一致当主库插入的id在从库中存在时,那么从库会报错该从库会立即停止Slave_SQL_Running. 所以在出现问题后无比先保证数据一致然后再处理.
也可以这样: 在slave上 set gblbal sql_slave_skip_counter=1; 然后重启slave;
下面是mycat读写分离步骤:
一.安装mysql主从
1.删除原mysql的所有信息,并安装: rpm -qa | grep mysql; rpm -e --nodeps mysql; yum remove mysql*; yum remove mysql mysql-server mysql-libs compat-mysql5.1; wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm; rpm -Uvh mysql57-community-release-el6-9.noarch.rpm; yum install mysql-community-server
2.检查是否成功; service mysqld start; service mysqld status;
3.查看root 密码 grep 'temporary password' /var/log/mysqld.log, 登录后修改密码
3.1.为方便密码验证设置下: set global validate_password_policy=0 set global validate_password_length=6
----------------------------------------主从搭建---------------------------------------------
4.配置主节点
4.1 /etc/my.cf文件添加server-id=1; log-bin=/var/lib/mysql/mysql-bin;
5.配置从节点 (注意如果是从虚拟机克隆过来的,/var/lib/mysql/auto.cnf文件需要改为不同)
5.1 /etc/my.cf文件添加server-id=2; relay-log=/var/lib/mysql/relay-bin(指定同步过来的log位置)
5.2 重启后执行
1.建立和主节点联系 change master to master_host='192.168.17.201',master_user='root',master_password='918428',master_log_file='mysql-bin.000001', master_log_pos=0;
注意master_log_file和master_log_pos要根据主节点填写
2.开启slave: 登录mysql执行start slave;
-------------------------------------------------------------------------------------------------
4.mycat 下载 http://www.mycat.org.cn/

浙公网安备 33010602011771号