MySQL笔记 | 2.Docker下搭建MySQL&查看BinLog文件

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 这篇文章主要是在Docker下搭建一个MySQL环节,为了后续的数据库学习做准备。

一、安装MySQL的步骤

步骤一:查询mysql在docker下的版本

docker search mysql

网络异常,图片无法展示
|

步骤二:拉取官方镜像

不带版本号,默认拉取最新的

docker pull mysql

步骤三:查看是否拉取成功了

docker images 

网络异常,图片无法展示
|

步骤四:安装mysql

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

参数含义:

–name:容器名,此处命名为mysql

-e:配置信息,此处配置mysql的root用户的登陆密码

-p:端口映射,此处映射 主机3306端口 到 容器的3306端口

-d:后台运行容器,保证在退出终端后容器继续运行

-v:   做目录映射,-v /usr/local/docker/mysql/conf:/etc/mysql \

步骤五:连接mysql

docker exec -it mysql bash

网络异常,图片无法展示
|

root@2b2ee975926a:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.19 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql;
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

步骤六:查看binlog 日志

  1. 了解什么是binlog?

网络异常,图片无法展示
|

通过show variables like '%log_bin%';我们查询到binlog 日志是否开启,已经开启后保存日志的位置

mysql> show variables like '%log_bin%';
+---------------------------------+-----------------------------+
| Variable_name                   | Value                       |
+---------------------------------+-----------------------------+
| log_bin                         | ON                          |
| log_bin_basename                | /var/lib/mysql/binlog       |
| log_bin_index                   | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF                         |
| log_bin_use_v1_row_events       | OFF                         |
| sql_log_bin                     | ON                          |
+---------------------------------+-----------------------------+
6 rows in set (0.20 sec)

注意:不能通过cat 直接打开binlog 文件,否则会出现乱码

root@2b2ee975926a:/var/lib/mysql# cat binlog.000009
`binq�]`x|8.0.19q�]`
**4
�?%1q�]`#���ux���]`"O��0dln��C�8�/��]`& �Estd���  �ssmTestBEGINǥ���]`8yQssmTestgeek��]`F�Q����ᅾ]`� Հ�ZȾ]`"M+
depn��80ad�Ⱦ]`��  2 �Estd���
                                  ssmTestS�ssmTest/* ApplicationName=DataGrip 2019.2.5 */ alter table geek
O�Ѿ]`�� add column_5 int null0��1Ѿ]`"M%��pn��8�
       2 �Estd���
                 ssmTest��ssmTest/* ApplicationName=DataGrip 2019.2.5 */ alter table geek drop column column_55`JiG�]`"O4��wn��C�8�p�(G�]`Wv    & �Estd���  �ssmTestBEGIN.�G�]`8�hssmTestgeek�>t7G�]`F�h����a�G�]`|][M��]`"Obֈ~n��(�8����]`N �Estd����ssmTestBEGINn
����]`8�hssmTestgeek�k�쮿]`4h�

二、解决乱码问题

1. 辅助工具

mysqlbinlog  /usr/bin 服务器以二进制格式将binlog日志写入binlog文件,如何要以文本格式显示其内容,可以使用 mysqlbinlog 命令。

mysqlbinlog 的执行格式:mysqlbinlog [options] log_file ...

查看bin-log二进制文件(shell方式)

mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003

mysqlbinlog  --base64-output=DECODE-ROWS -v -v /var/lib/mysql/binlog.000009

binlog.000009是我本地下文件名

