主重同步及读写分离

主重同步及读写分离

此实验使用三个虚拟机,主机名分别为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文件传送到db1db2

scp /etc/hosts db1:/etc/hosts
scp /etc/hosts db2:/etc/hosts

local.repo传送到db1db2

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'测试
在这里插入图片描述
到这里实验就成功了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cc_pwd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值