Mycat+mariadb集群
1.删除原有的mariadb数据库
[root@server1~]# find -H /etc/ | grep my.c
查找属于数据库的文件文件
[root@server1~]# rm -rf /etc/my.cnf /etc/my.cnf.d/
删除对应的配置文件
[root@server1~]# find -H /etc/ | grep my.c
再次查看默认数据库配置文件
[root@server1 ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
卸载文件
2.安装mariadb
[root@server1 ~]# getent shadow mysql
[root@server1 ~]# getent gshadow mysql
创建属主和属组的权限
[root@server1 ~]# rz
上传压缩包
[root@server1 ~]# mkdir /home/cries
[root@server1 ~]# mkdir /home/cries/dbdata
创建目录
[root@server1 ~]# tar -zxf mariadb-10.2.14-linux-x86_64.tar.gz -C /home/cries/
解压文件到指定目录
[root@server1 ~]# cd /home/cries/
进入目录
[root@server1 cries]# mv mariadb-10.2.14-linux-x86_64/ mysql
给目录改名
[root@server1 cries]# chown -R root:mysql /home/cries/mysql/
更改属主和属组权限
[root@server1 cries]# mkdir /etc/mysql
创建目录
[root@server1 cries]# cp /home/cries/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf
复制配置文件
[root@server1 cries]# vim /etc/mysql/my.cnf
basedir = /home/cries/mysql(这行配置要放在最上面)
innodb_file_per_table= on
skip_name_resolve= on
datadir = /home/cries/dbdata
socket = /var/lib/mysql/mysql.sock
修改配置文件
[root@server1cries]# cd mysql/
进入mysql
[root@server1 mysql]# ./scripts/mysql_install_db --datadir=/home/cries/dbdata
–basedir=/home/cries/mysql --user=mysql
创建数据库文件
[root@server1 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
复制启动脚本
[root@server1 mysql]# service mysqld restart
启动mysql
[root@server1 mysql]# vim /etc/profile.d/mysql.sh
export PATH=/home/cries/mysql/bin:$PATH
单独指定一个路径来修改环境变量
[root@server1 mysql]# . /etc/profile.d/mysql.sh
运行脚本
[root@server1 ~]# systemctl restart mysqld
重启数据库
[root@server1 ~]# mysql_secure_installation
初始化数据库
[root@server1]#chkconfig --add mysqld
配置开机自启
集群的搭建
- 做数据库的双主双从
Server1
[root@server1pssh-2.3.1]# vim /etc/mysql/my.cnf
[mysqld]
server-id= 1 #复制集群中的各节点的id均必须唯一;
relay-log= relay-log #开启中继日志;
log-bin= master-log #开启二进制日志,因为每一台slave都可能会变成master;
read_only= ON #开启只读权限;
relay_log_purge= 0 #是否自动清空不再需要的中继日志;
skip_name_resolve= ON #不进行域名解析
log-slave-updates=true
auto_increment_increment=2 #
使用偶数值值主键 2开始每次+2就是偶数 数据库主1和主2不要相同
auto_increment_offset=2 #自动增长的起始数值
编辑数据库配置文件
[root@server1pssh-2.3.1]# systemctl restart mysqld
重启数据库
[root@server1pssh-2.3.1]# mysql -uroot -p111111
进入数据库
MariaDB[(none)]> grant all on . to wangyu@‘192.168.11.%’ identified by ‘111111’;
给数据库配置权限。让192.168.11.的所有ip通过wangyu的用户111111密码进行访问数据库。
MariaDB[(none)]> flush privileges;
使刚添加的权限立即生效
MariaDB[(none)]> show master status ;
Server2
[root@server2~]# vim /etc/mysql/my.cnf
server-id= 2 #复制集群中的各节点的id均必须唯一;
relay-log= relay-log #开启中继日志;
log-bin= master-log #开启二进制日志,因为每一台slave都可能会变成master;
read_only= ON #开启只读权限;
relay_log_purge= 0 #是否自动清空不再需要的中继日志;
skip_name_resolve= ON #不进行域名解析
log-slave-updates=on
auto_increment_increment=2 #
使用偶数值值主键 2开始每次+2就是偶数
auto_increment_offset=2 #自动增长的起始数值
编辑数据库配置文件
[root@server3~]# systemctl restart mysqld
重启数据库
[root@server2~]# mysql -uroot -p111111
进入数据库
MariaDB[(none)]> stop slave ;
关闭中继日志
MariaDB[(none)]> change master to
master_host=‘192.168.11.102’,master_user=‘wangyu’,master_password=‘111111’,master_log_file=‘mysql-bin.000006’,master_log_pos=342;
编辑中继日志配置于server1数据库进行同步
MariaDB[(none)]> start slave ;
开启中继日志
MariaDB[(none)]> show slave status \G;
查看是否编辑成功(如果俩yes就对了)
Server3
[root@server3~]# vim /etc/mysql/my.cnf
server-id= 3 #复制集群中的各节点的id均必须唯一;relay-log= relay-log #开启中继日志;
log-bin= master-log #开启二进制日志,因为每一台slave都可能会变成master;
read_only= ON #开启只读权限;
relay_log_purge= 0 #是否自动清空不再需要的中继日志;
skip_name_resolve= ON #不进行域名解析
log-slave-updates=on
auto_increment_increment=2 # 使用偶数值值主键 2开始每次+2就是偶数
auto_increment_offset=2
编辑数据库配置文件
[root@server3~]# systemctl restart mysqld
重启数据库
[root@server2~]# mysql -uroot -p111111
进入数据库
MariaDB[(none)]> stop slave ;
关闭中继日志
MariaDB[(none)]> change master to
master_host=‘192.168.11.102’,master_user=‘wangyu’,master_password=‘111111’,master_log_file=‘mysql-bin.000006’,master_log_pos=342;
编辑中继日志配置于数据库server1进行同步
MariaDB[(none)]> start slave ;
开启中继日志
MariaDB[(none)]> show slave status \G;
查看是否连接成功(俩yes就对了)
Server4
[root@server4~]# vim /etc/mysql/my.cnf
server-id= 4 #复制集群中的各节点的id均必须唯一;
relay-log= relay-log #开启中继日志;
log-bin= master-log #开启二进制日志,因为每一台slave都可能会变成master;
read_only= ON #开启只读权限;
relay_log_purge= 0 #是否自动清空不再需要的中继日志;
skip_name_resolve= ON #不进行域名解析
log-slave-updates=on true
auto_increment_increment=4 #
使用偶数值值主键 2开始每次+2就是偶数
auto_increment_offset=2
编辑数据库配置文件
[root@server4~]# systemctl restart mysqld
重启数据库
[root@server4~]# mysql -uroot -p111111
进入数据库
MariaDB[(none)]> grant all on . to wangyu@‘192.168.11.%’ identified by ‘111111’;
给数据库配置权限。让192.168.11.的所有ip通过wangyu的用户111111密码进行访问数据库。
MariaDB[(none)]> flush privileges;
刷新权限
MariaDB[(none)]> show master status ;
查看数据库开起的二进制id
MariaDB[(none)]> stop slave ;
关闭中继日志
MariaDB[(none)]> change master to
master_host=‘192.168.11.102’,master_user=‘wangyu’,master_password=‘111111’,master_log_file=‘mysql-bin.000006’,master_log_pos=342;
对中继日志进行配置让他于server1进行同步
MariaDB[(none)]> start slave ;
开启中继日志
MariaDB[(none)]> show slave status \G;
查看两台数据库是否同步(双yes就是同步)
Servier5
[root@server5~]# vim /etc/mysql/my.cnf
server-id= 5 #复制集群中的各节点的id均必须唯一;
relay-log= relay-log #开启中继日志;
log-bin= master-log #开启二进制日志,因为每一台slave都可能会变成master;
read_only= ON #开启只读权限;
relay_log_purge= 0 #是否自动清空不再需要的中继日志;
skip_name_resolve= ON #不进行域名解析
log-slave-updates=on true
auto_increment_increment=4 # 使用偶数值值主键 2开始每次+2就是偶数
auto_increment_offset=2
编辑数据库配置文件
[root@server5~]# systemctl restart mysqld
重启数据库
MariaDB[(none)]> stop slave ;
关闭中继日志
MariaDB[(none)]> change master to
master_host=‘192.168.11.120’,master_user=‘wangyu’,master_password=‘111111’,master_log_file=‘mysql-bin.000005’,master_log_pos=358;
配置中继日志于server4数据库进行同步
MariaDB[(none)]> start slave ;
开启中继日志
MariaDB[(none)]> show slave status \G;
查看数据库是否同步(双yes就是同步成功)
Server6
[root@localhost ~]# vim wangyu.sh
erver-id= 6 #复制集群中的各节点的id均必须唯一;
relay-log= relay-log #开启中继日志;
log-bin= master-log #开启二进制日志,因为每一台slave都可能会变成master;
read_only= ON #开启只读权限;
relay_log_purge= 0 #是否自动清空不再需要的中继日志;
skip_name_resolve= ON #不进行域名解析
log-slave-updates=on true
auto_increment_increment=2 # 使用偶数值值主键 2开始每次+2就是偶数
auto_increment_offset=2 #自动增长的起始数值
编辑数据库配置文件
[root@server6~]# systemctl restart mysqld
重启数据库
[root@server6~]# mysql -uroot -p111111
进入数据库
MariaDB[(none)]> stop slave ;
关闭中继日志
MariaDB[(none)]> change master to master_host=‘192.168.11.120’,master_user=‘wangyu’,master_password=‘111111’,master_log_file=‘mysql-bin.000005’,master_log_pos=358;
配置中继日志于server4数据库进行同步
MariaDB[(none)]> start slave ;
开启中继日志
MariaDB[(none)]> show slave status \G;
查看中继日志数据库是否同步(俩yes就对了)
Server1
MariaDB[(none)]> stop slave ;
关闭中继日志
MariaDB[(none)]> change master to
master_host=‘192.168.11.120’,master_user=‘wangyu’,master_password=‘111111’,master_log_file=‘mysql-bin.000005’,master_log_pos=358;
编辑中继日志配置于server4进行同步
MariaDB[(none)]> start slave ;
开启中继日志
MariaDB[(none)]> show slave status \G;
查看中继日志是否同步成功
测试数据库是否同步
8.测试数据库是否同步
MariaDB[(none)]> create database wangyu;
创建一个wangyu的数据库
MariaDB[(none)]> use wangyu;
进入wangyu的数据库
MariaDB[wangyu]> create table wang(id int );
创建一个wang的数据表
MariaDB[wangyu]> insert into wang values(10);
给wang的表里插入一条信息为10的数据
MariaDB[wangyu]> select * from wang;
在本地查看数据
Server2
Server3
Server4
Server5
Server6
测试完成所有数据库完成同步
Mycat1
Server3
[root@server3~]# mkdir /home/cries/soft
[root@server3~]# cd /home/cries/soft/
[root@server3soft]# rz
创建一个目录。进入目录。把1.8的jdk包传输进去
[root@server3soft]# rpm -ivh jdk-8u20-linux-x64.rpm
解压jdk安装包
[root@server3soft]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_20/
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
添加环境变量
[root@server3soft]# source /etc/profile
使刚添加的环境变量立即生效
[root@server3soft]# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
下载mycat安装包
[root@server3soft]# tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /home/cries/
解压安装包到/Home/cries目录
[root@server3mycat]# cd /home/cries/mycat/conf/
进入目录/home/cries/mycat/conf/
[root@server3conf]# cp server.xml server.xml.bak
[root@server3conf]# cp schema.xml schema.xml.bak
给两个配置文件做备份
[root@server3conf]# vim server.xml
修改配置文件
[root@server3bin]# vim /home/cries/mycat/conf/schema.xml
修改配置文件(这个配置没有配置分区)
[root@server3bin]# cd /home/cries/mycat/bin/
[root@server3bin]# ./mycat restart
进入数据库启动mycat
[root@server3bin]# mysql -uwangyu -p111111 -P9066 -h192.168.11.208
通过9066管理端口登陆
MySQL[(none)]> show @@datasource;
查看数据库的连接情况
Mycat2
Server6
[root@server6~]# mkdir /home/cries/soft
[root@server6~]# cd /home/cries/soft/
创建并进入目录
[root@server6soft]# rz
上传jdk安装包
[root@server6soft]# rpm -ivh jdk-8u20-linux-x64.rp
安装jdk
[root@server6soft]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_20/
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export
PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
编辑环境变量
[root@server6soft]# source /etc/profile
使环境变量立即生效
[root@server6soft]# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
下载mycat安装包
[root@server6soft]# tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C
/home/cries/
安装mycat
[root@server6soft]# cd /home/cries/mycat/conf/
[root@server6conf]# cp server.xml server.xml.bak
[root@server6conf]# cp schema.xml schema.xml.bak
进入目录备份配置文件
[root@server6conf]# vim server.xml
编辑配置文件
[root@server6conf]# vim schema.xml
编辑配置文件
[root@server6conf]# cd /home/cries/mycat/bin/
[root@server6bin]# ./mycat restart
进入目录对mycat进行重启
[root@server6bin]# mysql -uwangyu -p111111 -P9066 -h192.168.11.54
从管理端口进入mycat数据库
Mycat+keepalived
Server3
[root@server3bin]# yum -y install keepalived
安装keepalived
[root@server3bin]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
备份配置文件
[root@server3bin]# vim /etc/keepalived/keepalived.conf
修改keepalived配置文件
[root@server3 bin]#systemctl restart keepalived
重启keepalived
[root@server3 bin]# ip addr show ens160
查看是否产生虚ip(红框中的192.168.11.100就是虚ip)
[root@server3bin]# vim /home/cries/keepalived.sh
#!/bin/bash
while ((1))
do
ps=$(ps -aux | grep mycat |wc -l)
if [ $ps -le 1 ];then
echo "$ps"
systemctl stop keepalived
echo "关闭keepalived"
exit 1
else
echo "mycat正常"
echo "$ps"
fi
sleep 1
done
创建keepalived的监控脚本
[root@server3 bin]# chmod 755 /home/cries/keepalived.sh
给脚本执行权限
[root@server3bin]# nohup /home/cries/keepalived.sh &
后台运行脚本
[root@server3bin]# ps -aux | grep keepalived.sh
查看脚本进程
Server6
[root@server6bin]# yum -y install keepalived
安装keepalived
[root@server6bin]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
备份配置文件
[root@server6bin]# vim /etc/keepalived/keepalived.conf
修改keepalived配置文件
[root@server6bin]# systemctl restart keepalived
启动keepalived
[root@server6 bin]# vim /home/cries/keepalived.sh
#!/bin/bash
while((1))
do
ps=$(ps -aux | grep mycat |wc -l)
if [ $ps -le 1 ];then
echo "$ps"
systemctl stop keepalived
echo "关闭keepalived"
exit 1
else
echo "mycat正常"
echo "$ps"
fi
sleep 1
done
创建keepalived的监控脚本
[root@server6bin]# chmod 755 /home/cries/keepalived.sh
给脚本执行权限
[root@server6 bin]# nohup /home/cries/keepalived.sh &
后台运行脚本
[root@server6 bin]# ps -aux | grep keepalived.sh
查看脚本进程
测试
[root@server1~]# mysql -uwangyu -p111111 -P8066 -h192.168.11.100 -e “select * from
wangyu.wang;”
在服务器server1上访问数据库
[root@server3bin]# ./mycat stop
在服务区server3上关闭mycat(模仿mycat1挂了)
[root@server1~]# mysql -uwangyu -p111111 -P8066 -h192.168.11.100 -e “select * from
wangyu.wang;”
再在server1上进行访问,不会对访问造成影响