2024年8月7日(mysql主从 )

回顾
主服务器

root@master_mysql \~\]# yum -y install rsync \[root@master_mysql \~\]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar \[root@master_mysql \~\]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz \[root@master_mysql \~\]# cp -r mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql \[root@master_mysql \~\]# cd /usr/local/mysql/ \[root@master_mysql mysql\]# mkdir mysql-files \[root@master_mysql mysql\]# useradd -r -s /sbin/nologin mysql \[root@master_mysql mysql\]# id mysql uid=997(mysql) gid=995(mysql) 组=995(mysql) \[root@master_mysql mysql\]# chown mysql:mysql ./mysql-files/ ![](https://i-blog.csdnimg.cn/direct/6e84e6652ca1481fb07b436cee134672.png) \[root@master_mysql mysql\]# rm -rf /etc/my.cnf \[root@master_mysql mysql\]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ ![](https://i-blog.csdnimg.cn/direct/8db79f6c2c5d4ad990289a8895606291.png) \[root@master_mysql mysql\]# ./bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data \[root@master_mysql mysql\]# cp support-files/mysql.server /etc/init.d/mysql8 \[root@master_mysql mysql\]# vim my.cnf ```bash [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@master_mysql mysql\]# service mysql8 start . SUCCESS! \[root@master_mysql mysql\]# ./bin/mysql -P 3306 -p mysql\> alter user 'root'@'localhost' identified by '123456'; mysql\> exit \[root@master_mysql mysql\]# service mysql8 restart Shutting down MySQL. SUCCESS! Starting MySQL.. SUCCESS!

从服务器(不用初始化也不用启动)

root@slave_mysql \~\]# yum -y install rsync \[root@slave_mysql \~\]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar \[root@slave_mysql \~\]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz \[root@slave_mysql \~\]# cp -r mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql \[root@slave_mysql \~\]# useradd -r -s /sbin/nologin mysql \[root@slave_mysql \~\]# mkdir /usr/local/mysql/mysql-files \[root@slave_mysql \~\]# chown mysql:mysql /usr/local/mysql/mysql-files/ ![](https://i-blog.csdnimg.cn/direct/b55b122f4b3b49d5b7770701907c2b57.png) \[root@slave_mysql \~\]# rm -rf /etc/my.cnf \[root@slave_mysql \~\]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8

主服务器(同步)

root@master_mysql \~\]# rm -rf /usr/local/mysql/data/auto.cnf \[root@master_mysql \~\]# service mysql8 stop Shutting down MySQL. SUCCESS! \[root@master_mysql \~\]# rm -rf /usr/local/mysql/data/auto.cnf \[root@master_mysql \~\]# ls /usr/local/mysql/data/ \[root@master_mysql \~\]# rsync -av /usr/local/mysql/data [email protected]:/usr/local/mysql/ #从服务器IP地址

从服务器

root@slave_mysql \~\]# vim /usr/local/mysql/data/my.cnf [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock log-error=/usr/local/mysql/data/err.log log-relay=/usr/local/mysql/data/relaylog character_set_server=utf8mb4 server-id=11 \[root@slave_mysql \~\]# service mysql8 start \[root@slave_mysql \~\]# /usr/local/mysql/bin/mysql -p123456

1、 主从复制的实现

root@master_mysql \~\]# vim /etc/profile export PATH=/usr/local/mysql/bin:$PATH \[root@master_mysql \~\]# sorce /etc/profile ```sql mysql> create user 'slave'@'192.168.8.%' identified by 'slave_123' '; Query OK, 0 rows affected (0.01 sec) mysql> grant replication slave on *.* to 'slave'@'192.168.8.%'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> flush tables with read lock; Query OK, 0 rows affected (0.00 sec) mysql> show master status; ```

root@slave_mysql \~\]# vim /etc/profile export PATH=/usr/local/mysql/bin:$PATH \[root@slave_mysql \~\]# source /etc/profile \[root@slave_mysql \~\]# mysql -h192.168.8.164 -uslave -pslave_123 --get-server-public-key \[root@slave_mysql \~\]# mysql -p123456 -P3306 ```sql mysql> stop slave; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> reset slave; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> change master to -> master_host='192.168.8.164', -> master_user='slave', -> master_password='slave_123', -> master_log_file='binlog.000009', -> master_log_pos=447; Query OK, 0 rows affected, 8 warnings (0.00 sec) mysql> start slave; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> show slave status\G; ```

2、主服务器创建表并向表里添加数据
sql 复制代码
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

mysql> create database if not exists test charset utf8mb4;
Query OK, 1 row affected (0.00 sec)

mysql> use test;
Database changed
mysql> create table student(id int primary key,name varchar(45) not null,gender varchar(4) not null);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into student values(1,'张三','男');
Query OK, 1 row affected (0.02 sec)

mysql> insert into student values(2,'凤凰','女');
Query OK, 1 row affected (0.01 sec)

