基础环境
关闭防火墙selinux
systemctl stop firewalld
setenforce 0
(1)修改主机名
# hostnamectl set-hostname db1
# hostnamectl set-hostname db2
# hostnamectl set-hostname mycat
(2)修改主机映射文件
[root@db1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.33 db1
192.168.200.44 db2
192.168.200.55 mycat
(3)配置yum源
[root@db1 ~]# cat /etc/yum.repos.d/local.repo
[mariadb]
name=mariadb
baseurl=file:///opt/gpmall-repo
gpgcheck=0
enabled=1
[centos]
name=centos
baseurl=file:///opt/centos
enabled=1
gpgcheck=0
mycat节点
1.安装java环境
# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
2.关闭防火墙
iptables -F
iptables -X
iptables -Z
iptables-save
db1和db2节点安装mariadb服务
# yum install mariadb mariadb-server -y
# systemctl start mariadb && systemctl enable mariadb
初始化mariadb数据库并设置密码123456
# mysql_secure_installation
配置主节点db1虚拟机的数据库配置文件my.cnf
# vi /etc/my.cnf
[mysqld]
log_bin = mysql-bin #记录操作日志
binlog_ignore_db = mysql #不同步 MySQL 系统数据库
server_id = 18 #数据库集群中的每个节点 id 都要不同,一
般使用 IP 地址的最后段的数字,例如 172.16.51.18,server_id 就写 18
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
重启服务
systemctl restart mariadb
开放主节点db1的数据库权限
在主节点 db1 虚拟机上使用 mysql 命令登录 MariaDB 数据库,授权在任何客户端机器上
可以以 root 用户登录到数据库。
# mysql -uroot -p123456
grant all privileges on *.* to root@'%' identified by "123456";
在主节点 db1 数据库上创建一个 user 用户让从节点 db2 连接,并赋予从节点同步主节点
数据库的权限,命令如下:
grant replication slave on *.* to 'user'@'db2' identified by '123456';
配置从节点db2同步主节点db1
# mysql -uroot -p123456
change master to
master_host='db1',master_user='user',master_password='123456';
配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用 show slave status\G; 命 令并查看从节点服务状态,如果 Slave_IO_Running 和 Slave_SQL_Running 的状态都为 YES,从节点服务开启成功。
start slave;
show slave status\G;
验证主从数据库的同步功能
db1的数据库
create database test;
use test
create table company(id int not null primary key,name varchar(50),addr
varchar(255));
insert into company values(1,"facebook","usa");
db2数据库验证
show databases;
select * from test.company;
mycat节点读写分离中间件
安装 Mycat 服务
# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C
/usr/local/
赋予目录权限
# chown -R 777 /usr/local/mycat/
在/etc/profile 系统变量文件中添加 Mycat 服务的系统变量,并生效变量。
# echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile
# source /etc/profile
[root@mycat ~]# cat /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100"
dataNode="dn1"></schema>
<dataNode name="dn1" dataHost="localhost1" database="test" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql"
dbDriver="native" writeType="0" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="172.16.51.18:3306" user="root" password="123456">
<readHost host="hostS1" url="172.16.51.30:3306" user="root" password="123456"/>
</writeHost>
</dataHost>
</mycat:schema>
[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml
**编辑 mycat 的访问用户 修改/usr/local/mycat/conf/目录下的 server.xml 文件,修改 root 用户的访问密码与数据库, 密码设置为 123456,访问 Mycat 的逻辑库为 USERDB,命令如下:
[root@mycat ~]# cat /usr/local/mycat/conf/server.xml
在配置文件的最后部分,
<user name="root">
<property name="password">123456</property>
<property name="schemas">USERDB</property>
删除如下:
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
启动mycat服务
[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat star
netstat -ntlp
验证数据库集群服务读写分离功能 (1)用 Mycat 服务查询数据库信息 先在 Mycat 虚拟机上使用 Yum 安装 mariadb-client 服务。
[root@mycat ~]# yum install -y MariaDB-client
在 Mycat 虚拟机上使用 mysql 命令查看 Mycat 服务的逻辑库 USERDB,因为 Mycat 的逻 辑库 USERDB 对应数据库 test(在部署主从数据库时已安装),所以可以查看库中已经创建的 表 company。命令如下。
[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -p123456
show databases;
use USERDB
show tables;
insert into company values(2,"bastetball","usa");
select * from company;
验证 Mycat 服务对数据库读写操作分离
[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show @@datasource;'