项目概述 、 升级网站运行平台 、 部署缓存服务 、 数据迁移 、 部署集群
案例1:升级网站运行平台
步骤一 清除当前配置 (删除web33主机的tomcat服务的配置)
1)停止网站服务
2)卸载共享存储
[root@web33 ~]# /usr/local/tomcat/bin/shutdown.sh [root@web33 ~]# umount /usr/local/tomcat/webapps/ROOT //卸载当前挂载 [root@web33 ~]# vim /etc/fstab //清除开机挂载 #192.168.4.30:/sitedir /usr/local/tomcat/webapps/ROOT nfs defaults 0 0 :wq
步骤二:部署LNP
1)安装软件
2)挂载共享存储(把NFS30的共享目录/sitedir挂载到nginx的网页目录下)
3)启动服务
要先修改配置文件把访问php页面的请求给本机的9000端口处理 再启动nginx 服务
[root@web33 ~]# yum -y install gcc zlib-devel pcre-devel php php-devel php-mysql php-fpm [root@web33 ~]# tar -xf nginx-1.12.2.tar.gz //解压 [root@web33 ~]# cd nginx-1.12.2 //进源码目录 [root@web33 nginx-1.12.2]# ./configure //配置 [root@web33 nginx-1.12.2]# make && make install [root@web33 ~]# vim /etc/fstab //开机挂载 192.168.4.30:/sitedir /usr/local/nginx/html nfs defaults 0 0 :wq [root@web33 ~]# mount -a //挂载设备 [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; include fastcgi.conf; } :wq [root@web33 ~]# /usr/local/nginx/sbin/nginx //启动服务 [root@web33 ~]# systemctl start php-fpm
步骤三:测试配置
1)编写PHP脚本 (在NFS30的共享目录编写连接MySQL服务的php脚本)
[root@NFS30 ~]# vim /sitedir/linkdb2.php <?php $conn=mysql_connect("192.168.4.11","yaya","123qqq...A"); mysql_select_db("gamedb"); $sql = 'insert into user (name,password) values ("PANGLJ","666888")'; mysql_query($sql); mysql_close(); echo "save data ok"; ?> :wq 2)访问脚本 (在任意1台主机访问web33主机的网站服务 执行linkdb2.php脚本) [root@NFS30 ~]# curl http://192.168.4.33/linkdb2.php save data ok
3)查看数据 (在数据库服务器mysql11 和 mysql22 本机查看数据,
能看到php脚本存储的数据就成功里)
[root@mysql22 ~]# mysql -uroot -p123qqq...A -e 'select * from gamedb.user'; [root@mysql11~]# mysql -uroot -p123qqq...A -e 'select * from gamedb.user';
案例2:部署内存存储服务(部署Redis集群 ,使用内存存储网站的数据)
步骤一:部署redis服务器(6台都要配置)
具体操作步骤: 安装redis软件 、 初始化配置 、停止redis服务、启用集群功能、 启动redis 服务
#配置Host51主机
[root@redisA ~]# rpm -q gcc || yum -y install gcc //安装编译工具 [root@redisA ~]# tar -xf redis-4.0.8.tar.gz //解压 [root@redisA ~]# cd redis-4.0.8/ //进源码目录 [root@redisA ~]# make [root@redisA redis-4.0.8]# make install //安装软件 [root@redisA redis-4.0.8]# ./utils/install_server.sh //初始化配置 遇到提示敲回车 [root@redisA redis-4.0.8]# /etc/init.d/redis_6379 stop //停止服务 [root@redisA redis-4.0.8]# vim /etc/redis/6379.conf //修改配置文件,启用集群配置 70 bind 192.168.4.51 93 port 6379 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 //启动服务 [root@redisA redis-4.0.8]# netstat -utnlp | grep redis-server //查看端口 tcp 0 0 192.168.4.51:6379 0.0.0.0:* LISTEN 29720/redis-server //redis服务端口 tcp 0 0 192.168.4.51:16379 0.0.0.0:* LISTEN 29720/redis-server //集群端口
#配置Host52主机
[root@redisb ~]# rpm -q gcc || yum -y install gcc //安装编译工具 [root@redisb ~]# tar -xf redis-4.0.8.tar.gz //解压 [root@redisb ~]# cd redis-4.0.8/ //进源码目录 [root@redisb ~]# make [root@redisb redis-4.0.8]# make install //安装软件 [root@redisb redis-4.0.8]# ./utils/install_server.sh //初始化配置 遇到提示敲回车 [root@redisb redis-4.0.8]# /etc/init.d/redis_6379 stop //停止服务 [root@redisb redis-4.0.8]# vim /etc/redis/6379.conf //修改配置文件,启用集群配置 70 bind 192.168.4.52 93 port 6379 815 cluster-enabled yes 823 cluster-config-file nodes-6379.conf 829 cluster-node-timeout 5000 [root@redisb redis-4.0.8]# /etc/init.d/redis_6379 start //启动服务 [root@redisb redis-4.0.8]# netstat -utnlp | grep redis-server //查看端口 tcp 0 0 192.168.4.52:6379 0.0.0.0:* LISTEN 29720/redis-server //redis服务端口 tcp 0 0 192.168.4.52:16379 0.0.0.0:* LISTEN 29720/redis-server //集群端口
#配置Host53主机
[root@redisc ~]# rpm -q gcc || yum -y install gcc //安装编译工具 [root@redisc ~]# tar -xf redis-4.0.8.tar.gz //解压 [root@redisc ~]# cd redis-4.0.8/ //进源码目录 [root@redisc ~]# make [root@redisc redis-4.0.8]# make install //安装软件 [root@redisc redis-4.0.8]# ./utils/install_server.sh //初始化配置 遇到提示敲回车 [root@redisc redis-4.0.8]# /etc/init.d/redis_6379 stop //停止服务 [root@redisc redis-4.0.8]# vim /etc/redis/6379.conf //修改配置文件,启用集群配置 70 bind 192.168.4.53 93 port 6379 815 cluster-enabled yes 823 cluster-config-file nodes-6379.conf 829 cluster-node-timeout 5000 [root@redisc redis-4.0.8]# /etc/init.d/redis_6379 start //启动服务 [root@redisc redis-4.0.8]# netstat -utnlp | grep redis-server //查看端口 tcp 0 0 192.168.4.53:6379 0.0.0.0:* LISTEN 29720/redis-server //redis服务端口 tcp 0 0 192.168.4.53:16379 0.0.0.0:* LISTEN 29720/redis-server //集群端口
#配置Host54主机
[root@redisd ~]# rpm -q gcc || yum -y install gcc //安装编译工具 [root@redisd ~]# tar -xf redis-4.0.8.tar.gz //解压 [root@redisd ~]# cd redis-4.0.8/ //进源码目录 [root@redisd ~]# make [root@redisd redis-4.0.8]# make install //安装软件 [root@redisd redis-4.0.8]# ./utils/install_server.sh //初始化配置 遇到提示敲回车 [root@redisd redis-4.0.8]# /etc/init.d/redis_6379 stop //停止服务 [root@redisd redis-4.0.8]# vim /etc/redis/6379.conf //修改配置文件,启用集群配置 70 bind 192.168.4.54 93 port 6379 815 cluster-enabled yes 823 cluster-config-file nodes-6379.conf 829 cluster-node-timeout 5000 [root@redisd redis-4.0.8]# /etc/init.d/redis_6379 start //启动服务 [root@redisd redis-4.0.8]# netstat -utnlp | grep redis-server //查看端口 tcp 0 0 192.168.4.54:6379 0.0.0.0:* LISTEN 29720/redis-server //redis服务端口 tcp 0 0 192.168.4.54:16379 0.0.0.0:* LISTEN 29720/redis-server //集群端口
#配置Host55主机
[root@redise ~]# rpm -q gcc || yum -y install gcc //安装编译工具 [root@redise ~]# tar -xf redis-4.0.8.tar.gz //解压 [root@redise ~]# cd redis-4.0.8/ //进源码目录 [root@redise ~]# make [root@redise redis-4.0.8]# make install //安装软件 [root@redise redis-4.0.8]# ./utils/install_server.sh //初始化配置 遇到提示敲回车 [root@redise redis-4.0.8]# /etc/init.d/redis_6379 stop //停止服务 [root@redise redis-4.0.8]# vim /etc/redis/6379.conf //修改配置文件,启用集群配置 70 bind 192.168.4.55 93 port 6379 815 cluster-enabled yes 823 cluster-config-file nodes-6379.conf 829 cluster-node-timeout 5000 [root@redise redis-4.0.8]# /etc/init.d/redis_6379 start //启动服务 [root@redise redis-4.0.8]# netstat -utnlp | grep redis-server //查看端口 tcp 0 0 192.168.4.55:6379 0.0.0.0:* LISTEN 29720/redis-server //redis服务端口 tcp 0 0 192.168.4.55:16379 0.0.0.0:* LISTEN 29720/redis-server //集群端口
#配置Host56主机
[root@redisf ~]# rpm -q gcc || yum -y install gcc //安装编译工具 [root@redisf ~]# tar -xf redis-4.0.8.tar.gz //解压 [root@redisf ~]# cd redis-4.0.8/ //进源码目录 [root@redisf ~]# make [root@redisf redis-4.0.8]# make install //安装软件 [root@redisf redis-4.0.8]# ./utils/install_server.sh //初始化配置 遇到提示敲回车 [root@redisf redis-4.0.8]# /etc/init.d/redis_6379 stop //停止服务 [root@redisf redis-4.0.8]# vim /etc/redis/6379.conf //修改配置文件,启用集群配置 70 bind 192.168.4.56 93 port 6379 815 cluster-enabled yes 823 cluster-config-file nodes-6379.conf 829 cluster-node-timeout 5000 [root@redisf redis-4.0.8]# /etc/init.d/redis_6379 start //启动服务 [root@redisf redis-4.0.8]# netstat -utnlp | grep redis-server //查看端口 tcp 0 0 192.168.4.56:6379 0.0.0.0:* LISTEN 29720/redis-server //redis服务端口 tcp 0 0 192.168.4.56:16379 0.0.0.0:* LISTEN 29720/redis-server //集群端口
步骤二:创建redis集群
1)配置管理主机: 安装gem软件 创建ruby脚本
[root@mgm ~]# yum -y install ruby rubygems //安装依赖 [root@mgm ~]# gem install redis-3.2.1.gem //安装依赖软件gem程序 [root@mgm ~]# mkdir /root/bin [root@mgm ~]# tar -xf redis-4.0.8.tar.gz [root@mgm ~]# cp redis-4.0.8/src/redis-trib.rb /root/bin/ //拷贝脚本 [root@mgm ~]# [root@mgm ~]# chmod +x /root/bin/redis-trib.rb //确保脚本有执行权限
2)创建集群
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 ...... Can I set the above configuration? (type 'yes' to accept): yes 同意 .... .... >>> Check slots coverage... [OK] All 16384 slots covered. #集群创建成功的提示信息
3)查看集群信息
[root@mgm ~]# redis-trib.rb info 192.168.4.51:6379 192.168.4.51:6379 (8221af1a...) -> 0 keys | 5461 slots | 1 slaves. 192.168.4.52:6379 (fc08343f...) -> 0 keys | 5462 slots | 1 slaves. 192.168.4.53:6379 (94213188...) -> 0 keys | 5461 slots | 1 slaves. [OK] 0 keys in 3 masters. 0.00 keys per slot on average.
步骤三:配置网站服务器 (web33)
(让网站的php脚本可以连接redis 集群中任意服务器查询和存储数据)
1) 安装连接redis集群的redis.so模块
2)修改php的配置文件 php.ini 加载模块
3) 查看支持的模块
[root@web33 ~ ]# yum -y install php-devel //安装依赖 [root@web33 ~]# tar -xf redis-cluster-4.3.0.tgz //解压 [root@web33 ~]# cd redis-4.3.0/ //进入源码目录 [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]# [root@web33 redis-4.3.0]# ./configure --with-php-config=/usr/bin/php-config [root@web33 redis-4.3.0]# make //编译 [root@web33 redis-4.3.0]# make install //安装 Installing shared extensions: /usr/lib64/php/modules/ //提示模块安装目录 [root@web33 redis-4.3.0]# vim /etc/php.ini 728 extension_dir = "/usr/lib64/php/modules/" //模块目录 730 extension = "redis.so" //模块名 :wq [root@web33 redis-4.3.0]# systemctl restart php-fpm //重启php-fpm服务 [root@web33 redis-4.3.0]# php -m | grep redis redis [root@web33 redis-4.3.0]#
步骤四:测试配置
1)在存储服务器共享目录下,创建连接集群PHP脚本
(在脚本连接集群后执行存储数据名和查询数据的命令)
#存储数据的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 echo "save ok"; ?> :wq
#查看数据的PHP脚本
[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 的数据 echo "get ok"; ?> :wq
#存储+查询的PHP脚本
[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","panglijing"); //存数据 echo $client->get("name"); //取数据 ?> :wq [root@NFS30 ~]#
2)访问网站执行脚本(在任意主机访问网站服务器都可以)
[root@NFS30 ~]# curl http://192.168.4.33/set_data.php save ok[root@NFS30 ~]# [root@NFS30 ~]# [root@NFS30 ~]# [root@NFS30 ~]# curl http://192.168.4.33/get_data.php tarenaA tarenaB tarenaC get ok [root@NFS30 ~]# [root@NFS30 ~]# curl http://192.168.4.33/test3.php panglijing[root@NFS30 ~]#
3)命令行连接任意一台redis服务器查看数据(在任意主机连接redis服务器都可以)
[root@host52 ~]# redis-cli -c -h 192.168.4.51 -p 6379 192.168.4.51:6379> keys * 1) "j" 192.168.4.51:6379> exit [root@host52 ~]# redis-cli -c -h 192.168.4.52 -p 6379 192.168.4.52:6379> keys * 1) "k" 2) "name" 192.168.4.52:6379> exit [root@host52 ~]# redis-cli -c -h 192.168.4.53 -p 6379 192.168.4.53:6379> keys * 1) "i" 192.168.4.53:6379>
案例3:数据迁移 (把存储在读写分离结构里的数据 复制到 PXC集群结构里)
在线迁移数据(在网站业务不停止的情况下复制数据到新的存储结构pxc集群里)
步骤一:配置从服务器(把主机192.168.4.66 配置为192.168.4.11的从服务器)
1)在192.168.4.66主机安装数据库服务软件并启动mysqld服务(mysql-5.7.17)
启动mysql服务 , 查看初始密码 登陆后 修改密码 退出 使用新密码登陆
[root@pxcnode66 ~]# tar -xf mysql-5.7.17.tar //解包 [root@pxcnode66 ~]# yum -y install mysql-community-*.rpm //安装软件 [root@pxcnode66 ~]# systemctl start mysqld //启动服务 [root@pxcnode66 ~]# grep password /var/log/mysqld.log //查看初始密码 2019-07-05T01:56:51.895852Z 1 [Note] A temporary password is generated for root@localhost: bB0*uCmu:.Kj [root@pxcnode66 ~]# mysql -uroot -p'bB0*uCmu:.Kj' //初始密码登录 mysql> mysql> alter user root@"localhost" identified by "123qqq...A";//修改登录密码 Query OK, 0 rows affected (0.01 sec) mysql> mysql> exit //断开连接 Bye [root@pxcnode66 ~]# mysql -uroot -p123qqq…A //新密码登录
2)修改服务主配置文件
[root@pxcnode66 ~]# vim /etc/my.cnf [mysqld] server_id=66 //指定server_id :wq [root@pxcnode66 ~]# systemctl restart mysqld //重启服务
3)确保数据一致 (pxcnode66主机 使用mysql11主机的完全备份恢复数据确保数据一致 )
3.1 先在 mysql11主机安装在线热备工具innobackupex 命令
把备份文件拷贝给 从服务pxc66主机
[root@mysql11 ~]# yum -y install 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 -uroot -p123qqq…A /allbak --no-timestamp //备份所有数据,并记录备份数据对应的binlog日志名 [root@mysql11 ~]# scp -r /allbak root@192.168.4.66:/root/ //把备份文件发送给pxcnode66主机
3.2 从服务pxc66主机 是完全备份文件恢复数据,(也要安装
热备工具innobackupex 命令)
[root@pxcnode66 ~]# yum -y install 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@pxcnode66 ~]# systemctl start mysqld //启动服务
4)指定主服务器 (把pxc66 配置为 mysql11 的从服务器)
#在备份文件里查看 完全备份后 对应的日志名和偏移量
[root@pxc66 ~]# grep master11 /root/allbak/xtrabackup_info binlog_pos = filename 'master11.000001', position '5543' [root@pxc66 ~]#
#管理员登录指定主服务器信息
[root@pxcnode66 ~]# mysql -uroot -p123qqq...A mysql> change master to master_host="192.168.4.11", //主服务器ip地址 master_user="repluser", //主服务器授权用户 master_password="123qqq...A", //授权密码 master_log_file="master11.000001", //binlog日志名 master_log_pos=5543; //日志偏移量 Query OK, 0 rows affected, 2 warnings (0.31 sec) mysql> start slave ; mysql> exit //断开连接 Bye
#查看主服务器地址
[root@pxcnode66 ~]# mysql -uroot -p123qqq...A -e "show slave status\G" | grep -i 192.168.4.11 mysql: [Warning] Using a password on the command line interface can be insecure. Master_Host: 192.168.4.11 //主服务器ip地址
#查看状态信息
[root@pxcnode66 ~]# 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 //IO线程正常 Slave_SQL_Running: Yes //SQL线程正常 [root@pxcnode66 ~]#
步骤二:配置第1台PXC服务器(192.168.4.66)
1)停止mysqld服务、卸载mysqld服务软件
[root@pxc66 ~]# systemctl stop mysqld [root@pxc66 ~]# rpm -e --nodeps mysql-community-common mysql-community-devel \ mysql-community-test mysql-community-minimal-debuginfo \ mysql-community-libs mysql-community-server mysql-community-embedded \ mysql-community-embedded-devel mysql-community-embedded-compat \ mysql-community-client mysql-community-libs-compat
2)安装PXC软件、修改配置文件、启动mysql服务
[root@pxcnode66 ~]# cd PXC //进软件目录
#安装依赖
[root@pxcnode66 PXC]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm [root@pxcnode66 PXC]# yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm qpress-1.1-14.11.x86_64.rpm [root@pxcnode66 PXC]# yum -y install qpress-1.1-14.11.x86_64.rpm //解压PXC软件包 tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
//安装软件
[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 :wq
#修改集群服务配置文件
[root@pxcnode66 PXC]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf 8: wsrep_cluster_address=gcomm:// 不需要写ip地址 25: wsrep_node_address=192.168.4.66 //指定本机Ip地址 27: wsrep_cluster_name=pxc-cluster //指定集群名称(另外2台的集群名称要于此相同) 30: wsrep_node_name=pxcnode66 //指定本机主机名 39: wsrep_sst_auth="sstuser:123qqq…A" //数据全量同步授权用户及密码 :wq
//启动服务
[root@pxcnode66 PXC]# systemctl start mysql
//管理员登录
[root@pxcnode66 PXC]# mysql -uroot -p123qqq…A
//用户授权
mysql> grant all on *.* to sstuser@"localhost" identified by "123qqq...A"; mysql> exit;
步骤三:配置第2台PXC服务器(192.168.4.10)
1)安装PXC软件
2) 修改配置文件
3) 启动mysql服务
[root@pxcnode10 ~]# cd PXC //进软件目录
//安装依赖
[root@pxcnode10 PXC]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm [root@pxcnode10PXC]# yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm qpress-1.1-14.11.x86_64.rpm [root@pxcnode10 PXC]# yum -y install qpress-1.1-14.11.x86_64.rpm
//解压PXC软件包
[root@pxcnode10 PXC]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
//安装软件
[root@pxcnode10 PXC]# yum -y install Percona-XtraDB-Cluster-*.rpm
//修改数据库服务配置文件
[root@pxcnode10 PXC]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf [mysqld] server-id=10 //指定server_id :wq
//修改集群服务配置文件
[root@pxcnode10 PXC]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf 8: wsrep_cluster_address=gcomm://192.168.4.66 25: wsrep_node_address=192.168.4.10 //指定本机Ip地址 27: wsrep_cluster_name=pxc-cluster //指定集群名称(另外2台的集群名称要于此相同) 30: wsrep_node_name=pxcnode10 //指定本机主机名 39: wsrep_sst_auth="sstuser:123qqq…A" //数据全量同步授权用户及密码 :wq [root@pxcnode10 PXC]# systemctl start mysql //启动服务 [root@pxcnode10 PXC]# mysql -uroot -p123qqq…A //管理员登录
步骤三:配置第3台PXC服务器(192.168.4.88)
1)安装PXC软件
2) 修改配置文件
3) 启动mysql服务
[root@pxcnode88 ~]# cd 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 qpress-1.1-14.11.x86_64.rpm [root@pxcnode88 PXC]# yum -y install 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 Percona-XtraDB-Cluster-*.rpm //安装软件 [root@pxcnode88 PXC]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf //修改数据库服务配置文件 [mysqld] server-id=88 //指定server_id :wq
[root@pxcnode88 PXC]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf //修改集群服务配置文件 8: wsrep_cluster_address=gcomm://192.168.4.66 25: wsrep_node_address=192.168.4.88 //指定本机Ip地址 27: wsrep_cluster_name=pxc-cluster //指定集群名称(另外2台的集群名称要于此相同) 30: wsrep_node_name=pxcnode88 //指定本机主机名 39: wsrep_sst_auth="sstuser:123qqq…A" //数据全量同步授权用户及密码 :wq [root@pxcnode88 PXC]# systemctl start mysql //启动服务 [root@pxcnode88 PXC]# mysql -uroot -p123qqq…A //管理员登录
步骤五:公共配置(192.168.4.88、192.168.4.10、192.168.4.66)
pxcnode66~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf wsrep_cluster_address=gcomm://192.168.4.66,192.168.4.10,192.168.4.88 //指定集群成员列表 :wq
pxcnode10~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf wsrep_cluster_address=gcomm://192.168.4.66,192.168.4.10,192.168.4.88 //指定集群成员列表 :wq
pxcnode88~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf wsrep_cluster_address=gcomm://192.168.4.66,192.168.4.10,192.168.4.88 //指定集群成员列表 :wq
测试配置
[root@mysql11 ~]# mysql -uroot -p123qqq...A
#访问pxc集群存储数据需要表中有主键字段
mysql> alter table gamedb.user add id int primary key auto_increment first; mysql> exit; [root@web33 ~]# mysql -h192.168.4.66 -uyaya -p123qqq…A gamedb Mysql> insert into gamedb.user(name) values ("pljA"); Mysql> exit ; [root@web33 ~]# mysql -h192.168.4.10 -uyaya -p123qqq…A gamedb Mysql> insert into gamedb.user(name) values ("pljB"); Mysql> exit ; [root@web33 ~]# mysql -h192.168.4.88 -uyaya -p123qqq…A gamedb Mysql> insert into gamedb.user(name) values ("pljC"); Mysql> exit ;
#网站服务33 连接集群中的任意一台服务器都可以查看到 插入的 所有数据
[root@web33 ~]# mysql -h192.168.4.66 -uyaya -p123qqq...A -e 'select * from gamedb.user' [root@web33 ~]# mysql -h192.168.4.10 -uyaya -p123qqq...A -e 'select * from gamedb.user' [root@web33 ~]# mysql -h192.168.4.88 -uyaya -p123qqq...A -e 'select * from gamedb.user'
案例4:部署LB集群
步骤一:安装软件: 在haproxy99主机上安装haproxy软件
步骤二:修改配置文件
步骤三:启动服务
步骤四:测试配置:在网站服务器连接haproxy99主机访问数据
[root@haproxy99 ~]# yum -y install haproxy [root@haproxy99 ~]# vim /etc/haproxy/haproxy.cfg
#文件末尾添加如下行
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.10:3306 check //第2台数据库服务器 server mysql_03 192.168.4.88:3306 check //第3台数据库服务器 :wq [root@haproxy99 haproxy]# [root@haproxy99 ~]# systemctl start haproxy //启动服务 [root@haproxy99 ~]# netstat -utnlp | grep :3306 //查看端口 tcp6 0 0 :::3306 :::* LISTEN 29768/haproxy
测试配置
//第1次连接
[root@web33 ~]# mysql -h192.168.4.99 -uyaya -p123qqq…A -e ‘select @@hostname’ mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | pxcnode66 | +------------+ [root@web33 ~]#
//第2次连接
[root@web33 ~]# mysql -h192.168.4.99 -uyaya -p123qqq…A -e ‘select @@hostname’ mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | pxcnode10 | +------------+ [root@web33 ~]#
//第3次连接
[root@web33 ~]# mysql -h192.168.4.99 -uyaya -p123qqq…A -e ‘select @@hostname’ mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | pxcnode88 | +------------+ [root@web33 ~]#
案例5:部署HA集群
步骤一:准备备用调度器主机192.168.4.98
环境准备: 创建新的虚拟机 并配置ip地址 192.168.4.98
1) 安装haproxy 软件
[root@haproxy98 ~]#yum -y install haproxy
2)修改haproxy98主机haproxy.conf文件
说明要和99主机的配置一样,所以直接拷贝haproxy99主机的配置文件也可以
[root@haproxy98 ~]# scp root@192.168.4.99:/etc/keepalived/keepalived.conf /etc/keepalived/
3)启动haproxy服务
[root@haproxy98 ~]# systemctl start keepalived [root@haproxy98 ~]# netstat -utnalp | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 918/haproxy [root@haproxy98 ~]#
步骤二:安装软件keepalived软件
1)在haproxy99主机安装keepalived软件
[root@haproxy99 ~]# yum -y install keepalived.x86_64
2)在haproxy98主机安装keepalived软件
[root@haproxy98 ~]# yum -y install keepalived.x86_64
步骤三:修改配置文件
1)修改haproxy99主机的配置文件,说明99主机做主调度器 优先级要比98高
#删除文件中不相关的配置
[root@haproxy99 ~]# sed -i '36,$d' /etc/keepalived/keepalived.conf [root@haproxy99 ~]# vim /etc/keepalived/keepalived.conf ..... ...... vrrp_iptables } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.4.100 } } :wq
2)修改haproxy98主机的配置文件,说明98主机做备用调度器 优先级要比99低
[root@haproxy98 ~]# scp root@192.168.4.99:/etc/keepalived/keepalived.conf /etc/keepalived/ [root@haproxy98 ~]# vim /etc/keepalived/keepalived.conf .... state BACKUP .... priority 100 :wq
步骤四:启动服务
1)在haproxy99主机启动keepalived服务
[root@haproxy99 ~]# systemctl start keepalived
2)在haproxy98主机启动keepalived服务
[root@haproxy98 ~]# systemctl start keepalived
步骤五:测试配置
1)客户端连接vip地址,访问数据库服务
[root@web33 ~]# mysql -h192.168.4.100 -uyaya -p123qqq...A -e 'select @@hostname' mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | pxc10 | +------------+
[root@web33 ~]# mysql -h192.168.4.100 -uyaya -p123qqq...A -e 'select @@hostname' mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | pxc88 | +------------+
[root@web33 ~]# mysql -h192.168.4.100 -uyaya -p123qqq...A -e 'select @@hostname' mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | Pxc66
2)测试高可用
#把99主机的keepalived 服务停止模拟 服务宕机里
[root@haproxy99 ~]# systemctl stop keepalived
#在98 主机可以查看到vip地址 192.168.4.100
[root@haproxy98 ~]# ip addr show | grep 192 inet 192.168.4.98/24 brd 192.168.4.255 scope global noprefixroute eth0 inet 192.168.4.100/32 scope global eth0 [root@haproxy98 ~]#
#客户端一直连接vip地址访问数据库服务
[root@web33 ~]# mysql -h192.168.4.100 -uyaya -p123qqq...A -e 'select @@hostname' mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | pxc66 | +------------+ [root@web33 ~]# mysql -h192.168.4.100 -uyaya -p123qqq...A -e 'select @@hostname' mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | pxc10 | +------------+ [root@web33 ~]# mysql -h192.168.4.100 -uyaya -p123qqq...A -e 'select @@hostname' mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | | pxc10 | +------------+
over