mysql笔记:25,2024年最新扫地阿姨看完都学会了

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

一、准备工作

1. 安装配置Docker

各位看官根据自己的操作系统和喜好选择相应的Docker进行安装和配置。使用docker pull命令拉取mysql 8的镜像文件。

> docker pull mysql:8

2. 准备MySQL相关的配置和数据目录

本次演示以一主二从共三台服务器为例进行演示。在当前目录创建三个配置文件目录和三个数据目录:

> cd /Users/Tom/docker
> 
> mkdir mysqlconf
> mkdir mysqlconf/master
> mkdir mysqlconf/slave1
> mkdir mysqlconf/slave2
> 
> mkdir mysqldata
> mkdir mysqldata/master
> mkdir mysqldata/slave1
> mkdir mysqldata/slave2
> 
> tree -L 2
.
├── README.md
├── mysqlconf
│   ├── master
│   ├── slave1
│   └── slave2
└── mysqldata
    ├── master
    ├── slave1
    └── slave2

运行MySQL容器并从中拷贝MySQL配置文件到本地备用,配置文件目录:/etc/my.cnf

# 语法:
docker cp <containerId>:/path/to/file /path/on/host

# 示例:temp_mysql8是本次启动的MySQL容器名称
docker cp temp_mysql8:/etc/my.cnf .

拷贝配置文件到已创建的配置文件目录:

cp my.cnf mysqlconf/master/my.cnf
cp my.cnf mysqlconf/slave1/my.cnf
cp my.cnf mysqlconf/slave2/my.cnf

> tree -L 3
.
├── README.md
├── mysqlconf
│   ├── master
│   │   └── my.cnf
│   ├── slave1
│   │   └── my.cnf
│   └── slave2
│       └── my.cnf
└── mysqldata
    ├── master
    ├── slave1
    └── slave2

二、基于日志点的主从复制

1. 配置Master服务器

1.1 修改配置文件

编辑主服务器的MySQL配置文件mysqlconf/master/my.cnf,添加下列配置项:

[mysqld]
server-id=1
log-bin=mysql-binlog
binlog-do-db=your-database-name
default_authentication_plugin=mysql_native_password

1.2. 在docker中启动Master节点
docker run -P --name mysqlmaster \
    -v $PWD/mysqldata/master:/var/lib/mysql \
    -v $PWD/mysqlconf/master/my.cnf:/etc/my.cnf \
    -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8

参数含义说明:

  • -P:本机与容器的端口映射
  • --name:为容器指定一个名称mysqlmaster
  • MYSQL_ROOT_PASSWORD:指定MySQL中root用户的密码为123456
  • -d:指定容器运行方式为后台运行
    容器启动后登录MySQL并检查配置是否生效:
$> docker exec -it mysqlmaster bash
# mysql -uroot -p123456
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+

如果登录MySQL提示错误:Access denied for user 'root'@'localhost' (using password: YES),可能是你密码输入错误,也可能是加密插件导致的。MySQL8使用的默认加密插件是 caching_sha2_password,而MySQL5.6使用的是mysql_native_password,当你在控制台使用明文密码登录的时候走的是mysql_native_password加密,而数据库记录的是caching_sha2_password加密后的密码。两个密文不一致导致登录失败。解决办法是在配置文件中指定加密插件:default_authentication_plugin=mysql_native_password

1.3. 创建用户并授权

在Master上创建一个复制用户并授权

mysql> CREATE USER 'repl'@'%' identified by 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
# 刷新用户权限信息
mysql> FLUSH PRIVILEGES;

# 查看Master状态
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |     1531 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

执行结果中显示二进制日志文件为mysql-bin.000003,日志位置为1531。Slave就是从这个日志点开始进行复制的。

2. 配置Slave1服务器

2.1. 修改配置

编辑从服务器slave1的MySQL配置文件mysqlconf/slave1/my.cnf,添加下列配置项:

[mysqld]  
server-id=2
relay-log=mysql-relay-bin
replicate-do-db=your_database_name

2.2. 启动服务
docker run -P --name mysqlslave1 \
    -v $PWD/mysqldata/slave1:/var/lib/mysql \
    -v $PWD/mysqlconf/slave1/my.cnf:/etc/my.cnf \
    -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8

容器启动后登录MySQL并检查配置是否生效:

$> docker exec -it mysqlslave1 bash
# mysql -uroot -p123456
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 2     |
+---------------+-------+

2.3. 指定Master

指定Master的信息,包括IP、用户、密码、日志文件和位置。

mysql> change master to master_host='172.17.0.2', master_user='repl', master_password='123456', master_log_file='mysql-bin.000003', master_log_pos=828

可以使用docker inspect mysqlmaster | grep IPAddress查看Master节点的IP信息

2.4. 开始复制
mysql> start slave;

mysql> show slave status \G;
...
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...

最关键的是这两项信息:

  • Slave_IO_Running:
  • Slave_SQL_Running:

3. 配置Slave2服务器

3.1. 修改配置

编辑从服务器slave2的MySQL配置文件mysqlconf/slave2/my.cnf,添加下列配置项:

