先提前说一下我的配置,使用VMware虚拟机,安装了CentOS7.使用NAT模式。有一个master主机,一个slave这两个做主从复制,有一个Proxy主机,与master,slave做读写分离。我在我本地 /用户/system32/drivers/etc/hosts中配置了我的主机IP与主机名的映射
。
读写分离是在主从复制的基础上建立的。所有我们先来做主从复制。
主从复制
-
关闭两台主机防火墙
systemctl disable firewalld
systemctl stop firewalld
-
修改Master主机
修改master主机的IP以及hostname.
vim /etc/hostname 修改的hostname与你在hosts文件中配置的名字一样,用于方便ssh用主机名连接
vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改你的IP设置为静态IP
-
修改Master主机的my.cnf
vim /etc/my.cnf
[mysqld]
#port=3306
character-set-server=utf8
log-bin=/var/mysql/log/mysql-bin.log
server-id=1
-
创建/var/mysql/log目录
mysql-bin.log会自动生成。但是前边的目录是没有的我们需要自己创建目录
mkdir -p /var/mysql/log
-
修改/var/mysql目录的所有者
chown -R mysql:mysql ./mysql
-
重启Master的mysqld服务
systemctl restart mysql
-
修改Slave主机
修改他的主机名和IP地址这里就不在说了,和master一样。
-
修改Slave主机的my.cnf
[mysqld]
#port=3306
character-set-server=utf8
server-id=2
-
修改Slave主机中MySQL的UUID
UUID,通用唯一识别码
cat /var/lib/mysql/auto.cnf 我们发现master和slave的UUID是一样的。所有我们需要改变一台主机的UUID,把slave生成UUID的文件进行拷贝删除,重启时他会自动在生成不同的UUID
mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak
重启Slave的mysqld服务 systemctl restart mysql
-
Master授权Slave复制权限
登录Master的mysql mysql -uroot -p123456
授权 grant replication slave on *.* to 'root'@'192.168.181.135' identified by '123456';
重启Master的mysqld服务 systemctl restart mysqld
再次登录Master的mysql mysql -uroot -p123456
查看master状态 show master status;
-
Slave指定Master
登录Slave的mysql mysql -uroot -p123456
-
指定Master
mysql> change master to
-> master_host='192.168.181.135', master_user='root', master_password='123456',
-> master_log_file='mysql-bin.000006', master_log_pos=154;
重启Slave的mysqld服务 systemctl restart mysqld
登录Slave的mysql mysql -uroot -p123456
-
开启Slave
start slave;
-
查看Slave状态
登录MySQL,show slave status \G; 出现waiting for master to seng event 就代表成功啦。就可以连接虚拟机本地做测试了。
读写分离集群
-
配置Proxy主机
此主机无需mysql环境,所有克隆一台空白的主机就行了。然后进行主机名和IP地址的修改,与前边一样。
-
MySQL Proxy的安装
MySQL Proxy下载
在官网下载mysql proxy.官网没有centos的Proxy可以下载Red的,而且没有7这个版本。我们就用centos6这个版本。
你可以选择下载到本地然后通过 rz 上传到Linux上,也可以通过wget 下载地址 下载。
-
解压安装包
我的安装包都是放在 /usr/tools目录下的,解压到 /usr/apps下
tar mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/apps
-
创建软链接
ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz/ mysqlq-proxy
-
修改/etc/profile
修改profile文件,文件最后添加这两行配置
然后在重新加载配置文件 source /etc/profile
-
MySQL Proxy的配置
在/etc目录下,创建mysql-proxy.cnf文件
创建logs-file的目录 mkdir -p /usr/apps/mysql-proxy/logs
-
修改mysql-proxy.cnf的访问权限
我们可以看到现在mysql-proxy.cnf的权限是 -rw-r--r-- 读写 读 读 我们需要的对其有读写权限。而 rw 对应二进制为110 ,我们需要的权限是-rw-rw---- 对应的十进制为660 chmod 660 /etc/mysql-proxy.cnf
-
修改/usr/apps/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
-
启动mysql-proxy服务器
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
这就OK了,就可以连接虚拟机在本地进行测试了mysql -h192.168.181.144 -P4040 -uroot -p123456