👋 欢迎浏览我的技术博客,记录学习笔记 本人28届软工一枚

10.11 Kafka + Canal

业务库 MySQL 5.7 (binlog) → Canal (解析 binlog) → Kafka (topic) → 后续数仓 ODS 层
端口 3307 /opt/module/canal /opt/module/kafka

1. 下载 MySQL 5.7 二进制包

cd /opt/module
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz

2. 解压

tar -zxvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.43-linux-glibc2.12-x86_64 mysql
rm -f mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz

3. 创建数据和日志目录

mkdir -p /opt/module/mysql/data
mkdir -p /opt/module/mysql/log
chown -R hadoop:hadoop /opt/module/mysql

4. 初始化数据库(生成临时 root 密码)

cd /opt/module/mysql
bin/mysqld --initialize --user=hadoop --basedir=/opt/module/mysql --datadir=/opt/module/mysql/data

5. 记下临时密码(在输出最后一行)

[Note] A temporary password is generated for root@localhost: xxxxxxxx

6. 创建配置文件

/opt/module/mysql/my.cnf



my.cnf for MySQL 5.7 (port 3307, binlog enabled):
```ini
[mysqld]
port=3307
basedir=/opt/module/mysql
datadir=/opt/module/mysql/data
socket=/opt/module/mysql/mysql.sock
log-error=/opt/module/mysql/log/mysqld.log
pid-file=/opt/module/mysql/mysqld.pid

# binlog 配置(Canal 必需)
server-id=1
log-bin=mysql-bin
binlog-format=ROW
binlog_row_image=FULL

# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

# 其他
max_connections=200
  1. Phase 3 架构概述 (brief)
  2. TodoWrite for Phase 3
  3. Step 1: Install MySQL 5.7

Step 1: 在 VM 里装 MySQL 5.7(二进制包,端口 3307)

用二进制 tarball 装的好处:不跟 MariaDB 的 yum 包冲突,独立目录,装完即用。整个过程 hadoop 用户操作(除了装 libaio 依赖需要 root)。

1.1 装 libaio 依赖(root 用户)

MySQL 5.7 二进制包初始化时依赖 libaio 库,CentOS 7 最小化安装可能没有。

su - root
yum install -y libaio
exit

1.2 下载 MySQL 5.7 二进制包(hadoop 用户)

cd /opt/module
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz

如果 wget 不存在,改用 curl -O 代替。下载约 670MB,耐心等。

1.3 解压并重命名

tar -zxvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.43-linux-glibc2.12-x86_64 mysql
rm -f mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz

1.4 创建数据和日志目录

mkdir -p /opt/module/mysql/data
mkdir -p /opt/module/mysql/log
chown -R hadoop:hadoop /opt/module/mysql

1.5 编写配置文件 my.cnf

创建 /opt/module/mysql/my.cnf:

[mysqld]
# 基本配置
port=3307
basedir=/opt/module/mysql
datadir=/opt/module/mysql/data
socket=/opt/module/mysql/mysql.sock
log-error=/opt/module/mysql/log/mysqld.log
pid-file=/opt/module/mysql/mysqld.pid

# binlog 配置(Canal 必需,Step 2 会详细讲)
server-id=1
log-bin=mysql-bin
binlog-format=ROW
binlog_row_image=FULL

# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

# 连接数
max_connections=200

关键点:端口设 3307 避开 MariaDB 的 3306;socket 路径也独立,不和 MariaDB 的 /var/lib/mysql/mysql.sock 冲突。

1.6 初始化数据库

cd /opt/module/mysql
bin/mysqld --defaults-file=/opt/module/mysql/my.cnf --initialize --user=hadoop

初始化完成后,查看日志里的临时 root 密码:

cat /opt/module/mysql/log/mysqld.log | grep "temporary password"

输出类似:

[Note] A temporary password is generated for root@localhost: xxxxxxxxxx

把临时密码记下来,下一步要用。

1.7 启动 MySQL

bin/mysqld_safe --defaults-file=/opt/module/mysql/my.cnf --user=hadoop &

等几秒,检查是否启动成功:

# 看进程
ps -ef | grep mysqld | grep -v grep

# 用 socket 连接(注意指定 socket 路径,因为不是默认 3306)
bin/mysql -uroot -p -S /opt/module/mysql/mysql.sock

输入临时密码,能进 mysql> 提示符就说明成功了。

1.8 修改 root 密码 + 开启远程访问

在 mysql> 提示符里执行:

-- 改 root 密码为 123456(跟其他服务统一,方便记忆)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

-- 允许 root 远程连接(Canal 连接需要)
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 验证 binlog 是否开启
SHOW VARIABLES LIKE 'log_bin';        -- 应该是 ON
SHOW VARIABLES LIKE 'binlog_format';  -- 应该是 ROW
SHOW VARIABLES LIKE 'server_id';      -- 应该是 1

exit;

1.9 (可选)配环境变量方便调用

在 ~/.bash_profile 里加一行:

export MYSQL_HOME=/opt/module/mysql
export PATH=$PATH:$MYSQL_HOME/bin

然后 source ~/.bash_profile,之后可以直接用 mysql -uroot -p -P 3307 -h 127.0.0.1 连接。


验证清单(全部满足才算 Step 1 完成):

  • ps -ef | grep mysqld 能看到 mysqld 进程,端口 3307
  • mysql -uroot -p 能登录,密码已改为 123456
  • SHOW VARIABLES LIKE 'log_bin' 返回 ON
  • SHOW VARIABLES LIKE 'binlog_format' 返回 ROW

Step 2(建 food_order 业务库 + Canal 复制用户)。

posted @ 2026-10-11 19:48  气球飞起  阅读(4)  评论(0)    收藏  举报