mysql软件包存放目录:Mysql-5.6.40

发布时间:   来源:CSDN  

1. Mysql-5.6.40

软件包存放目录:/usr/local/src/


(资料图)

1.1 安装mysql

cd /usr/local/src/# 1.切换到软件包目录wget http://...mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz# 2.获取php5.6.40源码包tar zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz# 3.解压mkdir /usr/local/mysql# 4.查看是否有 /usr/local/mysql这个文件夹,如果有那就重命名(mv) mysqlold。# 然后创建(mkdir)/usr/local/mysql这个文件夹cd mysql-5.6.43-linux-glibc2.12-x86_64mv * /usr/local/mysql# 5.将解压出来的文件移到/usr/local/mysql文件夹内mkdir -p /data/mysql# 6.创建数据库存放位置的文件夹useradd -s /sbin/nologin mysql# 7.创建mysql用户chown -R mysql:mysql /data/mysql# 8.更改文件夹权限yum -y install perl-Module-Install# 9.安装依赖包cd /usr/local/mysql./scripts/mysql_install_db --user=mysql --datadir=/data/mysql# 10.安装mysql,如果成功/data/mysql目录下将会有文件和目录

1.2 配置mysql

cd /usr/local/mysqlcp support-files/my-default.cnf /etc/my.cnf# 1.将mysql源码包内的默认配置文件放入并命名 /etc/my.cnfvim /etc/my.cnfbasedir = /usr/local/mysql # 源码存放目录datadir = /data/mysql  # 上文数据库存放目录port = 3306  # 端口server_id = 128  # 服务idsocket = /tmp/mysql.sock# Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.join_buffer_size = 128Msort_buffer_size = 2Mread_rnd_buffer_size = 2M# 2.进入并修改/etc/my.cnf文件# 开始设置自启动cp support-files/mysql.server /etc/init.d/mysqldchmod 755 /etc/init.d/mysqldvim /etc/init.d/mysqld修改:datadir=/data/mysql# 3.复制文件,修改权限,修改配置chkconfig --add mysqldchkconfig mysqld onservice mysqld on# 4.设置开机自启和启动服务

2. Apache-2.4.54

软件包存放目录:/usr/local/src/

2.1 安装apache

cd /usr/local/srcwget http://...httpd-2.4.54.tar.gzwget http://...apr-1.7.0.tar.gzwget http://...apr-util-1.6.1.tar.gztar zxvf httpd-2.4.54.tar.gztar zxvf apr-1.7.0.tar.gztar zxvf apr-util-1.6.1.tar.gz# 1.获取并解压源码包yum -y install expat-devel libxml2-devel pcre pcre-devel# 2.安装依赖包cd /usr/local/src/apr-1.7.0./configure --prefix=/usr/local/aprmake && make install# 3.编译并安装aprcd /usr/local/src/apr-util-1.6.1./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/aprmake && make install# 4.编译并安装apr-utilcd /usr/local/src/httpd-2.4.54./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=mostmake && make install# 5.编译并安装apache,如果安装成功那么/usr/local/apache2.4目录下将会有文件和目录

如果需要重新编译,需要使用make clean清除之前的缓存

2.2 配置虚拟主机

