赞
踩
--name mysql8
: 为容器指定一个名称,这里是 mysql8
--privileged=true
: 赋予容器更多的权限。在一般情况下,尽量避免使用 --privileged
,因为它会赋予容器更多的权限,可能会带来一些安全风险。-v /app/mysql8/log:/var/log/mysql
: 将主机上的 /app/mysql8/log
目录映射到容器内的 /var/log/mysql
,用于存储MySQL的日志文件。-v /app/mysql8/data:/var/lib/mysql
: 将主机上的 /app/mysql8/data
目录映射到容器内的 /var/lib/mysql
,用于持久化存储MySQL的数据。-v /app/mysql8/conf:/etc/mysql/conf.d
: 将主机上的 /app/mysql8/conf
目录映射到容器内的 /etc/mysql/conf.d
,用于提供自定义的MySQL配置文件。-v /app/mysql8/files:/var/lib/mysql-files
: 将主机上的 /app/mysql8/files
目录映射到容器内的 /var/lib/mysql-files
,用于存储MySQL的文件。-e MYSQL_ROOT_PASSWORD=123456
: 设置MySQL root用户的密码为 123456
。-d
: 后台运行容器。docker ps
docker exec -it mysql8 /bin/bash
mysql -uroot -p123456
CREATE DATABASE mydatabase; USE mydatabase; CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL ); INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com'), ('jane_smith', 'jane@example.com'), ('bob_jones', 'bob@example.com'); SELECT * FROM users;
ps:这里也默认使用mysql8版本进行安装。
docker run -p 3307:3306 \
--name mysql-master \
--privileged=true \
-v /app/mysql-master/log:/var/log/mysql \
-v /app/mysql-master/data:/var/lib/mysql \
-v /app/mysql-master/conf:/etc/mysql/conf.d \
-v /app/mysql-master/files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.27
docker run
: 启动一个新的Docker容器。-p 3307:3306
: 将主机的3307端口映射到容器的3306端口,这样可以通过主机的3307端口访问MySQL服务。--name mysql-master
: 为容器指定一个名称,这里是 mysql-master
。--privileged=true
: 赋予容器更高的权限。注意,一般情况下最好避免使用 --privileged
,因为它可能会引入一些潜在的安全风险。-v /app/mysql-master/log:/var/log/mysql
: 将主机上的 /app/mysql-master/log
目录映射到容器内的 /var/log/mysql
,用于存储MySQL的日志文件。-v /app/mysql-master/data:/var/lib/mysql
: 将主机上的 /app/mysql-master/data
目录映射到容器内的 /var/lib/mysql
,用于持久化存储MySQL的数据。-v /app/mysql-master/conf:/etc/mysql/conf.d
: 将主机上的 /app/mysql-master/conf
目录映射到容器内的 /etc/mysql/conf.d
,用于提供自定义的MySQL配置文件。-v /app/mysql-master/files:/var/lib/mysql-files
: 将主机上的 /app/mysql-master/files
目录映射到容器内的 /var/lib/mysql-files
,用于存储MySQL的文件。-e MYSQL_ROOT_PASSWORD=123456
: 设置MySQL root用户的密码为 123456
。-d
: 以后台模式运行容器。mysql:8.0.27
: 使用的MySQL镜像的标签,这里是MySQL 8.0.27版本vim /app/mysql-master/conf/my.cnf
[mysqld] ## 设置server_id, 同一个局域网中需要唯一 server_id=1001 ## 指定不需要同步的数据库名称 binlog-ignore-db=mysql ## 开启二进制日志功能 log-bin=mall-mysql-bin ## 设置二进制日志使用内存大小(事务) binlog_cache_size=1M ## 设置使用的二进制日志格式(mixed,statement,row) binlog_format=mixed ## 二进制日志过期清理时间。默认值为0,表示不自动清理 expire_logs_days=7 ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断 ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致 slave_skip_errors=1062
ps:在编写配置的时候,参数后不要留有空格,避免不必要的错误!!!
docker restart mysql-master
docker exec -it mysql-master /bin/bash
mysql -uroot -p123456
create user 'slave'@'%' identified by '123456';
grant replication slave, replication client on *.* to 'slave'@'%';
flush privileges;
SELECT user, host, authentication_string, Grant_priv, Super_priv, Create_priv, Insert_priv, Update_priv, Delete_priv, Select_priv FROM mysql.user;
得到这样得结果
show master status;
参数说明:
File(文件) | 表示当前正在写入的二进制日志文件的名称 |
Position(位置) | 表示在二进制日志文件中的当前写入位置 |
Binlog_Do_DB | 一个逗号分隔的数据库列表,表示正在复制的二进制日志事件应用于哪些数据库 |
Binlog_Ignore_DB | 一个逗号分隔的数据库列表,表示正在复制的二进制日志事件不应用于哪些数据库 |
Executed_Gtid_Set | 表示已经执行的 GTID(全局事务标识符)集合。在MySQL的 GTID 复制中 |
docker run -p 3308:3306 \
--name mysql-slave \
--privileged=true \
-v /app/mysql-slave/log:/var/log/mysql \
-v /app/mysql-slave/data:/var/lib/mysql \
-v /app/mysql-slave/conf:/etc/mysql/conf.d \
-v /app/mysql-master/files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.27
vim /app/mysql-slave/conf/my.cnf
[mysqld] ## 设置server_id, 同一个局域网内需要唯一 server_id=1002 ## 指定不需要同步的数据库名称 binlog-ignore-db=mysql ## 开启二进制日志功能,以备slave作为其它数据库实例的Master时使用 log-bin=mall-mysql-slave1-bin ## 设置二进制日志使用内存大小(事务) binlog_cache_size=1M ## 设置使用的二进制日志格式(mixed,statement,row) binlog_format=mixed ## 二进制日志过期清理时间。默认值为0,表示不自动清理 expire_logs_days=7 ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断 ## 如:1062错误是指一些主键重复,1032是因为主从数据库数据不一致 slave_skip_errors=1062 ## relay_log配置中继日志 relay_log=mall-mysql-relay-bin ## log_slave_updates表示slave将复制事件写进自己的二进制日志 log_slave_updates=1 ## slave设置只读(具有super权限的用户除外) read_only=1
ps:在编写配置的时候,参数后不要留有空格,避免不必要的错误!!!
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
总计 1000+ 道面试题, 内容 又全含金量又高
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
cat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-dP5SfAg9-1712655838529)]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。