mysql> insert into student values(3,'张三','男');
Query OK, 1 row affected (0.00 sec)
mysql> select * from student;
+----+--------+--------+
| id | name   | gender |
+----+--------+--------+
|  1 | 张三   | 男     |
|  2 | 凤凰   | 女     |
|  3 | 张三   | 男     |
+----+--------+--------+
3 rows in set (0.00 sec)
3、从服务器查看同步并写入东西(从服务器不容许写入东西)
sql 复制代码
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> use test;
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> select * from student;
+----+--------+--------+
| id | name   | gender |
+----+--------+--------+
|  1 | 张三   | 男     |
|  2 | 凤凰   | 女     |
|  3 | 张三   | 男     |
+----+--------+--------+
3 rows in set (0.00 sec)

mysql> insert into student values(4,'李网','女');
Query OK, 1 row affected (0.00 sec)

mysql> select * from student;
+----+--------+--------+
| id | name   | gender |
+----+--------+--------+
|  1 | 张三   | 男     |
|  2 | 凤凰   | 女     |
|  3 | 张三   | 男     |
|  4 | 李网   | 女     |
+----+--------+--------+
4 rows in set (0.00 sec)
4、主服务器插入数据
sql 复制代码
mysql> insert into student values(6,'章节','男');
Query OK, 1 row affected (0.01 sec)

mysql> select * from student;
+----+--------+--------+
| id | name   | gender |
+----+--------+--------+
|  1 | 张三   | 男     |
|  2 | 凤凰   | 女     |
|  3 | 张三   | 男     |
|  6 | 章节   | 男     |
+----+--------+--------+
4 rows in set (0.00 sec)
5、从服务器查看同步
sql 复制代码
mysql> select * from student;
+----+--------+--------+
| id | name   | gender |
+----+--------+--------+
|  1 | 张三   | 男     |
|  2 | 凤凰   | 女     |
|  3 | 张三   | 男     |
|  4 | 李网   | 女     |
|  6 | 章节   | 男     |
+----+--------+--------+
5 rows in set (0.00 sec)
二、SQL语句
1、新增
  1. insert into库名称.表名

(id,username,password)values(1,"abc","123")

  1. insert into 表名称 values(1, "name","word")

  2. insert into 表名称 select* from 其他表

  3. insert into 表 values (),()

2、删除
  1. delete from 表名

  2. deletefrom表名称 where id=3

  3. delete from 表名称 where age>8

  4. delete from 表 where name on ("a","b","c")

3、修改
  1. update mysql.user set host='%' where name='root'

  2. update user set password='abc' where username="zhangsan"

4、查询
1. 单表查询

1.1 select 字段名列表 from表名称,索引

1.2

5、远程连接数据库的

username

password

url (mysql IP或者域名 数据库名称 端口号 )

sql 复制代码
mysql> create user 'li'@'%' identified by '123';
Query OK, 0 rows affected (0.02 sec)

mysql> grant all on *.* to 'li'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> select count(*) from student;
+----------+
| count(*) |
+----------+
|        4 |
+----------+
1 row in set (0.06 sec)

mysql> select count(1) from student;
+----------+
| count(1) |
+----------+
|        4 |
+----------+
1 row in set (0.06 sec)

mysql> select a.*,b.* from student as a,student as b;
+----+--------+--------+----+--------+--------+
| id | name   | gender | id | name   | gender |
+----+--------+--------+----+--------+--------+
|  6 | 章节   | 男     |  1 | 张三   | 男     |
|  3 | 张三   | 男     |  1 | 张三   | 男     |
|  2 | 凤凰   | 女     |  1 | 张三   | 男     |
|  1 | 张三   | 男     |  1 | 张三   | 男     |
|  6 | 章节   | 男     |  2 | 凤凰   | 女     |
|  3 | 张三   | 男     |  2 | 凤凰   | 女     |
|  2 | 凤凰   | 女     |  2 | 凤凰   | 女     |
|  1 | 张三   | 男     |  2 | 凤凰   | 女     |
|  6 | 章节   | 男     |  3 | 张三   | 男     |
|  3 | 张三   | 男     |  3 | 张三   | 男     |
|  2 | 凤凰   | 女     |  3 | 张三   | 男     |
|  1 | 张三   | 男     |  3 | 张三   | 男     |
|  6 | 章节   | 男     |  6 | 章节   | 男     |
|  3 | 张三   | 男     |  6 | 章节   | 男     |
|  2 | 凤凰   | 女     |  6 | 章节   | 男     |
|  1 | 张三   | 男     |  6 | 章节   | 男     |
+----+--------+--------+----+--------+--------+

#别名
mysql> select id as 编号,name,gender from student;
+--------+--------+--------+
| 编号   | name   | gender |
+--------+--------+--------+
|      1 | 张三   | 男     |
|      2 | 凤凰   | 女     |
|      3 | 张三   | 男     |
|      6 | 章节   | 男     |
+--------+--------+--------+
6、mysql函数

