整理mysql从,主主,读写分离笔记

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40195432/article/details/84934889

主从复制:
主库:
vim /etc/my.cnf
log-bin=/usr/local/mysql/data/mysqld.binlog 启动二进制日志文件
server_id=27 任意编辑一个id

service mysqld start 开启服务
mysql 进入mysql
grant replication slave on . rep@‘192.168.11.%’ identified by ‘111111’; 创建一个rep用户拥有主复制权限对192.168.11网段的所有机子

flush privileges; 刷新权限

备库:
mysql -h 192.168.11.6 -urep -p111111 测试能否连通

vim /etc/my.cnf
log-bin=/usr/local/mysql/data/mysqld.binlog
server_id=66 随意指定id但不能与主库相同

service mysqld start 开启服务
mysql 进入mysql 指定主库的数据
mysql> change master to
-> master_host=‘192.168.11.6’,
-> master_user=‘rep’,
-> master_password=‘111111’,
-> master_log_file=‘mysqld.000001’,
-> master_log_pos=120; 指定的值为show master status Position值

用show master status\G;查看主库的log_file 和log_pos的数据
show slave status\G;查看从库的
Slave_IO_Running: No
Slave_SQL_Running: No

然后start slave;
show slave status\G;查看
Slave_IO_Running: Yes
Slave_SQL_Running: Yes NO变为yes即开启了主从复制

若报uuid相同的错误,到/usrl/local/mysql/data/auto.cnf下将uuid修改或删除即可

测试:
在主库中创建一个新数据库或者一个表,观察从库是否更新的和主库一样

主主复制:
基于主从复制的基础上,让两台服务器交叉互指即可,如下操作
mysql1:192.168.11.6
mysql> reset master; 清零master
mysql> grant replication slave on .
-> to rep@‘192.168.11.%’ identified by ‘111111’;
mysql> flush privileges; 刷新权限
mysql> change master to
-> master_host=‘192.168.11.5’,
-> master_user=‘rep’,
-> master_password=‘111111’,
-> master_log_file=‘mysql-bin.000001’, show master status\G;查看
-> master_log_pos=0; show master status\G;查看
mysql> show slave status\G 查看是否为双yes

扫描二维码关注公众号,回复: 4443604 查看本文章

mysql2:192.168.11.5
mysql> reset master; 清零master
mysql> grant replication slave on .
-> to rep@‘192.168.11.%’ identified by ‘111111’;
mysql> flush privileges; 刷新权限
mysql> change master to
-> master_host=‘192.168.11.6’,
-> master_user=‘rep’,
-> master_password=‘111111’,
-> master_log_file=‘mysql-bin.000001’, show master status\G;查看
-> master_log_pos=0; show master status\G;查看
mysql> show slave status\G 查看是否为双yes

mysql1,mysql2 进行如下操作
mysql> slave start; 启动slave
mysql> show slave status\G 查看是否为双yes

主主复制达到的效果是在任何一台服务器上进行了增删改都会同步

读写分离:在建立好主从复制的基础上进行操作
基于中间代理层实现
代理一般是位于客户端和服务器之间, 代理服务器接到客户端请求后通过判断然后转发到后端数据库。目前主要有两个代表性程序:
mysql-proxy: mysql-proxy 为 MySQL 开源项目,通过其自带的 lua 脚本进行 SQL 判断,虽然是 MySQL 官方产品,但是 MySQL 官方并不建议将 mysql-proxy 用到生产环境。

amoeba: 由陈思儒开发,作者曾就职于阿里巴巴,现就职于盛大。该程序由 java 语言进行开发,目前只听说阿里巴巴将其用于生产环境。另外,此项目严重缺少维护和推广。

先开启四台服务器:两台做主从,一台做中继,一台做客户端,主从中继分别创建一个可以供所有网段登录的bbs用户,然后主从分别登录自己账户,中继不需要数据库,客户端登录指定ip地址为中继ip,详细操作如下

相当与由bbs这个账户为桥接链接起来了主库从库和中继服务器的关系

先在主和从的vim /etc/my.cnf里加入日志文件路径
【mysql】
general_log=on 开启日志文件
general_log_file=/tmp/mysql.log 添加日志文件的路径

打开日志文件路径的方法:tail -f /tmp/mysql.log
打开日志文件主要是为了更明了观察读写分离是否如中继服务器指定的读服务器和写服务器进行相对应操作

安装中继mysql proxy
service mysqld stop 先停掉mysqld服务
rpm -qa |grep lua
lua-5.1.4-4.1.el6.x86_64

#tar xf mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz -C /usr/local/ 解包

#cd /usr/local/

#ln -s mysql-proxy-0.8.4-linux-el6-x86-64bit mysql-proxy 增加软链接

#vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua 修改如下内容
min_idle_connections = 1,
max_idle_connections = 1,

#ulimit -n 10240 指定打开最大的文件数

#/usr/local/mysql-proxy/bin/mysql-proxy -P 192.168.11.7:3306 -b 192.168.11.6:3306 -r 192.168.11.5:3306 -s /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon

-P 指定proxy服务器工作的地址和端口
-b 指定写服务器的地址和端口
-r 指定读服务器的地址和端口
-s 指定判断的脚本
–daemon 以后台进程的方式启动

启动成功会有以下提示:
2014-02-13 17:15:54: (critical) plugin proxy 0.8.4 started

netstat -tnlp |grep :3306 查看进程

vim /etc/rc.local 写入开机启动文件
ulimit -n 10240
/usr/local/mysql-proxy/bin/mysql-proxy -P 192.168.11.7:3306 -b 192.168.11.6:3306 -r 192.168.11.5:3306 -s /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon

主库从库中继三台服务器分别进行如下操作:
mysql 进入mysql
mysql> grant ALL on . to bbs@‘192.168.11.%’ identified by ‘111111’;
mysql> flush privileges;

从库stop slave; 断掉和主库的链接以便观察读写分离实验

在客户端登录mysql -h192.168.11.7 -ubbs -p111111 指定中继服务器ip登录
登录进入之后 进行创建库操作和进入库查看数据操作
分别打开主库和从库的日志文件查看是否做到了读写分离

猜你喜欢

转载自blog.csdn.net/qq_40195432/article/details/84934889
今日推荐