CentOS-7环境下安装MySQL并配置主从和Mycat的安装

Mysql安装

步骤:

(1)查看CentOS7自带的mysql

输入 rpm -qa | grep mysql

rpm -qa | grep -imariadb

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

rpm -qa | grep -imysql

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

(2)将自带的mysql卸载

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

(3)上传Mysql到linux

(4)安装mysql的依赖

yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6

yum  updatelibstdc++-4.4.7-4.el6.x86_64

yum install -y perl-Module-Install.noarch

yum install net-tools -y

yum install  libncurses.so.5 

(5)解压Mysql到/usr/local/下的mysql目录(mysql目录需要手动创建)内

cd /usr/local

mkdirmysql

tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C /usr/local/mysql

(6)在/usr/local/mysql下安装mysql

安装服务器端:rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm

安装客户端:rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm

(7)启动mysql

service mysql start

(8)将mysql加到系统服务中并设置开机启动

加入到系统服务:chkconfig --add mysql

自动启动:chkconfigmysql on

(9)登录mysql

mysql安装好后会生成一个临时随机密码,存储位置在/root/.mysql_secret

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

msyql –u root -p

(10)修改mysql的密码

set password = password('root');

(11)开启mysql的远程登录

默认情况下mysql为安全起见,不支持远程登录mysql,所以需要设置开启    远程登录mysql的权限

登录mysql后输入如下命令:

grant all privileges on *.* to 'root' @'%' identified by 'root';

flush privileges;

(12)开放Linux的对外访问的端口3306

systemctl stop firewalld

systemctl mask firewalld

yum install iptables-services 

systemctl enable iptables

iptables -P OUTPUT ACCEPT

service iptables save

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

service iptables save

cat /etc/sysconfig/iptables

service iptables restart

systemctl reload iptables

cd /etc/

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

主从配置

主服务器配置

cd /usr/share/mysql/

cp my-default.cnf /etc/my.cnf

cd /etc/

vi my.cnf

第一步:修改my.cnf文件:

在[mysqld]段下添加:

binlog-do-db=db1

binlog-ignore-db=mysql

#启用二进制日志

log-bin=mysql-bin

#服务器唯一ID,一般取IP最后一段

server-id=130

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

第二步:重启mysql服务

service mysql restart

service mysql start

第三步:建立帐户并授权slave

mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';

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

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

刷新权限

mysql> FLUSH PRIVILEGES;

查看mysql现在有哪些用户

mysql>select user,host from mysql.user;

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

第四步:查询master的状态

mysql> show master status;

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

从服务器配置

cd /usr/share/mysql/

cp my-default.cnf /etc/my.cnf

cd /etc/

vi my.cnf

第一步:修改my.conf文件

[mysqld]

server-id=166

重新启动

service mysql restart

service mysql start

第二步:配置从服务器

mysql>change master to master_host='192.168.25.134',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。

第二步:启动从服务器复制功能

Mysql>start slave;

第三步:检查从服务器复制功能状态:

mysql> show slave status

……………………(省略部分)

Slave_IO_Running: Yes //此状态必须YES

Slave_SQL_Running: Yes //此状态必须YES

……………………(省略部分)

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

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

以上操作过程,从服务器配置完成。

JDK安装

步骤:

(1)查看当前Linux系统是否已经安装java

输入 rpm -qa | grep java

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

(2)卸载两个openJDK

输入rpm -e --nodeps 要卸载的软件

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

(3)上传jdk到linux

(4)安装jdk运行需要的插件yum install glibc.i686

(5)解压jdk到/usr/local下 tar –xvf jdk-7u71-linux-i586.tar.gz –C /usr/local

(6)配置jdk环境变量,打开/etc/profile配置文件,将下面配置拷贝进去

      #set java environment

      JAVA_HOME=/usr/local/jdk1.7.0_71

      CLASSPATH=.:$JAVA_HOME/lib.tools.jar

      PATH=$JAVA_HOME/bin:$PATH

      export JAVA_HOME CLASSPATH PATH

安装mycat同时要添加下面这一行代码

MYCAT_HOME=/usr/local/mycat

(7)重新加载/etc/profile配置文件 source /etc/profile

Mycat安装

第一步:把MyCat的压缩包上传到linux服务器

Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz

第二步:解压缩,得到mycat目录

tar zxf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

cp -r mycat /usr/local/

CentOS-7环境下安装MySQL并配置主从和Mycat的安装

第三步:进入mycat/bin,启动MyCat

启动命令:./mycat start

停止命令:./mycat stop

重启命令:./mycat restart

注意:可以使用mysql的客户端直接连接mycat服务。默认服务端口为8066

开启8066端口

systemctl stop firewalld
systemctl mask firewalld
yum install iptables-services  
systemctl enable iptables
iptables -P OUTPUT ACCEPT
service iptables save
iptables -A INPUT -m state --state NEW -m tcp -p tcp –dport 8066 -j ACCEPT
service iptables save
cat /etc/sysconfig/iptables
service iptables restart
systemctl reload iptables 

 

配置schema.xml

Schema.xml介绍

Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。

schema 标签用于定义MyCat实例中的逻辑库

Table 标签定义了MyCat中的逻辑表

dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。

dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。

注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。在MySQL的配置文件中my.ini [mysqld] 中增加一行lower_case_table_names = 1

Schema.xml配置

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schemaxmlns:mycat="http://io.mycat/">

 

<schema name="test1" checkSQLschema="false" sqlMaxLimit="100">

<!-- auto sharding by id (long) -->

<table name="test_db1" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

<table name="test_db2" dataNode="dn4" />

<table name="test_db3" dataNode="dn4" />

<table name="test_db4" dataNode="dn4" />

<table name="test_db5" dataNode="dn4" />

<table name="test_db6" dataNode="dn4" />

<table name="test_db7" dataNode="dn4" />

<table name="test_db8" dataNode="dn4" />

<table name="test_db9" dataNode="dn4" />

<table name="test_db10" dataNode="dn4" />

<table name="test_db11" dataNode="dn4" />

<table name="test_db12" dataNode="dn4" />

</schema>

<dataNode name="dn1" dataHost="localhost1" database="db2" />

<dataNode name="dn2" dataHost="localhost1" database="db3" />

<dataNode name="dn3" dataHost="localhost1" database="db4" />

<dataNode name="dn4" dataHost="localhost2" database="db1" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"

writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<!-- can have multi write hosts -->

<writeHost host="hostM1" url="192.168.92.132:3306" user="root"

                                   password="root">

<!-- can have multi read hosts -->

 

</writeHost>

 

</dataHost>

<dataHost name="localhost2" maxCon="1000" minCon="10" balance="1"

writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">

<heartbeat>show slave status</heartbeat>

<!-- can have multi write hosts -->

<writeHost host="hostM1" url="192.168.92.130:3306" user="root"

                                   password="123">

<!-- can have multi read hosts -->

<readHost host="hostS2" url="192.168.92.131:3306" user="root" password="root" />

</writeHost>

 

</dataHost>

 

</mycat:schema>

配置server.xml

(1)Server.xml介绍

server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。

 

(2)Server.xml配置

<user name="user">

<property name="password">user</property>

<property name="schemas">test1</property>

</user>