vim /usr/local/apache2.4/conf/httpd.conf# 修改#Include conf/extra/httpd-vhosts.conf->Include conf/extra/httpd-vhosts.conf# 1.让配置文件生效vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf# 修改ServerAdmin webmaster@dummy-host.example.com # 管理员邮箱 可忽略    DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com" # 网站根目录    ServerName dummy-host.example.com # 网站web站点名    ServerAlias www.dummy-host.example.com # 站点别名 可忽略    ErrorLog "logs/dummy-host.example.com-error_log" # 错误访问日志    CustomLog "logs/dummy-host.example.com-access_log" common # 成功访问日志ServerAdmin webmaster@dummy-host2.example.com    DocumentRoot "/usr/local/apache2.4/docs/dummy-host2.example.com"    ServerName dummy-host2.example.com    ErrorLog "logs/dummy-host2.example.com-error_log"    CustomLog "logs/dummy-host2.example.com-access_log" common->ServerAdmin webmaster@dummy-host.example.com    DocumentRoot "/usr/local/apache2.4/test.com"    ServerName test.com    ServerAlias www.test.com    ErrorLog "logs/dummy-host.example.com-error_log"    CustomLog "logs/dummy-host.example.com-access_log" common##    ServerAdmin webmaster@dummy-host2.example.com#    DocumentRoot "/usr/local/apache2.4/docs/dummy-host2.example.com"#    ServerName dummy-host2.example.com#    ErrorLog "logs/dummy-host2.example.com-error_log"#    CustomLog "logs/dummy-host2.example.com-access_log" common## 2.修改虚拟主机配置文件 test.com访问主机的/usr/local/apache2.4/test.com目录mkdir /usr/local/apache2.4/test.comecho "test.com" > /usr/local/apache2.4/test.com/index.html# 3.创建/usr/local/apache2.4/test.com目录,并创建网站主页/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful# 4.检查配置文件,重新加载http服务curl -x127.0.0.1:80 www.test.com# 5.检查虚拟主机是否正常 正常输出是 test.com

2.3 用户认证

vim /usr/local/apache2.4/conf/httpd.conf# 修改ServerAdmin webmaster@dummy-host.example.com    DocumentRoot "/usr/local/apache2.4/test.com"    ServerName test.com    ServerAlias www.test.com    ErrorLog "logs/dummy-host.example.com-error_log"    CustomLog "logs/dummy-host.example.com-access_log" common->ServerAdmin webmaster@dummy-host.example.com    DocumentRoot "/usr/local/apache2.4/test.com"    ServerName test.com    ServerAlias www.test.com    ErrorLog "logs/dummy-host.example.com-error_log"    CustomLog "logs/dummy-host.example.com-access_log" common# 保护目录        AllowOverride AuthConfig # 认证开关        AuthName "test.com user auth" # 认证名字,可无        AuthType Basic # 认证类型,一般为Basic        AuthUserFile /data/.htpasswd # 密码文件目录        require valid-user # 指定需要认证的用户# 1.修改配置文件/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd user1# 2.创建认证用户 user1 -c创建 -m密码加密方式/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful# 3.检查配置文件,重新加载http服务

2.4 域名跳转

vim /usr/local/apache2.4/conf/httpd.conf# 修改ServerAdmin webmaster@dummy-host.example.com    DocumentRoot "/usr/local/apache2.4/test.com"    ServerName test.com    ServerAlias www.test.com    ErrorLog "logs/dummy-host.example.com-error_log"    CustomLog "logs/dummy-host.example.com-access_log" commonAllowOverride AuthConfig        AuthName "test.com user auth"        AuthType Basic        AuthUserFile /data/.htpasswd        require valid-user->ServerAdmin webmaster@dummy-host.example.com    DocumentRoot "/usr/local/apache2.4/test.com"    ServerName test.com    ServerAlias www.test.com# 需要mod_rewrite模块        RewriteEngine on # 打开rewrite功能        RewriteCond %{HTTP_HOST} !^test.com$ # 当主机名不是test.com时触发下面条件        RewriteRule ^/(.*)$ http://test.com/$1 [R=301,L]ErrorLog "logs/dummy-host.example.com-error_log"    CustomLog "logs/dummy-host.example.com-access_log" common# 1.修改配置文件vim /usr/local/apache2.4/conf/httpd.conf#修改#LoadModule rewrite_module modules/mod_rewrite.soLoadModule rewrite_module modules/mod_rewrite.so# 2.修改配置文件,让rewrite模块生效/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful# 3.检查配置文件,重新加载http服务/usr/local/apache2.4/bin/apachectl -M | grep -i rewrite# 4.查看模块是否生效,生效会提示 rewrite_module (shared)curl -x127.0.0.1:80 -I 123.com    HTTP/1.1 301 Moved Permanently    Date: Tue, 06 Sep 2022 08:06:04 GMT    Server: Apache/2.4.54 (Unix) PHP/5.6.40    Location: http://test.com/    Content-Type: text/html; charset=iso-8859-1# 5.查看跳转是否正常,正常 状态码为301,location为test.com

