Linux云计算 |【第四阶段】PROJECT2-DAY2

news2024/9/28 5:44:40

综合项目内容:

升级网站运行平台、部署Redis内存存储服务集群、数据迁移、部署PXCMySQL实现强同步、部署LB和HA集群

一、项目拓扑结构

PROJECT2-DAY1回顾:

服务架构缺点分析:

① 数据存储结构存在单点故障(需增调度器)

② 网络服务每次都是从源站提取数据

③ 将tomcat网站服务升级网站运行平台LNMP;

项目需求:

① 升级网站运行平台(LNMP)

② 部署内存存储服务器(redis集群)

③ 部署PXC集群;

④ 解决数据库服务负载问题;

⑤ 解决调度器单点故障问题;

PROJECT2-DAY2:

实验延续PROJECT2-DAY1,服务器启动并检查服务正常,确保关闭所有主机的防火墙和SELinux;

案例1:升级网站运行平台

具体配置如下:

① 清除当前配置(tomcat、tomcat的共享存储)

② 部署LNMP(源码安装Nginx、php-fpm、php及php-mysql)

③ 测试配置(编写php脚本)

补充:因数据不存储在Nginx服务器数据库(可选安装mariadb-server及mariadb、mariadb-devel)


步骤1:清除当前WEB服务器配置

web33操作

① 停止Tomcat网站服务

[root@web33 ~]# /usr/local/tomcat/bin/shutdown.sh   //停止tomcat服务
[root@web33 ~]# vim /etc/rc.local   //注释服务开机自启
# usr/local/tomcat/bin/startup.sh

② 卸载NFS共享存储

[root@web33 ~]# df -h | grep /sitedir   //查看挂载点
192.168.4.30:/sitedir    3.0G   32M  3.0G    2% /usr/local/tomcat/webapps/ROOT
[root@web33 ~]# umount /usr/local/tomcat/webapps/ROOT/   //卸载tomcat网站的挂载点
[root@web33 ~]# vim /etc/fstab    //注释共享挂载
# 192.168.4.30:/sitedir /usr/local/tomcat/webapps/ROOT nfs defaults 0 0

步骤2:部署LNMP平台架构

web33操作

① 安装Nginx和所需环境及依赖包

[root@web33 ~]# yum -y install gcc pcre-devel zlib-devel

# 源码安装Nginx(参考:lnmp_soft/nginx-1.12.2.tar.gz )

[root@web33 lnmp_soft]# tar -xf nginx-1.12.2.tar.gz
[root@web33 lnmp_soft]# cd nginx-1.12.2/
[root@web33 nginx-1.12.2]# ./configure    //配置Makefile
[root@web33 nginx-1.12.2]# make && make install   //编译安装
[root@web33 nginx-1.12.2]# ls /usr/local/nginx/
conf  html  logs  sbin

# 安装PHP及连接MySQL依赖包

[root@web33 nginx-1.12.2]# yum -y install php php-mysql php-fpm

② 挂载NFS共享存储

[root@web33 ~]# showmount -e 192.168.4.30      //查看NFS服务器的共享
Export list for 192.168.4.30:
/sitedir *
[root@web33 ~]# vim /etc/fstab     //Nginx挂载NFS共享存储
192.168.4.30:/sitedir /usr/local/nginx/html nfs defaults 0 0
[root@web33 ~]# mount -a
[root@web33 ~]# mount | grep "/usr/local/nginx/html"
192.168.4.30:/sitedir on /usr/local/nginx/html type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.4.33,local_lock=none,addr=192.168.4.30)

③ 启动Nginx服务

[root@web33 ~]# vim +65 /usr/local/nginx/conf/nginx.conf     //修改配置文件,开启动态解析功能;
…
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }
…
[root@web33 ~]# /usr/local/nginx/sbin/nginx    //启动服务
[root@web33 ~]# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local   //开机自启
[root@web33 ~]# ss -nlptu | grep :80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=14279,fd=6),("nginx",pid=14278,fd=6))

④ 启动PHP-FPM服务

[root@web33 ~]# systemctl start php-fpm.service
[root@web33 ~]# systemctl enable php-fpm.service
[root@web33 ~]# ss -nlptu | grep :9000
tcp    LISTEN     0      128    127.0.0.1:9000                  *:*                   users:(("php-fpm",pid=14312,fd=0),("php-fpm",pid=14311,fd=0),("php-fpm",pid=14310,fd=0),("php-fpm",pid=14309,fd=0),("php-fpm",pid=14308,fd=0),("php-fpm",pid=14306,fd=6))

步骤3:测试配置

nfs30操作

① 编写连接Mysql11数据库服务器PHP脚本

[root@nfs30 ~]# vim /sitedir/linkdb2.php
<?php
$conn=mysql_connect("192.168.4.11","army","123qqq...A");
mysql_select_db("gamedb");
$sql = 'insert into user (name) values ("Jackie")';   //存入数据“Jackie”
mysql_query($sql);
mysql_close();
echo "save data ok";
?>

# WEB服务器上查看挂载的网页目录是否增加php文件

[root@web33 ~]# ls /usr/local/nginx/html/
linkdb2.php  linkdb.jsp  test.html

② 使用浏览器访问脚本

③ 在mysql11主数据库服务器查看数据

[root@mysql11 ~]# mysql -uarmy -p123qqq...A
mysql> select * from gamedb.user;
+--------+
| name   |
+--------+
| jack   |
| AnJ    |
| lucy   |
| Jackie |
+--------+
5 rows in set (0.00 sec)

案例2:部署Redis内存存储服务

具体操作如下:

① 部署6台redis服务器

② 创建redis集群(1个管理主机 --> 3个主从节点的redis服务器)

③ 配置Nginx网站服务器支持php和redis;

④ 测试配置

PROJECT2-DAY2拓扑:

服务器IP及角色规划:

主机名

IP地址:端口

角色

redisA

192.168.4.51:6379

Redis服务器

redisB

192.168.4.52:6379

Redis服务器

redisC

192.168.4.53:6379

Redis服务器

redisD

192.168.4.54:6379

Redis服务器

redisE

192.168.4.55:6379

Redis服务器

redisF

192.168.4.56:6379

Redis服务器

mgm

192.168.4.57

管理集群主机


步骤1:部署Redis服务器

redisA、redisB、redisC、redisD、redisE、redisF操作

① 搭建redis服务器(命令行方式,以redisA为例)