[mysqld]  
server-id=3
relay-log=mysql-relay-bin
replicate-do-db=your_database_name

3.2. 启动服务
docker run -P --name mysqlslave2 \
    -v $PWD/mysqldata/slave2:/var/lib/mysql \
    -v $PWD/mysqlconf/slave2/my.cnf:/etc/my.cnf \
    -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8

容器启动后登录MySQL并检查配置是否生效:

$> docker exec -it mysqlslave2 bash
# mysql -uroot -p123456
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3     |
+---------------+-------+

3.3. 指定Master

指定Master的信息,包括IP、用户、密码、日志文件和位置。

mysql> change master to master_host='172.17.0.2', master_user='repl', master_password='123456', master_log_file='mysql-bin.000003', master_log_pos=828

3.4. 开始复制
mysql> start slave;

mysql> show slave status \G;
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...

最关键的是这两项信息:

  • Slave_IO_Running:
  • Slave_SQL_Running:

4. 测试效果

4.1. 更新数据

在Master节点上创建一个新的数据库和表,并任意插入一条数据:

mysql> create database test;
mysql> use test;
mysql> create table user(id bigint(20) primary key, name varchar(20));
mysql> insert into user value(1, 'Tom');
mysql> select * from user;

4.2. 查看同步结果

在Slave1和Slave2节点查看test.user表的数据:

mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
|  1 | Tom  |
+----+------+

结果表明主从复制环境配置成功。

三、基于GTID的主从复制

基于GTID的主从复制配置步骤跟基于日志点的主从复制配置基本相似,差别在于配置和指定Master时使用的命令参数略有差异。具体如下:

1. Master配置文件

打开配置文件mysqlconf/master/my.cnf,在[mysqld]部分添加配置:

[mysqld]
server-id=1
# 启动二进制日志
log-bin=mysql-bin
binlog_format=row
# 开启GTID模式
gtid_mode=on
# 强制GTID一致性
enforce_gtid_consistency=true

  • binlog_format:指定二进制日志格式为row

2. Slave配置文件

打开配置文件mysqlconf/slave1/my.cnfmysqlconf/slave2/my.cnf,分别在[mysqld]部分添加配置:

# slave1节点配置
server_id=2
log-bin=mysql-bin
log_slave_updates=1
gtid_mode=on
enforce_gtid_consistency=true
master_info_repository=TABLE
relay_log_info_repository=TABLE
read_only=ON

  • log_slave_updates:参数决定了在从服务器上是否将复制事件写入二进制日志文件(Binary Log)。默认情况下,这个参数是0,表示关闭,也就是说从服务器不会将复制事件写入二进制日志。
  • relay_log_info_repository:指定中继日志的存储方式,默认是文件,这样配置是使用了两个表,是INNODB存储引擎,好处是当出现数据库崩溃时,利用INNODB引擎事务的特点,对这两个表进行恢复,以保证从服务器可以从正确位置恢复数据。
  • read_only:指定从服务器是否只读,此参数对超级用户无效,并且不会影响从服务器的复制。这个参数主要保证从服务器的数据安全性。



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/2672d6ea31dcac8885af42c71db9670d.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/a16710d7ab74f3a2cae6194bb1f59251.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
![img](https://img-blog.csdnimg.cn/img_convert/ecf0cbbd97a91d8f71c2db65d1c9cde7.jpeg)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-kgFhY9S6-1713164060654)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-uvqAxeGg-1713164060655)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
[外链图片转存中...(img-t7NU8TvT-1713164060655)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN是一个技术交流平台,里面有许多关于各种编程语言和数据库的学习资料和笔记。而MySQL是其中一种常用的关系型数据库管理系统,也是开放源代码软件之一。 在CSND上,MySQL笔记是指关于MySQL数据库的学习和使用的笔记和教程。这些笔记包含了MySQL数据库的基本概念、安装配置、SQL语句的使用、数据表的设计和管理、索引使用、数据备份和恢复等方面的知识。学习MySQL笔记可以帮助开发者更好地理解和应用MySQL数据库MySQL笔记主要可以分为以下几个方面来介绍和学习: 1. 数据库基础知识:学习数据库的基本概念和原理,了解关系型数据库的特点以及MySQL的特点。 2. 安装和配置:学习如何在不同操作系统上安装和配置MySQL数据库,包括设置用户名、密码和端口等。 3. SQL语句的使用:学习SQL语句的基本语法和常用命令,包括查询、插入、更新、删除等操作。 4. 数据表的设计和管理:学习如何设计和创建数据表,包括选择适当的数据类型、设置主键和外键等。 5. 索引的使用:学习如何创建和使用索引来提高查询效率和数据访问速度。 6. 数据备份和恢复:学习如何进行MySQL数据库的数据备份和恢复,包括全量备份和增量备份等。 通过学习MySQL笔记,开发者可以掌握MySQL数据库的基本操作和高级功能,提高数据管理和查询的效率。此外,还可以了解MySQL数据库的优化技巧和性能调优方法,提升数据库的性能和稳定性。 总之,通过CSDN上的MySQL笔记,开发者可以系统地学习和掌握MySQL数据库的相关知识,从而更好地应用于实际的项目开发中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值