3.PHP-5.6.40

软件包存放目录:/usr/local/src/

3.1 安装php

cd /usr/local/srcwget http://...php-5.6.40.tar.gztar zxvf php-5.6.40.tar.gz# 1.获取并解压php源码包yum -y install libxml2 openssl openssl-devel bzip2 bzip2-develyum -y install libjpeg libjpeg-devel libpng libpng-devel# 获取下面的依赖包rpm -ivh freetype-2.8-14.el7_9.1.x86_64.rpmrpm -ivh freetype-devel-2.8-14.el7_9.1.x86_64.rpmrpm -ivh libmcrypt-2.5.8-13.el7.x86_64.rpmrpm -ivh libmcrypt-devel-2.5.8-13.el7.x86_64.rpm# 2.安装依赖包./configure -prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysq1=/usr/1ocal/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exifmake && make install# 3. 编译并安装

3.2 配置php

cd /usr/local/src/php-5.6.40cp php.ini-production /usr/local/php/etc/php.ini# 复制配置文件

4.整合

4.1 配置httpd支持php

vim /usr/local/apache2.4/conf/httpd.conf#修改#ServerName www.example.com:80->ServerName www.example.com:80#修改AllowOverride none    Require all denied->AllowOverride none    Require all granted#添加(在AddType application/x-gzip .gz .tgz 下)AddType application/x-httpd-php .php#修改DirectoryIndex index.html->DirectoryIndex index.html index.php# 1.进入apache的配置文件并修改/usr/local/apache2.4/bin/apachectl -t# 2.检验apache配置文件是否正确,正确会显示Syntax OK/usr/local/apache2.4/bin/apachectl start# 3.开启apache

4.2 检测LAMP环境是否正确

curl localhost# 1.检查apache是否正确vim /usr/local/apache2.4/htdocs/test.phpcurl localhost/test.php# 2.检查php是否正确cd /usr/local/mysql/bin/./mysql# 3.检查mysql是否正确

https://www.cnblogs.com/zhijiyiyu/p/15142509.html

4.3 配置访问日志

# 通常访问日式是用来查看网站访问记录以及异常问题的vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf#找到之前配置的123.com 虚拟主机 增加一句Customlog "1ogs/testdomain. com-access_ log" combined#保存配置文件后,测试语法并重新加载配置/usr/local/apache2.4/bin/apachectl -t/usr/local/apache2.4/bin/apachectl graceful#验证curl -x127.0.0.1:80 -I 123.comtail /usr/local/apache2.4/logs/123-access_log

4.4 配置静态元素过期时间

