mysql数据库设计

半同步复制

主库

1.select @@have_dynamic_loading;
半同步复制通过使用插件来实现,插件安装成功后,通过使用与其相关的系统变量来控制它。使用半同步复制,需要满足下面的条件:
MySQL 5.5或以上版本;
MySQL服务器支持动态加载插件的能力,可通过have_dynamic_loading来判断;
复制必须已经工作;
不能配置多个复制通道,半同步复制只与默认的复制通道兼容;
在这里插入图片描述

这样表示成功
2.安装对应的插件
install plugin rpl_semi_sync_master soname ‘semisync_master.so’;
执行show plugins;
在这里插入图片描述
出现了你安装的插件表示成功

  1. show variables like ‘%semi%’;查看你安装的插件属性
    在这里插入图片描述
    在执行set global rpl_semi_sync_master_enabled=1;就可开启半同步复制了

从库
从库也是一样
1.检查插件
show plugins
2.安装插件
install plugin rpl_semi_sync_slave soname ‘semisync_slave.so’;
3.修改插件属性
show variables like ‘%semi%’;
set global rpl_semi_sync_slave_enabled=1;
4.重启slave
stop slave
start slave
5.最后可以修改主库,查看从库是否根据主库变化

并行复制

从库
1.修改配置文件
vim /etc/my.cnf
在这里插入图片描述
添加这几条数据
注意:你可以通过show variables like的形式查找配置文件里的响应配置信息进行修改,但是会出现权限不够,或者重启启动systemctl restart mysqld的之后会还原成原来的形式,所以用上述方法进行修改

2.重启systemctl restart mysqld
执行
show variables like ‘%slave%’;
show variables like ‘%relay_log%’;
查看是否修改成功
3.修改主库,查看从库是否改变

MySQL读写分离实战

1.下载压缩包mysql-proxy-0.8.5-linux-el6-x86-64bit.tar
链接:https://pan.baidu.com/s/1cB4OCws1BRHAwneK3vc2RA
提取码:b6rx
2.解压压缩包到/var/lib上面: tar -xvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar
进入到/var/lib
cp my.cnf mysql-proxy.cnf

在这里插入图片描述

把mysql-proxy.cnf里面都清空,按照下面的格式写上

user=root --使用者
admin-username=root —当前运行mysql主从用户名
admin-password=245354 —当前运行mysql主从用户密码
proxy-address=192.168.125.130:4040 —从库服务器地址
proxy-backend-addresses=192.168.125.155:3306 —主库服务器地址
proxy-read-only-backend-addresses=192.168.125.129:3306 —代理服务器地址
proxy-lua-script=/var/lib/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua —执行的文件
log-file=/var/log/mysql-proxy.log —输出的日志
log-level=debug —debug形式
daemon=true --守护进程方式运行代理
keepalive=true —遇到问题尝试重启

在这里插入图片描述

3.修改运行条件vim /var/lib/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua

在这里插入图片描述
箭头指的是最小连接数为1
最大连接数为8
的时候才能运行
4.运行proxy
cd /var/lib/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit/bin
./mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
5.在可以远程操作

在这里插入图片描述

端口号为上面配置的端口号4040
地址是代理的地址也就是proxy-read-only-backend-addresses=192.168.125.129:3306 —代理服务器地址

6.杀死代理mysql服务器可用
killall mysql-proxy

双主单写

其实就是两个master主库可以互为对方的slave和master
1.在master上面添加下面的数据,其中开启relay_log中继log,根据中继log执行事务写入本数据库。
sync_binlog:每次与磁盘同步一次
auto_increment_offset=1
auto_increment_increment=2
这两句是主键id从1开始,每次增加2,防止下一个主库增加数据是产生id冲突
在这里插入图片描述
2.重启mysql,systemctl restart mysqld
mysql -uroot -p123456
这个是对方库执行show master status;后根据下面图片对应
在这里插入图片描述

change master to master_host=‘192.168.125.133’,master_port=3306,master_user=‘root’,master_password=‘245354’,master_log_file=‘mysql-bin.000004’,master_log_pos=154;
start slave;
show slave status\G:查看是否成功
另一个master也是这么操作
注意问题:
1.ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
出现这个问题可以执行
reset slave;
master_host=‘192.168.125.133’,master_port=3306,master_user=‘root’,master_password=‘245354’,master_log_file=‘mysql-bin.000004’,master_log_pos=154;
start slave;
即可
原因是之前有过slave执行的备份实例,删除疾苦
slave reset执行候做了这样几件事:
1、删除slave_master_info ,slave_relay_log_info两个表中数据;
2、删除所有relay log文件,并重新创建新的relay log文件;
3、不会改变gtid_executed 或者 gtid_purged的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sun_lianShuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值