十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一.mysql主从库与读写分离的实现理论
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站建设、外贸网站建设、长治网络推广、微信小程序定制开发、长治网络营销、长治企业策划、长治品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供长治建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
二.mysql配置
1.准备两台服务器安装mysql(也可以在一台中装两个mysql修改端口号避免冲突)
2.分别连接mysql
3.配置mysql
1.配置主库 monster
打开binary log
2.配置从库
主库授权
账号repl后面的是从库的ip地址 mysql是账号repl的密码
刷新
后面master_log_pos=0 表示从零开始同步 master_log_file 是上面SHOW MASTER STATUS 下面的file文件
在从库中开启主从跟踪
查看从库状态
从库中终止主从同步 stop slave
查看 my.cnf 文件 把 server -id=1 的字段删除 保留server-id=2 修改后保存 重启mysql 重新连接 开启主从同步start slave
查看从库状态 发现没有错误 到此主从同步配置已经完成.
在老版本的MySQL 3.22中,MySQL的单表限大小为4GB,当时的MySQL的存储引擎还是ISAM存储引擎。但是,当出现MyISAM存储引擎之后,也就是从MySQL 3.23开始,MySQL单表最大限制就已经扩大到了64PB了(官方文档显示)。也就是说,从目前的技术环境来看,MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定,而是由所在主机的OS上面的文件系统来决定了。\x0d\x0a\x0d\x0a而MySQL另外一个最流行的存储引擎之一Innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。\x0d\x0a当使用共享表空间存储方式的时候,Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所 以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单 表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。\x0d\x0a而当使用独享表空间来存放Innodb的表的时候,每个表的数据以一个单独的文件来存放,这个时候的单表限制,又变成文件系统的大小限制了。
转发到后端从库 读取。实现 主库负责--写入,从库负责--读取。
注意:Proxy其实不是一台机器,只是一个连接方式,读取数据的时候自动从Salve上取,写数据则自动向Master中写。
实验前先做好 主从架构
主---192.168.1.252 (mysql-5.7 ,三台版本一致)
从---192.168.1.101
proxy---192.168.1.102
vim /etc/mysql-proxy.cnf
内容如下:
注意:(在服务器上配置文件要把注释都去掉,不然会报错。)
保存退出。赋予660权限,不然会报错。
3.##修改读写配置文件
关闭可以用killall -9 mysql-proxy 或者kill -9 ID
在主执行:(事先做好主从架构,从库会自动吧这个操作更新过去,或者在手动去从库也执行一遍)
使用客户端去链接mysql-proxy(1.102)(开2个以上客户端链接)
接下来,测试数据。(主从都开启时,先添加一条数据)
此时如果停掉slave,在添加数据
stop slave;
发现并没有刚才添加的id为2的这条数据。
因为此时slave已经停掉了,没有负责给我们提供查询操作的服务了,所以查不到了。刚才可以写入,也是意味着 写入操作是有 master来完成的。
这时恢复slave,再查询
start slave;
这时2已经有了,恢复了slave后,先主从通信同步了刚才的数据,再继续提供查询操作。
到此,读写分离完成。
参考:
如果数据库中的数据已经很多(几百万条), 那么可以 加大mysql配置中的 bulk_insert_buffer_size,这个参数默认为8M
举例:bulk_insert_buffer_size=100M;
2、第二种mysql插入提速方法:
改写所有 insert into 语句为 insert delayed into
这个insert delayed不同之处在于:立即返回结果,后台进行处理插入。
这样mysql前后端分离就可以添加一条或者多条数据了