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 [email protected]:/usr/local/mysql/ \[root@msater_5 \~\]# rsync -av /usr/local/mysql/data [email protected]:/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_log_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_log_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 \