数据库中间件Mycat部署安装(实践部分)

写在前面:
历史总是要前进的,历史从来不等待一切犹豫者、观望者、懈怠者、软弱者;只有与历史同步伐、与时代共命运的人才能赢得光明的未来!

一、MySQL主从复制概述

1.为什么要主从复制?

注意:

MySQL是现在普遍使用的数据库,但是如果宕机了必然会造成数据丢失。为了保证MySQL数据库的可靠性。就要会一些提高可靠性的技术。

 2.如何解决性能问题?
 3.biglog 日志的三种格式
  • Statement:每一条会修改数据的sql都会记录在binlog中
  • Row: 仅保存哪条记录被修改
  • Mixed: 以上两种的混合使用,一般的语句修改用statement,全表更新使用Row,但是无法使用@@host name。
 4. 二进制日志管理

(1)二进制日志位置

在my.cnf文件中使用 log-bin = 指定;命名规则为 mysql-bin.000000 (后为6位数字)

mysql> show variables like '%log_bin%' ; 

(2) 查看二进制日志格式

mysql> show variables like '%format%'; 

(3) 查看当前使用的二进制日志文件

mysql> show master status; 

二、MySQL主从复制原理

原理:

主从复制的原理则是采用binlog文件进行复制,我们都知道MySQL的数据库会产生一个二进制日志,就是binlog,该日志文件记录了数据的任何修改,所以我们的从机Slave会从主机读取二进制的binlog日志到本机的I/O thread中,然后写入一个Relay log文件中,从机开启一个SQL thread 定时检查Realy log 文件,如果发现有更新立即把更新的内容在本地的数据库上执行。

三、搭建MySQL主从复制(安装日志带时间)

1.安装MySQL数据库

(1)下载YUM库

wget  http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

(2) 安装YUM库

rpm -ivh mysql57-community-release-el7-10.noarch.rpm

(3) 安装MySQL服务,重启mysql

  • yum -y install mysql-community-server
  • systemctl restart mysqld 

(4) 完成安装,重启mysql

systemctl restart mysqld 

(5) 日志文件中找出密码

grep "password" /var/log/mysqld.log

(6) 修改密码策略

  • set global validate_password_policy=0;
  • set global validate_password_policy=LOW;
  • set global validate_password_length=6;

(7) 密码策略修改完以后可以修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

(8) 开启远程连接

  • use mysql;
  • update user set host ="%" where user = "root";

(9) 刷新信息

 flush privileges;

 2.开启bin-log日志

(1)修改主服务器Master

修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin

(2) 修改从服务器slave

修改配置文件:vim /etc/my.cnf
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

3.重启两台服务器的mysql
service mysqld restart 
4.在主服务器上建立帐户并授权slave 

mysql>GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456'; 

注意:

一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

5.查询Master的状态
mysql>show master status;
  +------------+----------+--------------+------------------+
  | File    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------+-----------+--------------+--------------+
  | mysql-bin.000004 | 308 |        |       
  +-----------+----------+--------------+------------------+
  1 row in set (0.00 sec) 

注意:

执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化。

6.配置从服务器Slave

mysql>change master to master_host='192.168.66.101',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=430; 

注意:

注意不要断开,308数字前后无单引号。

7.启动从服务器复制功能

mysql>start slave; 

8.检查从服务器复制功能状态

show slave status \G; 

注意:

Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

9. 主从服务器测试

mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)


mysql> use hi_db;
Database changed


mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
 
mysql> insert into hi_tb values(001,'baizhan');
Query OK, 1 row affected (0.00 sec)

10.从服务器Mysql查询
mysql>show databases;
mysql>use hi_db
mysql>select * from hi_tb;    

四、基于Docker搭建MySQL主从复制

1.首先拉取Docker镜像
docker pull mysql:5.7 
2.启动两个容器

#启动Master
docker run -p 3350:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#启动Slave
docker run -p 3340:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 

注意:

  • --name:为容器指定名称,这里是master
  • -p:将容器的指定端口映射到主机的指定端口,这里是将容器的3306端口映射到主机的3306端口
  • -e:设置环境变量,这里是指定root账号的密码为root
  • -d:后台运行容器,并返回容器ID
3. 获取两个容器IP地址

[root@localhost mycat]# docker inspect master
[root@localhost mycat]# docker inspect slave

