cent os搭载mysql读写分离

数据库拆分原则

1.优先使用缓存来降低数据库访问压力
2.缓存无法解决问题使用数据库读写分离
3.读写分离有瓶颈使用数据库业务垂直拆分,将不同业务数据分到不同库中
4.单表数据量过大使用数据库水平拆分,尽量控制每个表的数据量在1000万条内,可以使用取模等算法到相应数据库中找数据

运用场景

1.当数据库查询操作频繁地时候,为了减少库的压力将其划分为主库和从库集群,将访问压力平摊到各个库上。
2.在查询的时候往往要建立索引增加查询效率,但每次插入数据需要更新索引会影响数据库写入速度,所以进行读写划分可以减少主库索引提升写入效率的同事提高查询速度。
3.但读写分离只能减少访问压力,当数据量暴增时数据库的查询速度还是很慢,这时候就需要考虑分库分表了。
4.在写入多的情景下,不适用这种情况,因为压力还是在主库上
5.主库和从库之间数据的同步有一定延迟,可以在从库找不到时从主库找,或者使用延时
6.尽量不使用分布式事务,有事务的数据尽量都放在同一个库中

准备工作:安装并配置centos

1.采用国内的阿里云地址下载速度快http://mirrors.aliyun.com/centos/7/isos/x86_64/

2.虚拟机中安装系统

参考博客https://blog.csdn.net/babyxue/article/details/80970526
这里网络连接使用桥接模式,让虚拟机与主机的网络相互独立

3.虚拟机网络配置

由于centos默认不开启网卡,所以需要修改配置文件,让其启动。
参考博客https://blog.csdn.net/jcxch/article/details/48632761

4.配置超级用户权限

用户若没有sudo权限无法执行yum安装操作,配置过程参考
https://blog.csdn.net/u010865136/article/details/78062193

至此虚拟机安装成功,两台虚拟机安装过程一样,下面开始安装mysql服务。

一、分别给两台服务器安装mysql(参考https://blog.csdn.net/a774630093/article/details/79270080

1.检查系统是否装有mysql

rpm -qa | grep mysql

2.若返回空值,说明没安装mysql,需要自己安装

yum install mysql

3.下载mysql的repo源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

4.安装mysql-community-release-el7-5.noarch.rpm包

sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

问题:wget command not found
解决:

yum -y install wget

5.安装mysql

sudo yum install mysql-server

6.重置密码

mysql -uroot

问题:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:

chown root /var/lib/mysql/

7.重启服务

service mysqld restart

8.重置登录密码

mysql -u root -p
mysql > use mysql;
mysql > update user set password=password('123456') where user='root';
mysql > exit;

9.加入远程连接能力,用户名为root,密码为:123456

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";  

10.查询数据库编码格式为utf-8

show variables like "%char%";

如此导入数据库sql时要确保sql文件为utf8编码,进入mysql输入如下命令:

set names utf8;

二、修改防火墙让端口可让外部连接

1.开放端口让外部可连接

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

2.Navicat连接数据库


三、修改数据库配置文件,配置数据库主从复制(参考:https://www.cnblogs.com/zuge/p/6395369.html



1.分别进入两台服务器配置,进入配置文件,修改文件内容如下(两台server-id设置不同):

sudo vi /etc/my.cnf

2.重启mysql服务

service mysql restart

3.查看配置文件是否生效,看server_id是否相同

show variables like 'server_id';

4.查看master信息

show master status;

记录下file及position值,后面进行从服务器操作时要用到
5.配置从服务器,进入mysql后执行如下命令:

change master to
master _host='#主库地址'
master_user='root',
master_password='#用户密码',
master_log_file='#主库file值',
master_log_pos=#主库position值;

6.启动slave同步功能

start slave;

7.查看slave状态

show slave status\G

其中Slave_IO_Running与Slave_SQL_Running值都为yes,表明状态正常。
8.测试主从复制
1.主库上创建test数据库,从库中也增加此库

四、用mysql-proxy配置读写分离

场景描述:

数据库master主服务器:10.112.94.135
数据库slave从服务器:10.112.92.143
mysql-proxy代理服务器:192.168.19.1

以下操作是在mysql-proxy中执行的。

1.在window中安装mysql-proxy,下载地址:https://downloads.mysql.com/archives/proxy/

image.png

安装后目录如下:


image.png

2.在bin问价夹下创建mysql-proxy.conf文件,内容如下:

[mysql-proxy]
admin-username=root
admin-password=123456
admin-lua-script=#mysql-proxy安装目录/lib/mysql-proxy/lua/admin.lua
proxy-backend-addresses=10.112.94.135:3306
proxy-read-only-backend-addresses=10.112.92.143:3306
proxy-lua-script=#mysql-proxy安装目录/share/doc/mysql-proxy/rw-splitting.lua
log-file=#mysql-proxy安装目录/log/mysql-proxy.log
log-level=debug
daemon=true
keepalive=true

这里要保证目录下每个文件夹都存在否则有可能运行出错
内容含义:
admin-username:用于中间件连接的用户,这里我还是用root偷懒
admin-password:同上用户密码
admin-lua-script:根据存放的文件位置自行调整
proxy-backend-addresses:主库服务器+端口
proxy-read-only-backend-addresses:从库服务器+端口,多个从库用,隔开
proxy-lua-script:根据存放的文件位置自行调整
log-file:日志文件存放位置,如果你指定了一个路径,请确保手动创建了对应的文件夹,否则会报错
log-level:日志级别
daemon:以守护进程方式运行
keepalive:长连接

3.在安装文件的bin目录下创建文件install.bat,内容如下:

"#mysql-proxy安装目录/bin/mysql-proxy.exe" -P #代理服务器IP地址:6217 --defaults-file="#mysql-proxy安装目录/bin/mysql-proxy.conf"

6217端口可以自己指定,用于连接的时候使用
4.接下来,用你的客户端工具连接 192.168.19.1:6217

遇到的问题及解决办法:

本机网络不可用

解决:vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改:ONBOOT=no为ONBOOT=yes
重启:sudo service network restart

文件为只读

解决:将文件用:wq!保存

用户无法进入sudo 模式

解决:进入root模式修改 /etc/sudoers文件在"root ALL=(ALL) ALL"下加上“用户名 ALL=(ALL) ALL”

mkdir命令不可用


解决:添加完超级用户(具备超级管理员权限的用户)后用sudo获得超级管理员权限

参考资料

https://blog.csdn.net/babyxue/article/details/80970526
https://blog.csdn.net/jcxch/article/details/48632761
https://blog.csdn.net/u010865136/article/details/78062193
https://blog.csdn.net/a774630093/article/details/79270080
https://www.cnblogs.com/zuge/p/6395369.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351