root@2b2ee975926a:/usr/bin# mysqlbinlog  --base64-output=DECODE-ROWS -v -v /var/lib/mysql/binlog.000009
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#210326 10:58:57 server id 1  end_log_pos 124 CRC32 0x31253f85  Start: binlog v 4, server v 8.0.19 created 210326 10:58:57 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
# at 124
#210326 10:58:57 server id 1  end_log_pos 155 CRC32 0x977875b6  Previous-GTIDs
# [empty]
# at 155
#210326 10:59:17 server id 1  end_log_pos 234 CRC32 0x2f0213ea  Anonymous_GTID  last_committed=0  sequence_number=1 rbr_only=yes  original_committed_timestamp=1616756357738634 immediate_commit_timestamp=1616756357738634 transaction_length=323
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
# original_commit_timestamp=1616756357738634 (2021-03-26 10:59:17.738634 UTC)
# immediate_commit_timestamp=1616756357738634 (2021-03-26 10:59:17.738634 UTC)
/*!80001 SET @@session.original_commit_timestamp=1616756357738634*//*!*/;
/*!80014 SET @@session.original_server_version=80019*//*!*/;
/*!80014 SET @@session.immediate_server_version=80019*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 234
#210326 10:59:17 server id 1  end_log_pos 321 CRC32 0x1db9a5c7  Query thread_id=8 exec_time=0 error_code=0
SET TIMESTAMP=1616756357/*!*/;
SET @@session.pseudo_thread_id=8/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1168113696/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=255/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
/*!80011 SET @@session.default_collation_for_utf8mb4=255*//*!*/;
BEGIN
/*!*/;
# at 321
#210326 10:59:17 server id 1  end_log_pos 377 CRC32 0xbbfafb04  Table_map: `ssmTest`.`geek` mapped to number 81
# at 377
#210326 10:59:17 server id 1  end_log_pos 447 CRC32 0xe1d8fd16  Update_rows: table id 81 flags: STMT_END_F
### UPDATE `ssmTest`.`geek`
### WHERE
###   @1=6 /* INT meta=0 nullable=0 is_null=0 */
###   @2=7 /* INT meta=0 nullable=0 is_null=0 */
###   @3=6 /* INT meta=0 nullable=0 is_null=0 */
###   @4=7 /* INT meta=0 nullable=0 is_null=0 */
### SET
###   @1=6 /* INT meta=0 nullable=0 is_null=0 */
###   @2=7 /* INT meta=0 nullable=0 is_null=0 */
###   @3=6 /* INT meta=0 nullable=0 is_null=0 */
###   @4=1 /* INT meta=0 nullable=0 is_null=0 */
# at 447
#210326 10:59:17 server id 1  end_log_pos 478 CRC32 0x5abc80d5  Xid = 32
COMMIT/*!*/;

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
88 4
|
20天前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
90 2
|
22天前
|
SQL 关系型数据库 MySQL
【MySQL】根据binlog日志获取回滚sql的一个开发思路
【MySQL】根据binlog日志获取回滚sql的一个开发思路
|
9天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
9天前
|
存储 关系型数据库 MySQL
使用Docker快速部署Mysql服务器
本文介绍了如何使用Docker快速部署MySQL服务器,包括下载官方MySQL镜像、启动容器、设置密码、连接MySQL服务器以及注意事项。
73 18
|
21天前
|
关系型数据库 MySQL 应用服务中间件
[Docker]容器内文件修改
【8月更文挑战第21天】[Docker]容器内文件修改
41 13
|
13天前
|
Docker 容器
docker 中文件和外部文件映射
docker 中文件和外部文件映射
|
16天前
|
Java Docker Python
启动docker服务需要的三个重要文件
这篇文章介绍了启动Docker服务所需的三个重要文件:Dockerfile、build_image.sh和run.sh。文章提供了Java和Python两个版本的Dockerfile示例,并解释了每个阶段的作用,如基础镜像的选择、构建环境的设置、以及如何通过参数传递环境变量。build_image.sh脚本用于执行Docker镜像的构建、标记和推送过程,而run.sh脚本则用于执行具体的运行命令,包括设置Java参数和执行jar文件。 文章还强调了这些文件应由项目负责人维护,并根据项目需求自行修改启动命令参数。
14 2
|
18天前
|
存储 Linux Docker
【Azure 应用服务】应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件
【Azure 应用服务】应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件
|
18天前
|
开发框架 .NET Linux
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件