4.检验是否启动成功
docker ps -a 显示所有的容器,包括未运行的 

注意:

是UP状态,表示正在运行中。

5.配置Master 

(1) 进入master容器内部

docker exec -it master /bin/bash

(2) 修改mysqld.cnf配置

#切换目录
cd /etc/mysql/mysql.conf.d/mysqld.cnf
#修改配置文件加入
[mysqld]
## 同一局域网内注意要唯一
server-id=100 
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

注意:

vi my.cnf对my.cnf进行编辑。此时会报出bash: vi: command not found,需要我们在docker容器内部自行安装vim。使用apt-get install vim命令安装vim

如果报错:

Reading package lists... Done Building dependency tree
Reading state information... Done E: Unable to locate package vim

更新apt-get

apt-get update

安装vim

apt-get install vim

(3) 重启mysql服务

service mysql restart
docker start master

(4) 在Master数据库创建数据同步用户

mysql> GRANT replication SLAVE ON *.* TO 'slave' @'%' IDENTIFIED BY '123456';

6.配置Slave

和配置Master(主)一样,在Slave配置文件mysqld.cnf中添加如下配置

[mysqld]
## 设置server_id,注意要唯一
server-id=101 
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin  
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin 

注意:

配置完成后也需要重启mysql服务和docker容器,操作和配置Master(主)一致。

 7.连接接Master(主)和Slave(从)

(1) 在Master进入mysql

show master status;

(2) 在Slave 中进入 mysql

mysql>change master to master_host='172.17.0.2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=438; 

参数:

  • master_host: Master 的IP地址
  • master_user: 在 Master 中授权的用于数据同步的用户
  • master_password: 同步数据的用户的密码
  • master_port: Master 的数据库的端口号
  • master_log_file: 指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
  • master_log_pos: 从哪个 Position 开始读,即上文中提到的 Position 字段的值
  • master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。

(3) 在Slave中开启主从复制

mysql> start slave

 (4)在 Slave 的 MySQL 终端执行查看主从同步状态

show slave status \G;

 五、Mycat安装以及管理命令详解

1.下载解压Mycat安装包

tar -zxvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar -C /usr/local 

2.将MyCat配置到环境变量中

vim /etc/profile
#增加如下配置
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$MYCAT_HOME/bin 

3.MyCat常用操作命令

mycat start      #启动MyCat
mycat stop       #停止MyCat
mycat console     #前台运行MyCat带控制台输出
mycat restart     #重启MyCat
mycat pause      #暂停MyCat
mycat status      #查看启动状态 

4.使用MySQL命令进行MyCat的连接

Mycat 提供类似数据库的管理监控方式,可以通过MySQL命令行登录管理端口(9066)执行相应的SQL语句进行管理,也可以通过JDBC方式进行远程连接管理。

5.管理端口

9066用于查看MyCat的运行状态

mysql -uroot -p123456 -h 192.168.1.125 -P9066 -DTESTDB 

参数:

  • -h:后面是主机。 即当前Mycat安装的主机IP地址。
  • -u:Mycat server.xml中配置逻辑库的用户。
  • -p:Mycat server.xml中配置逻辑库的密码。
  • -P:后面是管理端口号。注意P是大写。
  • -d:Mycat server.xml中配置逻辑库。
 6.数据端口

8066用于进行数据的CRUD操作

mysql -uroot -p123456 -h 192.168.1.125 -P8066 -DTESTDB

7.MyCat的连接用户名相关信息在配置文件/usr/local/mycat/conf/server.xml中查看编辑 

<user name="root">
    <property name="password">123456</property>
    <property name="schemas">TESTDB</property>
</user> 

8.Show命令

-- 查看所有的可用命令
show @@help; 
-- 查看所有的逻辑数据库
show @@database;
-- 查看所有的数据节点
show @@datanode;
-- 查看所有的数据源
show @@datasource; 

六、核心配置文件及目录结构

 1.目录结构

说明:

  • bin:可执行命令
  • conf:配置文件
  • lib:存放jar包
  • logs:日志信息
  • tmlogs:临时日志
  • version.txt:版本信息
2.三个配置文件
  • schema.xml:定义逻辑库,表、分片节点等内容
  • rule.xml:定义分片规则
  • server.xml:定义用户以及系统相关变量,如端口等

写在最后:

        行笔暂且至此、下期继续!

 

 

 

 

 

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值