[root@redisA ~]# rpm -q gcc || yum -y install gcc     //检查编译环境
[root@redisA ~]# tar -zxf redis-4.0.8.tar.gz    //解压软件包
[root@redisA ~]# cd redis-4.0.8/
[root@redisA redis-4.0.8]# make install    //安装(默认已有Makefile)
[root@redisA redis-4.0.8]# ./utils/install_server.sh    //初始化配置

[root@redisA redis-4.0.8]# /etc/init.d/redis_6379 stop    //停止服务
Stopping ...
Redis stopped

[root@redisA redis-4.0.8]# vim /etc/redis/6379.conf     //修改配置文件,启用集群配置
70 # bind 127.0.0.1
89 protected-mode no    //关闭保护机制
815 cluster-enabled yes
823 cluster-config-file nodes-6379.conf
829 cluster-node-timeout 5000

[root@redisA redis-4.0.8]# /etc/init.d/redis_6379 start    //启动服务
Starting Redis server...
[root@redisA redis-4.0.8]# ss -nlptu | grep redis-server    //查看服务端口
tcp    LISTEN     0      128       *:6379                  *:*                   users:(("redis-server",pid=14455,fd=7))
tcp    LISTEN     0      128       *:16379                 *:*                   users:(("redis-server",pid=14455,fd=10))
tcp    LISTEN     0      128      :::6379                 :::*                   users:(("redis-server",pid=14455,fd=6))
tcp    LISTEN     0      128      :::16379                :::*                   users:(("redis-server",pid=14455,fd=9))

扩展:自定义脚本,部署redis服务器并开启集群功能(注意:需提前准备redis软件包)

[root@redisA ~]# cat setup_redis.sh
#!/bin/bash
# 描述:该脚本用来部署Redis服务器,并启用集群配置
 
# 检查编译环境
rpm -q gcc || yum -y install gcc
 
# 解压软件包(注释:提前准备软件包)
[ -e "redis-4.0.8"] && echo "目录存在" || tar -zxvf redis-4.0.8.tar.gz
 
# 编译安装
cd redis-4.0.8/
make install
 
# 初始化配置(注意:服务启动需要些许时间)
cd utils/
echo | source install_server.sh
sleep 5     //休眠5秒
 
# 停止redis服务
/etc/init.d/redis_6379 stop
 
# 启用集群配置
sed -i '89s/yes/no/' /etc/redis/6379.conf   # 关闭保护 protected-mode no
sed -i '70s/^/# /' /etc/redis/6379.conf   # 注释 bind 127.0.0.1
sed -i '815s/# //' /etc/redis/6379.conf   # cluster-enabled yes
sed -i '823s/# //' /etc/redis/6379.conf   # cluster-config-file nodes-6379.conf
sed -i '829s/# //' /etc/redis/6379.conf   # cluster-node-timeout 15000
sed -i '829s/15000/5000/' /etc/redis/6379.conf  # cluster-node-timeout 5000
 