#当服务器上的某个东西更改了,那再访问新东西的时候 这期间的间隔 就叫做缓存过期时间vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf#找到之前配置的123.com 虚拟主机并修改DocumentRoot "/data/wwwroot/testdomain.com"    ServerName www.testdomain.com    ServerAlias testdomain.comDocumentRoot "/data/wwwroot/testdomain.com"    ServerName www.testdomain.com    ServerAlias testdomain.comRewriteEngine on    RewriteCond %{HTTP_HOST} !^www.testdomain.com$     RewriteRule ^/(.*)$ http://www.testdomain.com/$1 [R=301,L]SetEnvIf Request_URI ".*\.gif$" image-request    SetEnvIf Request_URI ".*\.jpg$" image-request    SetEnvIf Request_URI ".*\.png$" image-request    SetEnvIf Request_URI ".*\.bmp$" image-request    SetEnvIf Request_URI ".*\.swf$" image-request    SetEnvIf Request_URI ".*\.js$" image- request    SetEnvIf Request_URI ".*\.css$" image- request    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined env=!image-requestExpiresActive on    ExpiresByType image/gif "access plus 1 days“    ExpiresByType image/jpeg "access plus 24 hours"    ExpiresByType image/png "access plus 24 hours"    ExpiresByType text/css "now plus 2 hour"    ExpiresByType application/x-javascript "now plus 2 hours"    ExpiresByType application/javascript "now plus 2 hours"    ExpiresByType application/x-shockwave-flash "now plus 2 hours"    ExpiresDefault "now plus 0 min"#开启模块vim /usr/local/apache2.4/conf/httpd.conf#搜索关键词expires,找到这一行 删除前面的#LoadModule expires_ module modules/mod_ expires .so#测试curl -x127.0.0.1:80 -I www.123.com/123.jpeg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ji18QzZv-1663114696420)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220908093410227.png)]

1.owncloud部署

1.1 前期工作

Nginx + ownCloud + PHP + MySQL搭建[私有云]

centos7系统

可联网

准备好owncloud安装包

1.2安装过程

yum install -y httpd php php-mysql mariadb-server mariadb sqlite php-dom php-mbstring php-gd php-pdosystemctl start httpd               注释:开启httpdsystemctl start mariadb             注释:开启MariaDB数据库管理系统setenforce 0                        注释:关闭selinux防火墙systemctl stop firewalld.service    注释:关闭firewalld服务yum install net-tools               注释:安装 net-toolsnetstat -anpt | grep httpd          注释:再次执行此命令netstat -anpt | grep 3306           注释:显示所有TCP端口号连接程序的使用情况 | 显示有关3306端口进程

1.3源码嵌入

用ssh连接到主机

在搭建好的LAMP的基础上部署OwnCloud站点,将准备好的所以 ownCloud 源码文件传输至网站根目录

cd /var/www/html                                          注释:前往网站根目录将 ownCloud文件夹内所有源码文件 传输进此/var/www/html/目录内重要说明:请传输源码文件!而不是传输 owncloud 整个文件夹!否则网页登陆需要加后缀:主机IP/owncloud 切记!# chown -R apache.apache /var/www/html                      注释:将html当前目录下的所有文件与子目录的拥有者皆设为apache 群体的使用者:apache

1.4数据库初始化

mysqladmin -u root password 123456        注释:设置root密码为123456mysql -uroot -p123456                     注释:以超级用户root进入MySQL数据库管理系统Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 5Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type "help;" or "\h" for help. Type "\c" to clear the current input statement.MariaDB [(none)]>create database owncloud    注释:创建ownCloud数据库     -> ;                                    注释:输入符号;进入下一步Query OK, 1 row affected (0.00 sec)MariaDB [(none)]>show databases              注释:列出当前用户可查看的所有数据库并找到owncloud数据库     -> ;+--------------------+| Database           |+--------------------+| information_schema || mysql              || owncloud           || performance_schema || test               |+--------------------+5 rows in set (0.00 sec)————————————————

1.5php升级

这部分就不阐述了 至少需要php版本为5.6.0以上

1.6浏览器访问测试

访问主机IP出下如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IokqaPH1-1663114696421)(C:\Users\lenovo\Desktop\捕获.PNG)]

管理员账号:admin 管理员密码:admin@2021 数据库储存目录:/var/www/html/data 数据库用户:root 数据库密码:123456 数据库名称:owncloud 数据库主机:localhost

到这里就结束了。

2。实战案例——构建读写分离的数据库集群

2.1案例目标

(1)了解Mycat提供的读写分离功能。

(2)了解MySQL数据库的主从架构。

(3)构建以Mycat为中间件的读写分离数据库集群。

2.2案例分析

规划节点

使用Mycat作为数据库中间件服务构建读写分离的数据库集群,节点规划见表4-1-1。

