此实验使用三个虚拟机,主机名分别为
mycat
,db1
,db2
实验关闭关闭firewall
以及enforce
systemctl stop firewalld
setenforce 0
主重同步
首先配置本地yum源
rm -rf /etc/yum.reops.d/*
vi /etc/yum.repos.d/local.repo
添加以下内容
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enable=1
[gpmall]
name=gpmall
baseurl=file:///root/gpmall-repo
gpgcheck=0
enable=1
然后挂载
mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos/
然后编辑hosts
文件
vi /etc/hosts
添加以下内容
192.168.200.11 mycat
192.168.200.12 db1
192.168.200.13 db2
将hosts
文件传送到db1
和db2
scp /etc/hosts db1:/etc/hosts
scp /etc/hosts db2:/etc/hosts
将local.repo
传送到db1
和db2
scp /etc/yum.repos.d/local.repo db1:/etc/yum.repos.d/
scp /etc/yum.repos.d/local.repo db2:/etc/yum.repos.d
然后配置`db1`的`MariaDB
rm -rf /etc/yum.reops.d/*
mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos/
安装数据库
yum install mariadb mariadb-server java java-devel
启动数据库和设置开机自启
systemctl start mariadb
systemc enable mariadb
初始化数据库
mysql_secure_installation
enter y 123456 123456 y n y y
设置数据库配置文件
vim /etc/my.cnf
添加以下内容
[mysqld]
log_bin=mysql_bin
server_id=1
然后重启数据库
systemctl restart mariadb
在主节点db1
虚拟机上使用mysql
命令登录数据库,赋权在任何客户端机器上可以以root
用户登录到数据库
再在主节点db1
数据库上创建一个user
用户可以让节点db2
连接,并赋予从节点同步主节点数据库的权限
mysql -u root -p123456
grant all privileges on *.* to root@'%' identified by '123456';
grant replication slave on *.* to 'user'@'db2' identified by '123456';
可以使用show master status来查看
任何配置db2
的数据库
从节点db2
虚拟机上使用mysql命令登录数据库,配置从节点连接主节点的连接信息。
配置mysql
的配置文件
其他配置均和db1
相同,只有数据库配置文件和数据库里面配置的命令不同
vim /etc/my.cnf.d
添加以下内容
[mysqld]
log_bin=mysql_bin
server_id=2
然后重启启动数据库
systemctl restart mariadb
初始化数据库
mysql_secure_installation
enter y 123456 123456 y n y y
登录数据库
mysql -u root -p123456
配置连接主数据库
grant all privileges on *.* to root@'%' identified by '123456';
change master to master_host='db1',master_user='user',master_password='123456';
start slave;
使用show slave status\G
验证
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在下面找到这两行就成功了
下面验证主重同步是否成功
#db1
新建test数据库
MariaDB [(none)]> create database test;
MariaDB [(none)]> use test;
建表
MariaDB [test]> create table company(id int not null primary key,name varchar(50),addr varchar(255));
MariaDB [test]> insert into company values(1,“facebook”,“usa”);
MariaDB [test]> select * from company;
±—±---------±-----+
| id | name | addr |
±—±---------±-----+
| 1 | facebook | usa |
±—±---------±-----+
1 row in set (0.000 sec)
#db2验证
MariaDB [(none)]> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
±-------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]> use test;
MariaDB [test]> select * from company;
±—±---------±-----+
| id | name | addr |
±—±---------±-----+
| 1 | facebook | usa |
±—±---------±-----+
1 row in set (0.000 sec)
读写分离
数据库读写分离mycat
中间件
mycat
基于阿里开源的cobar
开发,永不收费,永不闭源。
解压mycat
cd /root
tar -xzvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
修改mycat
配置文件
vim /usr/local/mycat/conf/schema.xml
将配置文件修改为以下内容
在修改另一个配置文件
vim /usr/local/mycat/conf/server.xml
修改以下内容
<user name="root">
<property name="password">123456</property>
<property name="schemas">USERDB</property>
95行处,然后删除如下五行:
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
然后启动mycat
服务
/bin/bash /usr/local/mycat/bin/mycat start
可以使用jps
查看是否运行
然后使用netstat -nptl
看到8066,9066两个端口就证明成功了
进行测试
[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -p123456
MySQL [(none)]> show databases;
MySQL [(none)]> use USERDB;
MySQL [USERDB]> show tables;
MySQL [USERDB]> select * from company;
MySQL [USERDB]> insert into company values(2,“bastetball”,“usa”);
MySQL [USERDB]> select * from company;
最后使用mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show @@datasource'
测试
到这里实验就成功了