MySql主从复制配置

*本文档服务器默认选择centos 7.0 mysql5.6 mysql-proxy0.8.5
主机服务器:192.168.162.195
从机服务器:192.168.162.197
代理服务器:192.168.162.198

一、主从配置

1、 分别在主机服务器和从机服务器安装mysql。分别配置成服务(详见mysql服务配置)。

2、 在主机设置:

A. systemctl status mysqld查看mysql运行状态。

B. 打开mysql的配置文件 vi /etc/my.cnf 如下显示:
在这里插入图片描述
在mysqld空白处添加以下设置

server-id=100   #主机服务器id
log-bin=mysql-bin #log日志存储文件
binlog-format=mixed

修改后如下显示:
在这里插入图片描述
C. 重启mysql。

Systemctl restart mysql;

D. 进入mysql。

Mysql –uroot –proot;

创建从库用户及权限:代码如下

创建用户,用户名为(repl,可以自己随便写)create user repl;

赋予权限Grant Replication Slave On *.* To ‘repl’@’192.168.%.%’ Identified By '123456';

By后面为你设置的密码,可以自己随便设置。@后面是你赋予权限的ip地址

显示下设置有没有成功,Select user,host From mysql.user如下:
在这里插入图片描述

表示设置从库用户成功。

E. 显示主库的运行状态,show master status\G;如下:
在这里插入图片描述

*记住红框内的file文件

3、 在从机中设置:

A. 在命令行尝试以复制用户repl连接主库中的mysql;

Mysql –urepl –p123456 –h192.168.162.195;
如果报以下错误:ERROR 2003 (HY000): Can't connect to MySQL server on 
'192.168.162.195' (113),请检查主机中的防火墙设置。

B. 修改配置文件,vi /etc/my.cnf 如下:
在这里插入图片描述

并,重启mysql服务(systemctl restart mysql)。

C. 进入从机中的mysql;mysql –uroot -proot

D. 设置所要连接主库的连接信息

Change master to master_host=’192.168.162.195’,//主机ip
Master_port=3306,//主机mysql 端口号
Master_password=’300222’,//主机设置的密码
Master_user=’repl’,//主机设置的从库用户
Master_log_file=’log_bin.000003’,//主机中show master status中的file文件
Master_log_pos=0;

E. 启动从库start slave;

*可能会报错:ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository。解决方案,reset slave all.重复步骤D即可。

F.查看从库状态,show slave status\G;如下显示:
在这里插入图片描述
如果发现IO_RUNNINT:YES,SQL_RUNNING:YES.表示配置成功。如果不成功则去看后面报的错误是什么,然后度娘。

二、mysql proxy实现mysql的读写分离

进入cd /opt/install

1、安装必要的指令

yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*  libevent* glib* readline-devel 

2、安装lua运行环境。

下载wget http://www.lua.org/ftp/lua-5.1.4.tar.gz 
解压相对应的lua  :tar –zxvf lua.*
进入lua: cd lua*
Make linux(如果出现lua.c:67:31: fatal error: readline/readline.h: No such file or directory)说明缺少依赖的包:yum install –y libreadline-dev
Make install
设置环境变量:
export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"

3、下载mysql-proxy 对应到响应的服务器配置。到官网下载

解压mysql-proxy 到 /opt/mysql-proxy目录下。
进入/opt/mysql-proxy下
创建脚本目录 mkdir lua
创建日志目录 mkdir log
cp share/doc/mysql-proxy/rw-splitting.lua ./lua
cp share/doc/mysql-proxy/admin-sql ./lua

创建配置文件:vi /etc/mysql-proxy.cnf
[mysql-proxy]
user=root
admin-username=proxy
admin-password=300222
proxy-address=192.168.162.198:4001
proxy-read-only-backend-addresses=192.168.162.197:3306
proxy-backend-addresses=192.168.162.195:3306
proxy-lua-script=/opt/mysql-proxy/lua/rw-splitting.lua

admin-lua-script=/opt/mysql-proxy/lua/admin-sql.lua

log-file=/opt/mysql-proxy/log/mysql-proxy.log

设置权限:chmod 660 /etc/mysql-proxy.cnf

修改配置文件
vim /usr/local/mysql-proxy/lua/rw-splitting.lua
if not proxy.global.config.rwsplit then
 proxy.global.config.rwsplit = {
	min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1
	max_idle_connections = 1, #默认8,改为1
	is_debug = false
 }
End

配置mysql-proxy成为服务:

[Unit]

[Install]
Alias=mysql-proxy.service

[Service]
User=root
Group=root

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Needed to create system tables etc.
#ExecStartPre=/opt/mysql-proxy/bin/mysql-proxy-systemd-start pre

# Start main service
ExecStart=/opt/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

# Don't signal startup success before a ping works
#ExecStartPost=/opt/mysql-proxy/bin/mysql-proxy-systemd-start post

# Give up if ping don't get an answer
TimeoutSec=600

Restart=always
PrivateTmp=false

完成配置。

4、 测试。

到主机上授权代理用户使用权限

grant on *.* To ‘proxy’@’192.168.162.198’ Identified By ‘300222’;

第一步,到从机中验证是否有该权限:

select user,host from mysql.user;

第二步,到代理服务器上,分别测试是否能够访问主机和从机:

Mysql –uproxy –h192.168.162.195 –p300222;
Mysql –uproxy –h192.168.162.197 –p300222;

登录代理客户端:

mysql –uproxy -h192.168.162.198 –P4001 –p300376
Create database litest;
Use lit;
Create table tbUser(Id Int unsigned auto_Increment,name varchar(20),age Int);
Insert into tbUser(name,age) values(“lisi”,20);

然后进入从机,
关闭slave;

stop slave;

再进入代理;

select * from litest.tbUser;为null;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值