表4-1-1 节点规划

IP主机名节点

172.16.51.6mycatMycat中间件服务节点

172.16.51.18db1MariaDB数据库集群主节点

172.16.51.30db2MariaDB数据库集群从节点

基础准备

使用CentOS 7.2系统,flavor使用2vCPU/4G内存/50G硬盘,创建3台虚拟机进行实验。

其中2台虚拟机db1和db2部署MariaDB数据库服务,搭建主从数据库集群;一台作为主节点,负责写入数据库信息;另一台作为从节点,负责读取数据库信息。

使用一台虚拟机部署Mycat数据库中间件服务,将用户提交的读写操作识别分发给相应的数据库节点。这样将用户的访问操作、数据库的读与写操作分给3台主机,只有数据库集群的主节点接收增、删、改SQL语句,从节点接收查询语句,分担了主节点的查询压力。

Yum源使用提供的gpmall-repo文件夹作为本地源,Mycat组件使用提供的Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz压缩包安装。

2.3案例实施

Mycat节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname mycat

[root@localhost ~]# bash

[root@mycat ~]#

db1节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname db1

[root@localhost ~]# bash

[root@db1 ~]#

db2节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname db2

[root@localhost ~]# bash

[root@db2 ~]#

(1)编辑hosts文件

3台集群虚拟机的/etc/hosts文件配置部分:

[root@mycat ~]# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.51.6 mycat

172.16.51.18 db1

172.16.51.30 db2

(2)安装JDK环境

部署Mycat中间件服务需要先部署JDK 1.7或以上版本的JDK软件环境,这里部署JDK 1.8版本。

Mycat节点安装Java环境:

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

*2********.********部署MariaDB主从数据库集群服务*

(1)安装MariaDB服务

通过YUM命令在db1和db2虚拟机节点上安装MariaDB服务,命令如下。

# yum install -y mariadb mariadb-server

# systemctl start mariadb

# systemctl enable mariadb

初始化数据库

mysql_secure_installation

(3)配置数据库集群主节点

编辑主节点db1虚拟机的数据库配置文件my.cnf,在配置文件my.cnf中增添下面的内容。

[root@db1 ~]# cat /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

(4)开放主节点的数据库权限

在主节点db1虚拟机上使用mysql命令登录MariaDB数据库,授权在任何客户端机器上可以以root用户登录到数据库。

[root@db1 ~]# mysql -uroot -p123456

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 137

Server version: 10.3.18-MariaDB-log MariaDB Server

Copyright © 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]> grant all privileges on .to root@’%’ identified by “123456”;

在主节点db1数据库上创建一个user用户让从节点db2连接,并赋予从节点同步主节点数据库的权限,命令如下。

MariaDB [(none)]> grant replication slave on .to ‘user’@‘db2’ identified by ‘123456’;

(5)配置从节点db2同步主节点db1

在从节点db2虚拟机上使用mysql命令登录MariaDB数据库,配置从节点连接主节点的连接信息。master_host为主节点主机名db1,master_user为在步骤(4)中创建的用户user,命令如下。

[root@db2 ~]# mysql -uroot -p123456

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 88

Server version: 10.3.18-MariaDB-log MariaDB Server

Copyright © 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]> change master to master_host=‘db1’,master_user=‘user’,master_password=‘123456’;