排序:max min

汇总:count sum avg

数制:二进制 八进制 十进制 十六进制
只有select子句和having子句,order by 子句中能使用聚合函数1,where子句红中不能使用聚合函数,当使用聚合函数查询以后,不能使用where条件,如果添加条件 ,就使用having

sql 复制代码
mysql> select * from student order by gender desc;
+----+--------+--------+
| id | name   | gender |
+----+--------+--------+
|  1 | 张三   | 男     |
|  3 | 张三   | 男     |
|  6 | 章节   | 男     |
|  2 | 凤凰   | 女     |
+----+--------+--------+
4 rows in set (0.00 sec)

mysql> select * from student order by gender asc;
+----+--------+--------+
| id | name   | gender |
+----+--------+--------+
|  2 | 凤凰   | 女     |
|  1 | 张三   | 男     |
|  3 | 张三   | 男     |
|  6 | 章节   | 男     |
+----+--------+--------+
4 rows in set (0.00 sec)

mysql> select gender as 性别,count(gender) as 人数 from student grroup by gender;
+--------+--------+
| 性别   | 人数   |
+--------+--------+
| 男     |      3 |
| 女     |      1 |
+--------+--------+
2 rows in set (0.00 sec)

mysql> create table product(
    -> id int primary key auto_increment,
    -> name varchar(45) not null,
    -> price float not null,
    -> qty int not null);
Query OK, 0 rows affected (0.01 sec)

mysql> desc product;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int         | NO   | PRI | NULL    | auto_increment |
| name  | varchar(45) | NO   |     | NULL    |                |
| price | float       | NO   |     | NULL    |                |
| qty   | int         | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

mysql> insert into product (name,price,qty) values("香蕉",8.5,200);
Query OK, 1 row affected (0.00 sec)


mysql> insert into product (name,price,qty) values("苹果",12.5,40)0);
Query OK, 1 row affected (0.00 sec)

mysql> insert into product (name,price,qty) values("菠萝",12.4,700);
Query OK, 1 row affected (0.01 sec)

mysql> insert into product (name,price,qty) values("哈密瓜",18.3,7400);
Query OK, 1 row affected (0.00 sec)

mysql> select * from product order by price;
+----+-----------+-------+-----+
| id | name      | price | qty |
+----+-----------+-------+-----+
|  1 | 香蕉      |   8.5 | 200 |
|  3 | 菠萝      |  12.4 |  70 |
|  2 | 苹果      |  12.5 | 400 |
|  4 | 哈密瓜    |  18.3 | 400 |
+----+-----------+-------+-----+


mysql> select * from (select * from product order by qty) as a ordder by a.price;
+----+-----------+-------+-----+
| id | name      | price | qty |
+----+-----------+-------+-----+
|  1 | 香蕉      |   8.5 | 200 |
|  3 | 菠萝      |  12.4 |  70 |
|  2 | 苹果      |  12.5 | 400 |
|  4 | 哈密瓜    |  18.3 | 400 |
+----+-----------+-------+-----+
4 rows in set (0.00 sec)


mysql> select max(price) from product;
+------------+
| max(price) |
+------------+
|       18.3 |
+------------+
1 row in set (0.00 sec)

mysql> select min(price) from product;
+------------+
| min(price) |
+------------+
|        8.5 |
+------------+
1 row in set (0.00 sec)

mysql> select sum(price) from product;
+-------------------+
| sum(price)        |
+-------------------+
| 51.69999885559082 |
+-------------------+
1 row in set (0.01 sec)
相关推荐
姓刘的哦2 分钟前
Ubuntu环境安装
linux·运维·ubuntu
半路_出家ren14 分钟前
网络安全设备介绍:防火墙、堡垒机、入侵检测、入侵防御
安全·网络安全·负载均衡·堡垒机·防火墙·网络安全设备·上网行为管理
厦门德仔16 分钟前
【C#】C#字符串拼接的6种方式及其性能分析对比
服务器·windows·c#
春生黎至100538 分钟前
GZ073网络系统管理赛项赛题第1套模块A:网络构建解题笔记
运维·网络
IT程序媛-桃子39 分钟前
【网安面经合集】42 道高频 Web 安全面试题全解析(附原理+防御+思路)
运维·网络·安全·面试
❀͜͡傀儡师1 小时前
多台服务器上docker部署 Redis 集群
运维·服务器·redis
JCBP_1 小时前
数据结构4
运维·c语言·数据结构·vscode
AdrichPro1 小时前
10、Linux C 网络编程(完整版)
linux·服务器·c语言·网络
银河金融数据库1 小时前
历史分钟高频数据
数据库·金融
男Ren、麦根1 小时前
MySQL 复制与主从架构(Master-Slave)
数据库·mysql·架构