# 清除数据目录
rm -rf /var/lib/redis/6379/*
 
# 启动redis服务
service redis_6379 start

② 使用脚本为其它节点主机部署Redis服务及开启集群功能(脚本方式,以redisB为例)

[root@redisB ~]# chmod +x setup_redis.sh
[root@redisB ~]# ./setup_redis.sh
[root@redisB ~]# ss -nlptu | grep redis-server
tcp    LISTEN     0      128       *:6379                  *:*                   users:(("redis-server",pid=4841,fd=7))
tcp    LISTEN     0      128       *:16379                 *:*                   users:(("redis-server",pid=4841,fd=10))
tcp    LISTEN     0      128      :::6379                 :::*                   users:(("redis-server",pid=4841,fd=6))
tcp    LISTEN     0      128      :::16379                :::*                   users:(("redis-server",pid=4841,fd=9))

提示:使用脚本完成其它Redis服务器的部署及集群功能启用,执行完成后,检查redis-server的服务端口是都正常;

步骤2:创建redis集群

mgm操作

① 配置管理主机,安装软件包

[root@mgm ~]# yum -y install ruby rubygems   //安装依赖(提供gem)
[root@mgm ~]# gem install redis-3.2.1.gem  //安装依赖软件gem程序
Successfully installed redis-3.2.1
Parsing documentation for redis-3.2.1
Installing ri documentation for redis-3.2.1
1 gem installed
  • 补充:RubyGems 是 Ruby 的一个包管理器,它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具gem;
  • 补充:redis-3.2.1.gem,搭建redis集群所需要的依赖软件(redis和ruby接口相关)

② 拷贝源码包中的redis-trib.rb集群管理脚本

[root@mgm ~]# mkdir /root/bin
[root@mgm ~]# tar -zxf redis-4.0.8.tar.gz
[root@mgm ~]# cp redis-4.0.8/src/redis-trib.rb /root/bin/   //拷贝集群管理脚本
[root@mgm ~]# chmod +x /root/bin/redis-trib.rb       //确保脚本有执行权限
[root@mgm ~]# redis-trib.rb help    //查看帮助

③ 创建集群

[root@mgm ~]# redis-trib.rb create --replicas 1 \
> 192.168.4.51:6379 192.168.4.52:6379 192.168.4.53:6379 \
> 192.168.4.54:6379 192.168.4.55:6379 192.168.4.56:6379
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.4.51:6379
192.168.4.52:6379
192.168.4.53:6379
Adding replica 192.168.4.55:6379 to 192.168.4.51:6379
Adding replica 192.168.4.56:6379 to 192.168.4.52:6379
Adding replica 192.168.4.54:6379 to 192.168.4.53:6379
M: e8e65683bf1e972091fce5f14ec1553e8b0cb56d 192.168.4.51:6379
   slots:0-5460 (5461 slots) master
M: d86b0c0a530a2532b3e170972d34c5f42ad328fa 192.168.4.52:6379
   slots:5461-10922 (5462 slots) master
M: 333a311d39cbee56e46a3cf2b7bfb5b43f53e0e2 192.168.4.53:6379
   slots:10923-16383 (5461 slots) master
S: c0ef41c30a8303150240750a227449d97be7415e 192.168.4.54:6379
   replicates 333a311d39cbee56e46a3cf2b7bfb5b43f53e0e2
S: 4b44c1dfdaead8d54f4fd8e914accc059dd6bfc0 192.168.4.55:6379
   replicates e8e65683bf1e972091fce5f14ec1553e8b0cb56d
S: 8f506e5cf8316226d981f203cc47b3eef0fca23d 192.168.4.56:6379
   replicates d86b0c0a530a2532b3e170972d34c5f42ad328fa
Can I set the above configuration? (type 'yes' to accept): yes   //同意以上配置
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join....
>>> Performing Cluster Check (using node 192.168.4.51:6379)
M: e8e65683bf1e972091fce5f14ec1553e8b0cb56d 192.168.4.51:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 333a311d39cbee56e46a3cf2b7bfb5b43f53e0e2 192.168.4.53:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 4b44c1dfdaead8d54f4fd8e914accc059dd6bfc0 192.168.4.55:6379
   slots: (0 slots) slave
   replicates e8e65683bf1e972091fce5f14ec1553e8b0cb56d
S: c0ef41c30a8303150240750a227449d97be7415e 192.168.4.54:6379
   slots: (0 slots) slave
   replicates 333a311d39cbee56e46a3cf2b7bfb5b43f53e0e2
M: d86b0c0a530a2532b3e170972d34c5f42ad328fa 192.168.4.52:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 8f506e5cf8316226d981f203cc47b3eef0fca23d 192.168.4.56:6379
   slots: (0 slots) slave
   replicates d86b0c0a530a2532b3e170972d34c5f42ad328fa
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

④ 查看集群信息

[root@mgm ~]# redis-trib.rb info 192.168.4.51:6379
192.168.4.51:6379 (e8e65683...) -> 0 keys | 5461 slots | 1 slaves.   //分配哈希槽5461
192.168.4.53:6379 (333a311d...) -> 0 keys | 5461 slots | 1 slaves.   //分配哈希槽5461
192.168.4.52:6379 (d86b0c0a...) -> 0 keys | 5462 slots | 1 slaves.   //分配哈希槽5462
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

[root@mgm ~]# redis-trib.rb check 192.168.4.51:6379
>>> Performing Cluster Check (using node 192.168.4.51:6379)
M: e8e65683bf1e972091fce5f14ec1553e8b0cb56d 192.168.4.51:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 333a311d39cbee56e46a3cf2b7bfb5b43f53e0e2 192.168.4.53:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 4b44c1dfdaead8d54f4fd8e914accc059dd6bfc0 192.168.4.55:6379
   slots: (0 slots) slave
   replicates e8e65683bf1e972091fce5f14ec1553e8b0cb56d
S: c0ef41c30a8303150240750a227449d97be7415e 192.168.4.54:6379
   slots: (0 slots) slave
   replicates 333a311d39cbee56e46a3cf2b7bfb5b43f53e0e2
M: d86b0c0a530a2532b3e170972d34c5f42ad328fa 192.168.4.52:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 8f506e5cf8316226d981f203cc47b3eef0fca23d 192.168.4.56:6379
   slots: (0 slots) slave
   replicates d86b0c0a530a2532b3e170972d34c5f42ad328fa
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

⑤ 测试配置(在客户端连接集群中的任意一台服务器存取数据)

[root@redisA ~]# scp /usr/local/bin/redis-cli 192.168.4.5:/usr/local/bin/
[root@localhost ~]# redis-cli -c -h 192.168.4.51 -p 6379
192.168.4.51:6379> ping
PONG

192.168.4.51:6379> SET x 100
-> Redirected to slot [16287] located at 192.168.4.53:6379  //提示存储在53节点
OK
192.168.4.53:6379> KEYS *
1) "x"

192.168.4.53:6379> SET y 200
OK
192.168.4.53:6379> KEYS *
1) "x"
2) "y"

192.168.4.53:6379> SET z 300
-> Redirected to slot [8157] located at 192.168.4.52:6379   //提示存储在52节点
OK
192.168.4.52:6379> KEYS *     //在52节点查看数据,只有变量z
1) "z"

192.168.4.52:6379> GET x
-> Redirected to slot [16287] located at 192.168.4.53:6379  //连接53节点获取数据
"100"

192.168.4.53:6379> GET y
"200"

192.168.4.53:6379> GET z
-> Redirected to slot [8157] located at 192.168.4.52:6379   //提示存储在52节点
"300"

192.168.4.52:6379> SET i 400
-> Redirected to slot [15759] located at 192.168.4.53:6379  //提示存储在53节点
OK

192.168.4.53:6379> SET j 500
-> Redirected to slot [3564] located at 192.168.4.51:6379   //提示存储在51节点
OK

步骤3:配置Nginx网站服务器支持php和Redis

web33操作

① 安装php扩展依赖包

[root@web33 ~]# yum -y install php-devel

② 安装php-redis(参考:/linux-soft/4/redis-cluster-4.3.0.tgz ,注意软件包版本)

[root@web33 ~]# tar -zxf redis-cluster-4.3.0.tgz
[root@web33 ~]# cd redis-4.3.0/      //切换到软件包目录
[root@web33 redis-4.3.0]# ls

[root@web33 redis-4.3.0]# phpize   //创建configure命令及配置信息文件/usr/bin/php-config
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
[root@web33 redis-4.3.0]# ls

[root@web33 redis-4.3.0]# ./configure --with-php-config=/usr/bin/php-config
[root@web33 redis-4.3.0]# make && make install   //编译安装
…
Installing shared extensions:     /usr/lib64/php/modules/   //提示模块安装目录
[root@web33 redis-4.3.0]# ls /usr/lib64/php/modules/    //查看目录列表

③ 修改php配置文件并重启服务

[root@web33 redis-4.3.0]# vim /etc/php.ini
728 extension_dir = "/usr/lib64/php/modules/"   //模块目录
730 extension = "redis.so"   //模块名
...
[root@web33 redis-4.3.0]# systemctl restart php-fpm     //重启php-fpm服务
[root@web33 redis-4.3.0]# php -m | grep -i redis     //查看模块
redis

测试配置:

① 在FTP存储服务器的共享目录下,创建连接集群PHP脚本

[root@nfs30 ~]# vim /sitedir/set_data.php        //存储数据脚本
<?php
$redis_list = ['192.168.4.51:6379','192.168.4.52:6379','192.168.4.53:6379','192.168.4.54:6379','192.168.4.55:6379','192.168.4.56:6379'];  //定义redis服务器列表
$client = new RedisCluster(NUll,$redis_list);  //定义连接redis服务器变量
$client->set("i","tarenaA "); //存储数据 变量名 i
$client->set("j","tarenaB ");  //存储数据 变量名 j
$client->set("k","tarenaC ");  //存储数据 变量名 k
?>
[root@nfs30 ~]# vim /sitedir/get_data.php    //获取数据脚本
<?php
$redis_list = ['192.168.4.51:6379','192.168.4.52:6379','192.168.4.53:6379','192.168.4.54:6379','192.168.4.55:6379','192.168.4.56:6379']; //定义redis服务器列表
$client = new RedisCluster(NUll,$redis_list);  //定义连接redis服务器变量
echo $client->get("i");  //获取变量i 的数据
echo $client->get("j");  //获取变量j 的数据
echo $client->get("k");  //获取变量k 的数据
?>
[root@nfs30 ~]# vim /sitedir/test3.php    //存/取数据脚本
<?php
$redis_list = ['192.168.4.51:6379','192.168.4.52:6379','192.168.4.53:6379','192.168.4.54:6379','192.168.4.55:6379','192.168.4.56:6379'];
$client = new RedisCluster(NUll,$redis_list);
$client->set(“name“,”AnJern”);  //存数据
echo $client->get(“name”);  //取数据
?>

② 访问网站执行脚本(在任意主机访问网站服务器都可以)

[root@localhost ~]# curl http://192.168.4.33/set_data.php
[root@localhost ~]# curl http://192.168.4.33/get_data.php
tarenaA tarenaB tarenaC
[root@localhost ~]# curl http://192.168.4.33/test3.php

③ 命令行连接任意一台redis服务器查看数据(在任意主机连接redis服务器都可以)

[root@localhost ~]# redis-cli -c -h 192.168.4.51 -p 6379
192.168.4.51:6379> KEYS *
1) "\xe2\x80\x9cname\xe2\x80\x9c"
2) "j"
192.168.4.51:6379> exit

[root@localhost ~]# redis-cli -c -h 192.168.4.52 -p 6379
192.168.4.52:6379> KEYS *
1) "z"
2) "k"
192.168.4.52:6379> exit

[root@localhost ~]# redis-cli -c -h 192.168.4.53 -p 6379
192.168.4.53:6379> KEYS *
1) "x"
2) "y"
3) "i"
192.168.4.53:6379> exit

案例3:数据迁移

要求如下:

① 配置一台作为mysql11主数据库服务器的从服务器(同步mysql11数据)

② 配置第1台PXC服务器

③ 配置第2台PXC服务器

④ 配置第3台PXC服务器

⑤ 测试配置


PROJECT2-DAY2拓扑:

服务器IP及角色规划:

主机名

IP地址

角色

pxcnode66

192.168.4.66

第1台数据库服务器

pxcnode77

192.168.4.77

第2台数据库服务器

pxcnode88

192.168.4.88

第3台数据库服务器


步骤1:配置从服务器

pxcnode66操作

- 为了实现数据迁移,把pxcnode66配置为mysql11的从服务器,且确保数据一致;

① 安装数据库服务软件并启动mysqld服务

[root@pxcnode66 ~]# tar -xf mysql-5.7.17.tar
[root@pxcnode66 ~]# ls *.rpm     //查看软件列表

[root@pxcnode66 ~]# yum -y install mysql-community-*
[root@pxcnode66 ~]# systemctl start mysqld
[root@pxcnode66 ~]# systemctl enable mysqld
[root@pxcnode66 ~]# ls /var/lib/mysql

[root@pxcnode66 ~]# ss -nlptu | grep :3306
tcp    LISTEN     0      80       :::3306                 :::*                   users:(("mysqld",pid=1683,fd=22))

# 初始化数据库密码

[root@pxcnode66 ~]# grep password /var/log/mysqld.log
2021-06-23T14:52:15.889904Z 1 [Note] A temporary password is generated for root@localhost: KmtikV!jX7JL
[root@pxcnode66 ~]# mysqladmin -uroot -p'KmtikV!jX7JL' password '123qqq...A'
[root@pxcnode66 ~]# mysql -uroot -p123qqq...A    //新密码登录
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

② 修改配置文件(指定server_id)

[root@pxcnode66 ~]# vim /etc/my.cnf
[mysqld]
server_id=66
[root@pxcnode66 ~]# systemctl restart mysqld   //重启服务

补充:指定server_id并准备同步主服务器信息前,需要确保主机之间数据一致;

③ 确保数据一致(使用mysql11主机的完全备份恢复数据确保数据一致)

[root@mysql11 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm   //安装依赖软件
[root@mysql11 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm  //安装在线热备软件
[root@mysql11 ~]# innobackupex --user root --password 123qqq...A --slave-info /allbak --no-timestamp    //备份所有数据,并记录备份数据对应的binlog日志名
[root@mysql11 ~]# ls /allbak/

补充:--slave-info 记录备份数据对应的binlog日志名

# 把备份文件发送给pxcnode66主机

[root@mysql11 ~]# scp -r /allbak/ root@192.168.4.66:/root/

# 在pxcnode66主机上恢复mysql11的数据库数据

[root@pxcnode66 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
[root@pxcnode66 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
[root@pxcnode66 ~]# systemctl stop mysqld
[root@pxcnode66 ~]# rm -rf /var/lib/mysql/*
[root@pxcnode66 ~]# innobackupex --apply-log /root/allbak/  //准备恢复数据
[root@pxcnode66 ~]# innobackupex --copy-back /root/allbak/  //恢复数据
[root@pxcnode66 ~]# chown -R mysql:mysql /var/lib/mysql   //由于拷贝的备份数据权限为root,需修改所有者为mysql
[root@pxcnode66 ~]# systemctl start mysqld  //启动服务

④ 指定主服务器

[root@pxcnode66 ~]# cat /root/allbak/xtrabackup_info | grep master   //根据备份信息,查binlog日志
binlog_pos = filename 'master11.000006', position '154'

[root@pxcnode66 ~]# mysql -uroot -p123qqq...A     //同步主服务器数据
mysql> change master to
    -> master_host='192.168.4.11',
    -> master_user='repluser',
    -> master_password='123qqq...A',
    -> master_log_file='master11.000006',
    -> master_log_pos=154;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> start slave;      //启动slave 程序
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G     //查看slave状态
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.4.11    //主服务器ip地址
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master11.000006
          Read_Master_Log_Pos: 154
               Relay_Log_File: pxcnode66-relay-bin.000002
                Relay_Log_Pos: 319
        Relay_Master_Log_File: master11.000006
             Slave_IO_Running: Yes    //IO线程正常
            Slave_SQL_Running: Yes    //SQL线程正常
…

# 查看数据是否同步

mysql> select * from gamedb.user;
+--------+
| name   |
+--------+
| jack   |
| AnJ    |
| lucy   |
| Jackie |
+--------+
5 rows in set (0.01 sec)
[root@pxcnode66 ~]# ls /var/lib/mysql/

步骤2:配置第1台PXC服务器

pxcnode66操作

① 停止mysqld服务、卸载mysqld服务软件

[root@pxcnode66 ~]# systemctl stop mysqld     //停止服务
[root@pxcnode66 ~]# rpm -qa | grep -i mysql   //查看安装的MySQL服务软件
mysql-community-libs-5.7.17-1.el7.x86_64
mysql-community-server-5.7.17-1.el7.x86_64
mysql-community-embedded-5.7.17-1.el7.x86_64
mysql-community-embedded-devel-5.7.17-1.el7.x86_64
mysql-community-embedded-compat-5.7.17-1.el7.x86_64
perl-DBD-MySQL-4.023-6.el7.x86_64
mysql-community-common-5.7.17-1.el7.x86_64
mysql-community-client-5.7.17-1.el7.x86_64
mysql-community-devel-5.7.17-1.el7.x86_64
mysql-community-test-5.7.17-1.el7.x86_64
mysql-community-libs-compat-5.7.17-1.el7.x86_64
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64
[root@pxcnode66 ~]# rpm -e --nodeps mysql-community-server mysql-community-embedded-compat mysql-community-common mysql-community-client mysql-community-devel mysql-community-test mysql-community-libs-compat mysql-community-minimal-debuginfo mysql-community-libs mysql-community-embedded mysql-community-embedded-devel    //卸载所有的MySQL服务软件
警告:/etc/my.cnf 已另存为 /etc/my.cnf.rpmsave

② 安装PXC软件、修改配置文件、启动mysql服务

[root@pxcnode66 ~]# cd pxc
[root@pxcnode66 pxc]# ls

[root@pxcnode66 pxc]# rpm -ivh qpress-1.1-14.11.x86_64.rpm    //安装依赖
[root@pxcnode66 pxc]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar      //解压PXC软件包
[root@pxcnode66 pxc]# ls

提示:安装PXC中途出现报错,需将percona-xtrabackup-24 >= 2.4.12要求Percona在线备份工具的版本大于2.4.12;

[root@pxcnode66 pxc]# yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
[root@pxcnode66 pxc]# yum -y install Percona-XtraDB-Cluster-*.rpm   //安装软件

# 修改数据库服务配置文件

[root@pxcnode66 pxc]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
…
[mysqld]
server-id=66    //指定server_id
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
…

# 修改集群服务配置文件

[root@pxcnode66 pxc]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.66,192.168.4.77,192.168.4.88  //集群成员列表
wsrep_node_address=192.168.4.66      //指定本机ip地址
wsrep_cluster_name=pxc-cluster       //指定集群名称(另外2台的集群名称要于此相同)
wsrep_node_name=pxcnode66            //指定本机主机名
wsrep_sst_auth="sstuser:123qqq...A"  //数据全量同步授权用户及密码

# 启动集群服务(mysql@bootstrap)

[root@pxcnode66 pxc]# systemctl start mysql@bootstrap
[root@pxcnode66 pxc]# systemctl enable mysql@bootstrap

# 查看端口信息

[root@pxcnode66 pxc]# ss -nlptu | grep :3306   //查看MySQL服务端口
tcp    LISTEN     0      80       :::3306                 :::*                   users:(("mysqld",pid=13570,fd=32))
[root@pxcnode66 pxc]# ss -nlptu | grep :4567     //查看集群通信端口
tcp    LISTEN     0      128       *:4567                  *:*                   users:(("mysqld",pid=13570,fd=11))

③ 数据库管理员登录、sstuser用户授权、查看集群状态信息

虽卸载MySQL,但还保留完全备份的/var/lib/mysql/数据,所以无需再初始化密码

[root@pxcnode66 pxc]# mysql -uroot -p123qqq...A
mysql> grant all on *.* to sstuser@'localhost' identified by '123qqq...A';   //用户授权
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show status like '%wsrep%';    //查看集群状态信息
+----------------------------------+--------------------------------------+
| Variable_name                    | Value                                |
+----------------------------------+--------------------------------------+
| wsrep_incoming_addresses         | 192.168.4.66:3306                    |
| wsrep_cluster_weight             | 1                                    |
| wsrep_cluster_state_uuid         | b034b1be-d447-11eb-9a0c-12896a6ff1b1                  |
| wsrep_cluster_status             | Primary                              |
| wsrep_connected                  | ON                                   |
| wsrep_ready                      | ON                                   |
+----------------------------------+--------------------------------------+
71 rows in set (0.00 sec)

# 查看状态信息依然是192.168.4.11的从服务器

[root@pxcnode66 pxc]# mysql -uroot -p123qqq...A -e "show slave status\G" | grep -i "yes"
mysql: [Warning] Using a password on the command line interface can be insecure.
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

步骤3:配置第2台PXC服务器

192.168.4.77操作

① 安装所需依赖和软件包

[root@maxscale77 ~]# cd pxc/
[root@maxscale77 pxc]# rpm -ivh qpress-1.1-14.11.x86_64.rpm   //安装依赖
[root@maxscale77 pxc]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar     //解压PXC软件包
[root@maxscale77 pxc]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm   //安装依赖
[root@maxscale77 pxc]# yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm    //升级在线备份工具
[root@maxscale77 pxc]# yum -y install Percona-XtraDB-Cluster-*.rpm     //安装软件

② 修改配置文件

# 修改数据库服务配置文件

[root@maxscale77 pxc]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
…
[mysqld]
Server-id=77    //指定server_id
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
…

# 修改集群服务配置文件

[root@maxscale77 pxc]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.66,192.168.4.77,192.168.4.88  //集群成员列表
wsrep_node_address=192.168.4.77      //指定本机ip地址
wsrep_cluster_name=pxc-cluster       //指定集群名称(另外2台的集群名称要于此相同)
wsrep_node_name=pxcnode77            //指定本机主机名
wsrep_sst_auth="sstuser:123qqq...A"  //数据全量同步授权用户及密码

③ 启动mysql服务(mysql)

[root@pxcnode77 pxc]# systemctl start mysql
[root@pxcnode77 pxc]# systemctl enable mysql
[root@pxcnode77 pxc]# ss -nlptu | grep :3306   //查看MySQL服务端口
tcp    LISTEN     0      80       :::3306                 :::*                   users:(("mysqld",pid=5268,fd=27))
[root@pxcnode77 pxc]# ss -nlptu | grep :4567   //查看集群端口
tcp    LISTEN     0      128       *:4567                  *:*                   users:(("mysqld",pid=5268,fd=11))

步骤4:配置第3台PXC服务器

192.168.4.88操作

① 安装所需依赖和软件包

[root@pxcnode88 ~]# cd pxc/
[root@pxcnode88 pxc]# rpm -ivh qpress-1.1-14.11.x86_64.rpm    //安装依赖
[root@pxcnode88 pxc]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar   //解压PXC软件包
[root@pxcnode88 pxc]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm    //安装依赖
[root@pxcnode88 pxc]# yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm   //升级在线备份工具
[root@pxcnode88 pxc]# yum -y install Percona-XtraDB-Cluster-*.rpm      //安装软件

② 修改配置文件

# 修改数据库服务配置文件

[root@pxcnode88 pxc]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
…
[mysqld]
server-id=88    //指定server_id
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
…

# 修改集群服务配置文件

[root@pxcnode77 pxc]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.66,192.168.4.77,192.168.4.88   //集群成员列表
wsrep_node_address=192.168.4.77      //指定本机Ip地址
wsrep_cluster_name=pxc-cluster       //指定集群名称(另外2台的集群名称要于此相同)
wsrep_node_name=pxcnode77            //指定本机主机名
wsrep_sst_auth="sstuser:123qqq...A"  //数据全量同步授权用户及密码

③ 启动mysql服务

[root@pxcnode88 pxc]# systemctl start mysql
[root@pxcnode88 pxc]# systemctl enable mysql
[root@pxcnode88 pxc]# ss -nlptu | grep :3306
tcp    LISTEN     0      80       :::3306                 :::*                   users:(("mysqld",pid=3558,fd=28))
[root@pxcnode88 pxc]# ss -nlptu | grep :4567
tcp    LISTEN     0      128       *:4567                  *:*                   users:(("mysqld",pid=3558,fd=11))

登录任意一台数据库服务器,查看集群状态信息

mysql> show status like '%wsrep%';
+----------------------------------+-------------------------------------------------------+
| Variable_name                    | Value                                                 |
+----------------------------------+-------------------------------------------------------+
| wsrep_incoming_addresses         | 192.168.4.66:3306,192.168.4.88:3306,192.168.4.77:3306 |
| wsrep_cluster_weight             | 3                                                     |
| wsrep_cluster_state_uuid         | b034b1be-d447-11eb-9a0c-12896a6ff1b1                  |
| wsrep_cluster_status             | Primary                                               |
| wsrep_connected                  | ON                                                    |
| wsrep_ready                      | ON                                                    |
+----------------------------------+-------------------------------------------------------+
71 rows in set (0.00 sec)

步骤5:测试配置

① 存储数据:在网站服务器连接3台PXC集群主机存储数据(web33操作)

[root@web33 ~]# yum -y install mysql-community-client   //或者安装Mariadb
[root@web33 ~]# systemctl start mysqld
[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.66 gamedb
mysql> insert into gamedb.user values('testA');
mysql> exit
[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.77 gamedb
mysql> insert into gamedb.user values('testB');
mysql> exit
[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.88 gamedb
mysql> insert into gamedb.user values('testC');
mysql> exit

常见报错:数据表没有primary key

ERROR 1105 (HY000): Percona-XtraDB-Cluster prohibits use of DML command on a table (gamedb.user) without an explicit primary key with pxc_strict_mode = ENFORCING or MASTER

解决办法:

mysql> alter table gamedb.user modify name char(10) primary key;

② 查询数据:在网站服务器连接PXC集群主机查询数据

[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.66 gamedb
mysql> select * from gamedb.user;
+--------+
| name   |
+--------+
…
| testA  |
| testB  |
| testC  |
+--------+
8 rows in set (0.00 sec)
mysql> exit

[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.77 gamedb
mysql> select * from gamedb.user;
+--------+
| name   |
+--------+
…
| testA  |
| testB  |
| testC  |
+--------+
8 rows in set (0.00 sec)
mysql> exit

[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.88 gamedb
mysql> select * from gamedb.user;
+--------+
| name   |
+--------+
…
| testA  |
| testB  |
| testC  |
+--------+
8 rows in set (0.00 sec)
mysql> exit

案例4:部署LB集群(负载均衡集群)

配置步骤如下:

① 安装haproxy软件

② 修改配置文件

③ 启动服务

④ 测试配置

准备1台主机做haproxy调度器,配置ip地址、主机名;运行haproxy服务,接受客户端访问数据库的连接请求,把请求平均分发给3台PXC集群主机;

PROJECT2-DAY2拓扑:

服务器IP及角色规划:

主机名

IP地址

角色

haproxy99

192.168.4.99

调度器


步骤1:安装haproxy软件

haproxy99操作

[root@haproxy99 ~]# yum -y install haproxy.x86_64

步骤2:修改配置文件

[root@haproxy99 ~]# vim /etc/haproxy/haproxy.cfg
Global   //全局配置(默认即可)
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
stats socket /var/lib/haproxy/stats
 
defaults     //默认配置(默认即可)
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
listen status         //定义监控页面
    mode http         //模式为http
    bind *:80         //端口80
    stats enable      //启用配置
    stats uri /admin  //访问目录名
    stats auth admin:admin   //登录用户与密码
 
listen mysql_3306 *:3306   //定义haproxy服务名称与端口号
    mode    tcp            //mysql服务 得使用 tcp 协议
    option  tcpka          //使用长连接
    balance roundrobin     //调度算法(轮询)
    server  mysql_01 192.168.4.66:3306 check  //第1台数据库服务器
    server  mysql_02 192.168.4.77:3306 check  //第2台数据库服务器
    server  mysql_03 192.168.4.88:3306 check  //第3台数据库服务器

步骤3:启动服务

[root@haproxy99 ~]# systemctl start haproxy.service
[root@haproxy99 ~]# systemctl enable haproxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
[root@haproxy99 ~]# netstat -utnlp | grep :3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1856/haproxy
[root@haproxy99 ~]# netstat -utnlp | grep haproxy
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      1856/haproxy
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1856/haproxy
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1856/haproxy
udp        0      0 0.0.0.0:54518           0.0.0.0:*                           1855/haproxy

步骤4:测试配置

# 在网站服务器连接haproxy99主机访问数据

[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.99 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode66  |      //第1次连接
+------------+

[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.99 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode77  |      //第2次连接
+------------+

[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.99 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode88  |      //第3次连接
+------------+

案例5:部署HA集群(高可用集群)

具体配置如下:

① 准备备用haproxy调度器主机

② 安装软件

③ 修改配置文件

④ 启动服务

⑤ 测试配置

PROJECT2-DAY2拓扑:


步骤1:准备备用调度器主机(haproxy98操作)

① 安装haproxy软件

[root@haproxy98 ~]# yum -y install haproxy.x86_64

② 修改配置文件(或直接拷贝haproxy99主机的配置文件)

[root@haproxy98 ~]# vim /etc/haproxy/haproxy.cfg
…
listen status         //定义监控页面
    mode http      //模式为http
    bind *:80       //端口80
    stats enable     //启用配置
    stats uri /admin  //访问目录名
    stats auth admin:admin   //登录用户与密码
 
listen mysql_3306 *:3306   //定义haproxy服务名称与端口号
    mode    tcp         //mysql服务 得使用 tcp 协议
    option  tcpka        //使用长连接
    balance roundrobin   //调度算法
    server  mysql_01 192.168.4.66:3306 check  //第1台数据库服务器
    server  mysql_02 192.168.4.77:3306 check  //第2台数据库服务器
    server  mysql_03 192.168.4.88:3306 check  //第3台数据库服务器
…

③ 启动haproxy服务

[root@haproxy98 ~]# systemctl start haproxy.service
[root@haproxy98 ~]# systemctl enable haproxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
[root@haproxy98 ~]# netstat -utnlp | grep :3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1758/haproxy
[root@haproxy98 ~]# netstat -utnlp | grep haproxy
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      1758/haproxy
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1758/haproxy
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1758/haproxy
udp        0      0 0.0.0.0:53459           0.0.0.0:*                           1757/haproxy

步骤2:部署keepalived高可用服务

① 安装keepalived软件,并修改配置文件(haproxy99操作)

[root@haproxy99 ~]# yum -y install keepalived.x86_64
[root@haproxy99 ~]# sed -i '36,$d' /etc/keepalived/keepalived.conf   //删除无关的配置行
[root@haproxy99 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
…
   vrrp_iptables
…
}
 
vrrp_instance VI_1 {
    state MASTER      //主服务器标识
    interface eth0
    virtual_router_id 51
    priority 100      //haproxy99主机做主服务器,优先级要比haproxy98主机高
    advert_int 1
    authentication {
        auth_type PASS    //主备服务器连接方式
        auth_pass 1111    //连接密码
    }
    virtual_ipaddress {
        192.168.4.100     //定义VIP地址
    }
}

② 安装keepalived软件,并修改配置文件(haproxy98操作)

[root@haproxy98 ~]# yum -y install keepalived.x86_64
[root@haproxy98 ~]# sed -i '36,$d' /etc/keepalived/keepalived.conf   //删除无关的配置行
[root@haproxy98 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
…
   vrrp_iptables
…
}
 
vrrp_instance VI_1 {
    state BACKUP     //备用服务器标识
    interface eth0
    virtual_router_id 51
    priority 95         //优先级要比haproxy99主机低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.4.100      //定义VIP地址
    }
}

步骤3:启动服务

① 在haproxy99主机启动keepalived服务

[root@haproxy99 ~]# systemctl start keepalived.service   //启动服务
[root@haproxy99 ~]# ip add show | grep 192.168.4.100   //可查看到vip地址
    inet 192.168.4.100/32 scope global eth0

② 在haproxy98主机启动keepalived服务

[root@haproxy98 ~]# systemctl start keepalived.service   //启动服务
[root@haproxy98 ~]# ip add show | grep 192.168.4.100   //查看不到vip地址

步骤4:测试配置

① 使用网站服务器连接vip地址,访问数据库服务,测试轮询效果

[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.100 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode66  |
+------------+
[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.100 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode77  |
+------------+
[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.100 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode88  |
+------------+

② 测试高可用

# 模拟测试停止haproxy99主机的keepalived服务,查看VIP地址

[root@haproxy99 ~]# ip add show | grep 192.168.4.100
    inet 192.168.4.100/32 scope global eth0
[root@haproxy99 ~]# systemctl stop keepalived.service   //停止keepalived服务
[root@haproxy99 ~]# ip add show | grep 192.168.4.100   //查看不到vip地址

# 在备用的haproxy98主机查看地址

[root@haproxy98 ~]# ip add show | grep 192.168.4.100
inet 192.168.4.100/32 scope global eth0

# 使用网站服务器再次连接vip地址,访问数据库服务

[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.100 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode66  |
+------------+
[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.100 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode77  |
+------------+
[root@web33 ~]# mysql -uarmy -p123qqq...A -h192.168.4.100 -e 'select @@hostname'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| pxcnode88  |
+------------+

 

小结:

本篇章节为【第四阶段】PROJECT2-DAY2 的学习笔记,这篇笔记可以初步了解到 升级网站运行平台、部署Redis内存存储服务集群、数据迁移、部署PXCMySQL实现强同步、部署LB和HA集群。


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2172532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32低功耗实验学习日记

STM32低功耗实验学习日记 写于2024/9/25晚 文章目录 STM32低功耗实验学习日记1. 简介2. STM32F1电源系统2.1 电源系统2.2 电源管理2.2.1 睡眠模式2.2.2 停止模式2.2.3 待机模式 2.3 相关寄存器介绍2.3.1 系统控制寄存器(SCB_SCR)2.3.2 电源控制寄存器(PWR_CR)2.3.3 电源控制/状…

智能BI项目第六期

本期任务 分析系统现在的不足分布式消息队列分布式消息队列 RabbitMQ 入门实战 系统现状不足分析总结 让我们来讨论一下单机系统的问题。 现状&#xff1a;我们的异步处理是通过本地线程池实现的。 但是存在以下问题&#xff1a; 无法集中限制&#xff0c;仅能单机限制&a…

kafka监控平台Kafdrop:使用记录

背景 AI的发展真是太方便了&#xff0c;让它给我推荐一款轻量级&#xff0c;没有学习曲线的kafka监控平台&#xff0c;它就给我推荐这一款。用了一下果然没有一点学习曲线。 目前已经满足了我的需求&#xff0c;可视化界面&#xff0c;topic、消息、消费者group信息以及消费情…

【项目经验分享】深度学习点云算法毕业设计项目案例定制

以下是深度学习与点云算法相关的毕业设计项目案例&#xff0c;涵盖了点云数据的分类、分割、重建、配准、目标检测等多个领域&#xff0c;适用于智能驾驶、机器人导航、3D建模等多个应用场景&#xff1a; 案例截图&#xff1a; 基于PointNet的3D点云分类与分割PointNet在大规…

2-105 基于matlab的GA-WNN预测算法

基于matlab的GA-WNN预测算法。遗传算法优化小波神经网络的步骤&#xff1a;1设种群规模为M。随机生成初始种群N , 采用实数编码对个体Ni编码。2、用1中的种群N训练, WNN参数由初始化获得。3、计算种群N中个体适应度值。满足终止条件则跳至6, 不满足执行4。4、适应度大的个体, 选…

基于Hive和Hadoop的白酒分析系统

本项目是一个基于大数据技术的白酒分析系统&#xff0c;旨在为用户提供全面的白酒市场信息和深入的价格分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以 Spark 为核…

每日论文5—06TCAS2锁相环电流匹配的gain-boosting电荷泵

《Gain-Boosting Charge Pump for Current Matching in Phase-Locked Loop》 06TCAS2 本质上和cascode来增加输出电阻&#xff0c;从而减小电流变化的思路是一样的。这里用了放大器来增加输出电阻。具体做法如下图&#xff1a; 如图1(a)&#xff0c;A3把Vb和Vx拉平&#xff0…

GPT理论

1.GPT发展 Transformer是一个用作翻译任务的模型&#xff0c;谷歌出品。 GPT全称 lmproving Language Understanding by Generative Pre-Training&#xff0c;用预训练语言理解模型。OPENAI出品。 BERT全称Pre-training of Deep BidirectionalTransformers for Language Unde…

从 Kafka 到 WarpStream: 用 MinIO 简化数据流

虽然 Apache Kafka 长期以来一直是流数据的行业标准&#xff0c;但新的创新替代方案正在重塑生态系统。其中之一是 WarpStream&#xff0c;它最近在 Confluent 的所有权下进入了新的篇章。此次收购进一步增强了 WarpStream 提供高性能、云原生数据流的能力&#xff0c;巩固了其…

数据结构与算法——Java实现 19.队列

目录 一、概述 二、链表实现队列 接口定义 接口实现类 测试类 三、环形数组实现队列 优点 下标计算 判满和判空 判满 判空 辅助变量size判空和判满 方法1 接口定义 接口实现类 测试类 方式2 接口定义 接口实现类 测试类 方法3 接口定义 接口实现类 测试类 生活鲜少给人留下退…

C语言 | Leetcode C语言题解之第440题字典序的第K小数字

题目&#xff1a; 题解&#xff1a; #define MIN(x, y) ((x) < (y) ? (x) : (y))int getSteps(int curr, long n) {int steps 0;long first curr;long last curr;while (first < n) {steps MIN(last, n) - first 1;first first * 10;last last * 10 9;}return …

WMware安装WMware Tools(Linux~Ubuntu)

1、这里终端里面输入sudo apt upgrade用于更新最新的包 sudo apt upgrade 2、安装 open-vm-tools-desktop 包&#xff0c; Ps&#xff1a;这里是以为我已经安装好了。 udo apt install open-vm-tools-desktop -y3、最后重启就大功告成了 reboot 4、测试是否成功&#xff1a…

翻译器在线翻译:开启多语言交流新时代

随着国际交流、商务合作、文化交融以及互联网的飞速发展&#xff0c;人们对于跨越语言鸿沟的需求日益迫切。翻译工具成为了我们必备的一个工具&#xff0c;这篇文章我们一起来探讨一些好用的翻译器在线翻译工具吧。 1.在线福昕翻译 链接直达>>https://fanyi.pdf365.cn/…

[贪心+数学/数学+位运算] 两种方法O(1)解决 消减整数

标题&#xff1a;[贪心数学/数学位运算] 两种方法O(1)解决 消减整数 个人主页水墨不写bug 目录 一、题目&#xff1a;消减整数(Newcoder) 二、题目分析 1.理解题意&#xff1a; 2.解决问题 解法详解一&#xff1a;贪心数学 解法一参考代码&#xff1a; 解法详解二&#xf…

【RabbitMQ——具体使用场景】

1. 异步 1.1 同步异步的问题&#xff08;串行&#xff09; 串行方式&#xff1a;将订单信息写入数据库成功后&#xff0c;发送注册邮件&#xff0c;再发送注册短信。以上三个任务全部完成后&#xff0c;返回给客户端 public void makeOrder(){// 1 :保存订单 orderService.…

电脑退域或切换系统账号后系统黑屏

之前加入域时迁移了账号系统&#xff0c;导致退域后本地账号系统没了东西黑屏但能看到鼠标。也登不了域账号了一顿慌张&#xff08;操作如下&#xff09; 解决&#xff1a;又加回了域哈哈哈 重启电脑按F8进不去安全模式&#xff0c;找不到触发时间... winr打开运行&#xff0c;…

什么是托管安全信息和事件管理 SIEM?

什么是 SIEM&#xff1f; 安全信息和事件管理 ( SIEM ) 解决方案最初是一种集中式日志聚合解决方案。SIEM 解决方案会从整个组织网络中的系统收集日志数据&#xff0c;使组织能够从单一集中位置监控其网络。 随着时间的推移&#xff0c;SIEM解决方案已发展成为一个完整的威胁…

Jenkins简介;Jenkins安装

一&#xff0c;Jenkins简介 1、什么是Jenkins Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。 2、Jenkins的作用 持续的软…

【Golang】(推荐项目)Go后端工程项目

Go后端工程项目 在这个基于项目的课程中&#xff0c;我们将从头开始用 Go 构建一个完整的 REST API。 本次项目将从构建一个简单的 TCP 服务器开始&#xff0c;目标是探索 Go 中的 net/http 包。本项目的目标是获得构建和推理一般后端系统的基础知识。 为什么推荐这个项目&am…

操作台厂家如何设计工作台面才能让企业高效办公?

在快节奏的现代商业环境中&#xff0c;高效办公已成为企业竞争力的重要体现。嘉德立作为一家专注设计操作台厂家&#xff0c;很明确的告诉大家设计一款既能提升工作效率&#xff0c;又能兼顾员工舒适度的工作台面&#xff0c;是赢得市场的关键。那么&#xff0c;如何巧妙地设计…