配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用show slave status\G; 命令并查看从节点服务状态,如果Slave_IO_Running和Slave_SQL_Running的状态都为YES,则从节点服务开启成功。查询结果如图4-1-1所示。

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status\G;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XxKwlrRs-1663114696421)(file:///C:\Users\lenovo\AppData\Local\Temp\ksohtml2904\wps1.jpg)]

图4-1-1查询slave状态

*防火墙*

(6)验证主从数据库的同步功能

先在主节点db1的数据库中创建库test,并在库test中创建表company,插入表数据。创建完成后,查看表company数据,如下所示。

MariaDB [(none)]> create database test;

Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> use test

Database changed

MariaDB [test]> create table company(id int not null primary key,name varchar(50),addr varchar(255));

Query OK, 0 rows affected (0.165 sec)

MariaDB [test]> insert into company values(1,“facebook”,“usa”);

Query OK, 1 row affected (0.062 sec)

MariaDB [test]> select * from company;

±—±---------±-----+

| id | name | addr |

±—±---------±-----+

| 1 | facebook | usa |

±—±---------±-----+

1 row in set (0.000 sec)

这时从节点db2的数据库就会同步主节点数据库创建的test库,可以在从节点查询test数据库与表company,如果可以查询到信息,就能验证主从数据库集群功能在正常运行。查询结果如下所示。

MariaDB [(none)]> show databases;

±-------------------+

| Database |

±-------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

±-------------------+

4 rows in set (0.001 sec)

MariaDB [(none)]> select * from test.company;

±—±---------±-----+

| id | name | addr |

±—±---------±-----+

| 1 | facebook | usa |

±—±---------±-----+

1 row in set (0.001 sec)

*3********.********部署Mycat读写分离中间件服务*

(1)安装Mycat服务

将Mycat服务的二进制软件包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上传到Mycat虚拟机的/root目录下,并将软件包解压到/use/local目录中。赋予解压后的Mycat目录权限。

[root@mycat ~]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

[root@mycat ~]# chown -R 777 /usr/local/mycat/

在/etc/profile系统变量文件中添加Mycat服务的系统变量,并生效变量。

[root@mycat ~]# echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile

[root@mycat ~]# source /etc/profile

(2)编辑Mycat的逻辑库配置文件

配置Mycat服务读写分离的schema.xml配置文件在/usr/local/mycat/conf/目录下,可以在文件中定义一个逻辑库,使用户可以通过Mycat服务管理该逻辑库对应的MariaDB数据库。在这里定义一个逻辑库schema,name为USERDB;该逻辑库USERDB对应数据库database为test(在部署主从数据库时已安装);设置数据库写入节点为主节点db1;设置数据库读取节点为从节点db2。(可以直接删除原来schema.xml的内容,替换为如下。)

注意:IP需要修改成实际的IP地址。

[root@mycat ~]# cat /usr/local/mycat/conf/schema.xml

select user()

代码说明:

l sqlMaxLimit:配置默认查询数量。

l database:为真实数据库名。

l balance=“0”:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

l balance=“1”:全部的readHost与stand by writeHost参与select语句的负载均衡,简单来说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2、S1、S2都参与select语句的负载均衡。

l balance=“2”:所有读操作都随机的在writeHost、readhost上分发。

l balance=“3”:所有读请求随机地分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3版本没有。

l writeType=“0”:所有写操作发送到配置的第一个writeHost,第一个挂了需要切换到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件dnindex.properties中。

l writeType=“1”:所有写操作都随机的发送到配置的writeHost。

(3)修改配置文件权限

修改schema.xml的用户权限,命令如下:

[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml

(4)编辑mycat的访问用户

修改/usr/local/mycat/conf/目录下的server.xml文件,修改root用户的访问密码与数据库,密码设置为123456,访问Mycat的逻辑库为USERDB,命令如下。

[root@mycat ~]# cat /usr/local/mycat/conf/server.xml

在配置文件的最后部分,

123456

USERDB

然后删除如下几行:

user

TESTDB

true

保存并退出server.xml配置文件。

(5)启动Mycat服务

通过命令启动Mycat数据库中间件服务,启动后使用netstat -ntpl命令查看虚拟机端口开放情况,如果有开放8066和9066端口,则表示Mycat服务开启成功。端口查询情况如图4-1-2所示。

[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat start

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RX1PeX6V-1663114696422)(file:///C:\Users\lenovo\AppData\Local\Temp\ksohtml2904\wps2.jpg)]

图4-1-2 查询Mycat服务端口

*4********.********验证数据库集群服务读写分离功能*

(1)用Mycat服务查询数据库信息

先在Mycat虚拟机上使用Yum安装mariadb-client服务。

[root@mycat ~]# yum install -y MariaDB-client

ps:这里有个坑 就是怎么都安装不上去这个客户端 我是同步官网的版本号过后才能下载的

在Mycat虚拟机上使用mysql命令查看Mycat服务的逻辑库USERDB,因为Mycat的逻辑库USERDB对应数据库test(在部署主从数据库时已安装),所以可以查看库中已经创建的表company。命令如下。

[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -p123456

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)

Copyright © 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MySQL [(none)]> show databases;

±---------+

| DATABASE |

±---------+

| USERDB |

±---------+

1 row in set (0.001 sec)

MySQL [(none)]> use USERDB

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

MySQL [USERDB]> show tables;

±---------------+

| Tables_in_test |

±---------------+

| company |

±---------------+

1 row in set (0.003 sec)

MySQL [USERDB]> select * from company;

±—±---------±-----+

| id | name | addr |

±—±---------±-----+

| 1 | facebook | usa |

±—±---------±-----+

1 row in set (0.005 sec)

(2)用Mycat服务添加表数据

在Mycat虚拟机上使用mysql命令对表company添加一条数据(2,“basketball”,“usa”),添加完毕后查看表信息。命令如下。

MySQL [USERDB]> insert into company values(2,“bastetball”,“usa”);

Query OK, 1 row affected (0.050 sec)

MySQL [USERDB]> select * from company;

±—±-----------±-----+

| id | name | addr |

±—±-----------±-----+

| 1 | facebook | usa |

| 2 | bastetball | usa |

±—±-----------±-----+

2 rows in set (0.002 sec)

(3)验证Mycat服务对数据库读写操作分离

在Mycat虚拟机节点使用mysql命令,通过9066端口查询对数据库读写操作的分离信息。可以看到所有的写入操作WRITE_LOAD数都在db1主数据库节点上,所有的读取操作READ_LOAD数都在db2主数据库节点上。由此可见,数据库读写操作已经分离到db1和db2节点上了。命令如下。

[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p123456 -e ‘show @@datasource;’

查询结果如图4-1-3所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8KiZiCim-1663114696422)(file:///C:\Users\lenovo\AppData\Local\Temp\ksohtml2904\wps3.jpg)]

图4-1-3 查询读写分离

MySQL [USERDB]> select * from company;

±—±---------±-----+

| id | name | addr |

±—±---------±-----+

| 1 | facebook | usa |

±—±---------±-----+

1 row in set (0.005 sec)

(2)用Mycat服务添加表数据

在Mycat虚拟机上使用mysql命令对表company添加一条数据(2,“basketball”,“usa”),添加完毕后查看表信息。命令如下。

MySQL [USERDB]> insert into company values(2,“bastetball”,“usa”);

Query OK, 1 row affected (0.050 sec)

MySQL [USERDB]> select * from company;

±—±-----------±-----+

| id | name | addr |

±—±-----------±-----+

| 1 | facebook | usa |

| 2 | bastetball | usa |

±—±-----------±-----+

2 rows in set (0.002 sec)

(3)验证Mycat服务对数据库读写操作分离

在Mycat虚拟机节点使用mysql命令,通过9066端口查询对数据库读写操作的分离信息。可以看到所有的写入操作WRITE_LOAD数都在db1主数据库节点上,所有的读取操作READ_LOAD数都在db2主数据库节点上。由此可见,数据库读写操作已经分离到db1和db2节点上了。命令如下。

[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p123456 -e ‘show @@datasource;’

查询结果如图4-1-3所示。

[外链图片转存中…(img-8KiZiCim-1663114696422)]

图4-1-3 查询读写分离

至此,Mycat读写分离数据库案例完成。

相关文章Related

返回栏目>>