1. 设置主从从 mysql57 服务器  
 
 
 ( 1 )配置主数据库  
 
 
 [root@msater_5 ~] # systemctl stop filewalld  
  [root@msater_5 ~] # setenforce 0  
  [root@msater_5 ~] # systemctl disable filewalld  
  [root@msater_5 ~] # ls  
  anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz  
  [root@msater_5 ~] # tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz  
  [root@msater_5 ~] # cp -r mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql  
  [root@msater_5 ~] # rm -rf /etc/my.cnf  
  [root@msater_5 ~] # mkdir /usr/local/mysql/mysql-files  
  [root@msater_5 ~] # useradd -r -s /sbin/nologin mysql  
  [root@msater_5 ~] # chown mysql:mysql /usr/local/mysql/mysql-files  
  [root@msater_5 ~] # chown 750 /usr/local/mysql/mysql-files  
  [root@msater_5 ~] # /usr/local/mysql/bin/mysqld --initialize --user=mysql --  
  basedir=/usr/local/mysql  
  2024 -08-21T09 :39:16.036321Z  0  [Warning] CA certi2024-08-21T09:39:16.384066Z  1  
  [Note] A temporary password is generated  for  root@localhost: RV3DtuxCi;A-  
  [root@msater_5 ~] # cp /usr/local/mysql/support-files/mysql.server  
  /etc/init.d/mysql57  
  [root@msater_5 ~] # vim /usr/local/mysql/my.cnf  
  [mysqld]  
  basedir = /usr/local/mysql  
  datadir = /usr/local/mysql/data  
  socket = /tmp/mysql.sock  
  port = 3306  
  log-error = /usr/local/mysql/data/db01-master.err  
  log-bin = /usr/local/mysql/data/binlog  
  server-id = 10  
  character_set_server = utf8mb4  
  [root@msater_5 ~] # service mysql57 start  
  [root@msater_5 ~] # /usr/local/mysql/bin/mysql -p  
  Enter password:  
  mysql> alter user  'root' @ 'localhost'  identified by  'root' ;  
  Query OK,  0  rows affected (0.00 sec)  
  mysql> create user  'li' @ '%'  identified by  'li' ;  
  Query OK,  0  rows affected (0.00 sec)  
  mysql> grant all on *.* to  'li' @ '%' ;  
  uery OK,  0  rows affected (0.01 sec)  
  mysql> flush privileges;  
  Query OK,  0  rows affected (0.01 sec)  
  mysql> create user  'slave' @ '%'  identified by  'slave' ;  
  Query OK,  0  rows affected (0.00 sec)  
  mysql> grant replication slave on *.* to  'slave' @ '%' ;  
  Query OK,  0  rows affected (0.00 sec)  
  mysql> flush privileges;  
  Query OK,  0  rows affected (0.00 sec) 
   2 )配置 slave01 数据库 
   [root@slave01_5 ~] # ls  
  anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz  
  [root@slave01_5 ~] # systemctl stop firewalld  
  [root@slave01_5 ~] # systemctl disable firewalld  
  [root@slave01_5 ~] # setenforce 0  
  [root@slave01_5 ~] # tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz  
  [root@slave01_5 ~] # cp -r mysql-5.7.44-linux-glibc2.12-x86_64  
  /usr/local/mysql  
  [root@slave01_5 ~] # rm -rf /etc/my.cnf  
  [root@slave01_5 ~] # mkdir /usr/local/mysql/mysql-files  
  [root@slave01_5 ~] # useradd -r -s /sbin/nologin mysql  
  [root@slave01_5 ~] # chown mysql:mysql /usr/local/mysql/mysql-files/  
  [root@slave01_5 ~] # chown 750 /usr/local/mysql/mysql-files/  
  [root@slave01_5 ~] # yum -y install rsync  
   3 )配置 slave02 数据库  
   [root@slave01_5 ~] # ls  
  anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz  
  [root@slave01_5 ~] # systemctl stop firewalld  
  [root@slave01_5 ~] # systemctl disable firewalld  
  [root@slave01_5 ~] # setenforce 0  
  [root@slave01_5 ~] # tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz  
  [root@slave01_5 ~] # cp -r mysql-5.7.44-linux-glibc2.12-x86_64  
  /usr/local/mysql  
  [root@slave01_5 ~] # rm -rf /etc/my.cnf  
  [root@slave01_5 ~] # mkdir /usr/local/mysql/mysql-files  
  [root@slave01_5 ~] # useradd -r -s /sbin/nologin mysql  
  [root@slave01_5 ~] # chown mysql:mysql /usr/local/mysql/mysql-files/  
  [root@slave01_5 ~] # chown 750 /usr/local/mysql/mysql-files/  
  [root@slave01_5 ~] # yum -y install rsync 
   4 )同步 data 
   [root@msater_5 ~] # service mysql57 stop  
  [root@msater_5 ~] # rm -rf /usr/local/mysql/data/auto.cnf  
  [root@msater_5 ~] # yum -y install rsync  
  [root@msater_5 ~] # rsync -av /usr/local/mysql/data  
  root@192.168.2.58:/usr/local/mysql/  
  [root@msater_5 ~] # rsync -av /usr/local/mysql/data  
  root@192.168.2.59:/usr/local/mysql/ 
   5 )修改 slave01 配置文件 
   [root@slave01_5 ~] # ls /usr/local/mysql/  
  bin docs lib man README support-files  
  data include LICENSE mysql-files share  
  [root@slave01_5 ~] # vim /usr/local/mysql/my.cnf  
  [mysqld]  
  basedir = /usr/local/mysql  
  datadir = /usr/local/mysql/data  
  socket = /tmp/mysql.sock  
  port = 3310  
  log-error = /usr/local/mysql/data/err.log  
  relay-log = /usr/local/mysql/data/relaylog  
  character_set_server = utf8mb4  
  server-id = 11  
  [root@slave01_5 ~] # cp /usr/local/mysql/support-files/mysql.server  
  /etc/init.d/mysql57  
  [root@slave01_5 ~] # sed -i '$aexport PATH=$PATH:/usr/local/mysql/bin'  
  /etc/profile  
  [root@slave01_5 ~] # source /etc/profile  
   6 )修改 slave02 配置文件  
   [root@slave01_5 ~] # ls /usr/local/mysql/  
  bin docs lib man README support-files  
  data include LICENSE mysql-files share  
  [root@slave01_5 ~] # vim /usr/local/mysql/my.cnf  
  [mysqld]  
  basedir = /usr/local/mysql  
  datadir = /usr/local/mysql/data  
  socket = /tmp/mysql.sock  
  port = 3310  
  log-error = /usr/local/mysql/data/err.log  
  relay-log = /usr/local/mysql/data/relaylog  
  character_set_server = utf8mb4  
  server-id = 12  
  [root@slave01_5 ~] # cp /usr/local/mysql/support-files/mysql.server  
  /etc/init.d/mysql57  
  [root@slave01_5 ~] # sed -i '$aexport PATH=$PATH:/usr/local/mysql/bin'  
  /etc/profile  
  [root@slave01_5 ~] # source /etc/profile  
   7 )主服务器锁表 
   [root@msater_5 ~] # mysql -proot  
  mysql> select user,host from mysql.user;  
  + --------------- + ----------- +  
  | user | host |  
  + --------------- + ----------- +  
  | slave | % |  
  | li | % |  
  | mysql.session | localhost |  
  | mysql.sys | localhost |  
  | root | localhost |  
  + --------------- + ----------- +  
  5  rows  in set  (0.00 sec)  
  mysql> flush tables with read lock;  
  Query OK,  0  rows affected (0.00 sec)  
  mysql> show master status;  
  + --------------- + ---------- + -------------- + ------------------ + ---------------  
  ---- +  
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
  Executed_Gtid_Set | 
  + --------------- + ---------- + -------------- + ------------------ + ---------------  
  ---- +  
  | binlog.000002 |  154  | | |  
  |  
  + --------------- + ---------- + -------------- + ------------------ + ---------------  
  ---- +  
  1  row  in set  (0.00 sec) 
   8 )配置主从服务 
   [root@slave01_5 ~] # mysql -uroot -proot  
  mysql> change master to  
  master_host = "10.0.0.57" ,master_user = "slave" ,master_password = "slave" ,master_lo  
  g_file = "binlog.000002" ,master_log_pos = 154 ;  
  Query OK,  0  rows affected,  2  warnings (0.01 sec)  
  mysql>  start  slave;  
  Query OK,  0  rows affected (0.01 sec)  
  mysql> show slave status\G;  
  ***************************  1 . row ***************************  
  Slave_IO_State: Waiting  for  master to send event  
  Master_Host:  192 .168.2.57  
  Master_User: slave  
  Master_Port:  3306  
  Connect_Retry:  60  
  Master_Log_File: binlog.000002  
  Read_Master_Log_Pos:  154  
  Relay_Log_File: relaylog.000002  
  Relay_Log_Pos:  317  
  Relay_Master_Log_File: binlog.000002  
  Slave_IO_Running: Yes  
  Slave_SQL_Running: Yes 
   9 )配置主从从服务 
   [root@slave01_5 ~] # mysql -uroot -proot  
  mysql> change master to  
  master_host = "10.0.0.57" ,master_user = "slave" ,master_password = "slave" ,master_lo  
  g_file = "binlog.000002" ,master_log_pos = 154 ;  
  Query OK,  0  rows affected,  2  warnings (0.01 sec)  
  mysql>  start  slave;  
  Query OK,  0  rows affected (0.01 sec)  
  mysql> show slave status\G;  
  ***************************  1 . row ***************************  
  Slave_IO_State: Waiting  for  master to send event  
  Master_Host:  192 .168.2.57  
  Master_User: slave  
  Master_Port:  3306  
  Connect_Retry:  60  
  Master_Log_File: binlog.000002  
  Read_Master_Log_Pos:  154  
  Relay_Log_File: relaylog.000002  
  Relay_Log_Pos:  317  
  Relay_Master_Log_File: binlog.000002  
  Slave_IO_Running: Yes 
  Slave_SQL_Running: Yes  
   2. 在 mysql 中添加 eleme 数据库设置为 utf8mb4  
   [root@msater_5 ~] # mysql -proot  
  mysql> unlock tables;  
  Query OK,  0  rows affected (0.00 sec)  
  mysql> create database  if  not exists eleme charset utf8mb4;  
  Query OK,  1  row affected (0.00 sec)  
  mysql> show databases;  
  + -------------------- +  
  | Database |  
  + -------------------- +  
  | information_schema |  
  | eleme |  
  | mysql |  
  | performance_schema |  
  | sys |  
  | test |  
  + -------------------- +  
  6  rows  in set  (0.00 sec) 
   3. 添加表 t_user ( master )  
   mysql> use eleme;  
  Database changed  
  mysql> create table t_user(  
  - > id int primary key auto_increment,  
  - > name varchar(45) not null,  
  - > username varchar(45) not null,  
  - > password varchar(45) not null,  
  - > remark varchar(45)  
  - > );  
  Query OK,  0  rows affected (0.01 sec)  
  mysql> show tables;  
  + ----------------- +  
  | Tables_in_eleme |  
  + ----------------- +  
  | t_user |  
  + ----------------- +  
  1  row  in set  (0.00 sec) 
   4. 添加 2 行记录( master ) 
   mysql> insert into eleme.t_user values(1, ' 超级管理员 ' , 'admin' , 'admin' , ' 超级管理  
  员 ' ),(2, ' 普通用户 ' , 'guest' , 'guest' , ' 普通用户 ' );  
  Query OK,  2  rows affected (0.00 sec)  
  Records:  2  Duplicates:  0  Warnings:  0  
  mysql> select * from eleme.t_user;  
  + ---- + ----------------- + ---------- + ---------- + ----------------- +  
  | id | name | username | password | remark |  
  + ---- + ----------------- + ---------- + ---------- + ----------------- +  
  |  1  |  超级管理员  | admin | admin |  超级管理员  |  
  |  2  |  普通用户  | guest | guest |  普通用户  |  
  + ---- + ----------------- + ---------- + ---------- + ----------------- +  
  2  rows  in set  (0.00 sec)  
   5. 使用 mycat 为三台数据库设置负载均衡(读写分离)  
   1 )前期 jdk 环境部署 
   [root@mycat ~] # systemctl stop firewalld  
  [root@mycat ~] # systemctl disable firewalld  
  [root@mycat ~] # ls  
  anaconda-ks.cfg Mycat-server-1.6.5-release-20180122220033-  
  linux.tar.gz  
  jdk-8u192-linux-x64.tar.gz v  
  [root@mycat ~] # tar -xf jdk-8u192-linux-x64.tar.gz  
  [root@mycat ~] # tar -xf Mycat-server-1.6.5-release-20180122220033-  
  linux.tar.gz  
  [root@mycat ~] # cp -r jdk1.8.0_192/ /usr/local/jdk  
  [root@mycat ~] # cp -r mycat/ /usr/local/  
  [root@mycat ~] # ls /usr/local/jdk/  
  bin lib src.zip  
  COPYRIGHT LICENSE THIRDPARTYLICENSEREADME-JAVAFX.txt  
  include man THIRDPARTYLICENSEREADME.txt  
  javafx-src.zip README.html  
  jre release  
  [root@mycat ~] # sed -i '$aexport JAVA_HOME=/usr/local/jdk' /etc/profile  
  [root@mycat ~] # source /etc/profile  
  [root@mycat ~] # $JAVA_HOME  
  -bash : /usr/local/jdk:  是一个目录  
  [root@mycat ~] # sed -i '$aexport PATH=$PATH:$JAVA_HOME/bin' /etc/profile  
  [root@mycat ~] # source /etc/profile  
  [root@mycat ~] # $PATH  
  -bash : /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin:  
  没有那个文件或目录  
  [root@mycat ~] # javac -version  
  javac  1 .8.0_192 
   2 )修改 server.xml 配置文件 
   [root@mycat ~] # vim /usr/local/mycat/conf/server.xml  
  93  <user  name = "li"  defaultAccount = "true" >  
  94  <property  name = "password" >li</property>  
  95  <property  name = "schemas" >eleme</property>  
  #  注释  
  107  <!--  
  108  <user  name = "user" >  
  109  <property  name = "password" >user</property>  
  110  <property  name = "schemas" >TESTDB</property>  
  111  <property  name = "readOnly" >true</property>  
  112  </user>  
  113  -- >  
   3 )修改 schema.xml  配置文件 
   
  4 )启动服务 
   [root@mycat ~] # /usr/local/mycat/bin/mycat start  
  Starting Mycat-server...  
  [root@mycat ~] # netstat -lnput | grep 8066  
  tcp6  0 0  :::8066 :::* LISTEN  
  1336 /java  
   6. 客户端测试 mycat 
   
  7. 部署 java17 环境  
   1 ) java01  
   [root@java01 ~] # ls  
  anaconda-ks.cfg jdk-17_linux-x64_bin.tar.gz  
  [root@java01 ~] # tar -xf jdk-17_linux-x64_bin.tar.gz  
  [root@java01 ~] # ls  
  anaconda-ks.cfg jdk-17.0.12 jdk-17_linux-x64_bin.tar.gz  
  [root@java01 ~] # cp -r jdk-17.0.12/ /usr/local/jdk  
  [root@java01 ~] # vim /etc/profile  
  export  JAVA_HOME = /usr/local/jdk  
  export  PATH = $PATH : $JAVA_HOME /bin  
  [root@java01 ~] # source /etc/profile  
  [root@java01 ~] # javac --version  
  javac  17 .0.12  
  [root@java01 ~] # firewall-cmd --add-port=8080/tcp --permanent  
  success  
  [root@java01 ~] # firewall-cmd --reload  
  success  
  [root@java01 ~] # ls  
  anaconda-ks.cfg application.yml eleme_server-0.0.1-SNAPSHOT.jar jdk-  
  17.0.12 jdk-17_linux-x64_bin.tar.gz  
  [root@java01 ~] # vim application.yml  
  server:  
  port:  8080  
  spring:  
  datasource:  
  driver-class-name: com.mysql.cj.jdbc.Driver  
  url: jdbc:mysql://10.0.0.11:8066/eleme  
  username: li  
  password: li  
  [root@java01 ~] # java -jar eleme_server-0.0.1-SNAPSHOT.jar  
   2 )浏览器访问: 10.0.0.12:8080  
   3 ) java02  
   [root@java01 ~] # ls  
  anaconda-ks.cfg jdk-17_linux-x64_bin.tar.gz  
  [root@java01 ~] # tar -xf jdk-17_linux-x64_bin.tar.gz  
  [root@java01 ~] # ls  
  anaconda-ks.cfg jdk-17.0.12 jdk-17_linux-x64_bin.tar.gz  
  [root@java01 ~] # cp -r jdk-17.0.12/ /usr/local/jdk  
  [root@java01 ~] # vim /etc/profile  
  export  JAVA_HOME = /usr/local/jdk  
  export  PATH = $PATH : $JAVA_HOME /bin  
  [root@java01 ~] # source /etc/profile  
  [root@java01 ~] # javac --version  
  javac  17 .0.12  
  [root@java01 ~] # firewall-cmd --add-port=8080/tcp --permanent  
  success  
  [root@java01 ~] # firewall-cmd --reload  
  success  
  [root@java01 ~] # ls  
  anaconda-ks.cfg application.yml eleme_server-0.0.1-SNAPSHOT.jar jdk-  
  17.0.12 jdk-17_linux-x64_bin.tar.gz  
  [root@java01 ~] # vim application.yml  
  server:  
  port:  8080  
  spring:  
  datasource:  
  driver-class-name: com.mysql.cj.jdbc.Driver  
  url: jdbc:mysql://10.0.0.11:8066/eleme  
  username: li  
  password: li  
  [root@java01 ~] # java -jar eleme_server-0.0.1-SNAPSHOT.jar  
   4 )浏览器访问: 10.0.0.13:8080  
   8. 部署 LVS-nat 模式  
   1 ) lvs  
   [root@lvs ~] # ifconfig ens33:0 10.0.0.100 broadcast 10.0.0.100 netmask  
  255.255.255.255 up  
  [root@lvs ~] # route add -host 10.0.0.100 dev ens33:0  
  [root@lvs ~] # yum -y install ipvsadm  
  [root@lvs ~] # ipvsadm -C  
  [root@lvs ~] # ipvsadm -A -t 10.0.0.100:8080 -s rr  
  [root@lvs ~] # ipvsadm -a -t 10.0.0.100:8080 -r 10.0.0.12 -g  
  [root@lvs ~] # ipvsadm -a -t 10.0.0.100:8080 -r 10.0.0.13 -g  
  [root@lvs ~] # systemctl stop firewalld  
  [root@lvs ~] # systemctl disable firewalld  
  Removed symlink /etc/systemd/system/multi 
  user.target.wants/firewalld.service.  
  Removed symlink /etc/systemd/system/dbus 
  org.fedoraproject.FirewallD1.service. 
  [root@lvs ~] # setenforce 0  
  [root@lvs ~] # systemctl stop firewalld  
  [root@lvs ~] # ipvsadm -Ln  
  TCP  10 .0.0.100:8080 rr  
  - >  10 .0.0.12:8080 Route  1 0 1  
  - >  10 .0.0.13:8080 Route  1 0 1  
   2 ) java01 
   [root@java01 ~] # ifconfig lo:0 10.0.0.100 broadcast 10.0.0.100 netmask  
  255.255.255.255 up  
  [root@java01 ~] # route add -host 10.0.0.100 dev lo:0  
  [root@java01 ~] # echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  [root@java01 ~] # echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  [root@java01 ~] # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  [root@java01 ~] # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
   3 ) java02 
   [root@java01 ~] # ifconfig lo:0 10.0.0.100 broadcast 10.0.0.100 netmask  
  255.255.255.255 up  
  [root@java01 ~] # route add -host 10.0.0.100 dev lo:0  
  [root@java01 ~] # echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  [root@java01 ~] # echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  [root@java01 ~] # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  [root@java01 ~] # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
   4 )浏览器访问: 10.0.0.100:8080( 外网地址 )  
  