本文档风哥主要介绍在GCP云平台上安装和部署MySQL数据库的方法,包括Cloud SQL for MySQL和在GCP虚拟机上部署MySQL两种方式。风哥教程参考MySQL官方文档Installing MySQL等。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 GCP云平台概述
Google Cloud Platform (GCP)是谷歌提供的全球云平台,提供了广泛的云服务,包括计算、存储、网络、数据库等。学习交流加群风哥微信: itpux-com
1.2 MySQL on GCP选项
在GCP上部署MySQL有两种主要方式:
- Cloud SQL for MySQL:谷歌托管的MySQL数据库服务
- 在GCP虚拟机上部署MySQL:自行管理的MySQL实例
1.3 架构规划
根据业务需求选择合适的部署架构,包括单实例、高可用架构等。
Part02-生产环境规划与建议
2.1 资源规划
根据业务需求规划GCP资源,包括计算资源、存储资源等。
2.2 网络规划
规划GCP网络配置,包括VPC网络、子网、防火墙规则等。
2.3 安全规划
规划GCP安全配置,包括防火墙规则、访问控制等。
Part03-生产环境项目实施方案
3.1 Cloud SQL for MySQL部署
Cloud SQL for MySQL的部署步骤:
https://console.cloud.google.com
# 步骤2:创建Cloud SQL实例
1. 在GCP控制台中,导航到”SQL”服务
2. 点击”创建实例”
3. 选择”MySQL”
4. 点击”下一步”
# 步骤3:配置实例信息
– 实例ID:输入唯一的实例ID
– 密码:设置root用户密码
– 数据库版本:选择MySQL版本(8.0或5.7)
– 区域:选择合适的GCP区域
– 可用区:选择可用区
# 步骤4:配置机器类型和存储
– 机器类型:选择合适的机器类型
– 存储类型:选择SSD或HDD
– 存储容量:设置存储容量
# 步骤5:配置连接
– 公共IP:选择是否启用公共IP
– 私有IP:选择是否启用私有IP
– 授权网络:添加允许访问的IP地址
# 步骤6:完成创建
点击”创建”
# 步骤7:连接到Cloud SQL for MySQL
# 使用gcloud命令行工具连接
# gcloud sql connect instance-name –user=root
# 输出示例
Whitelisting your IP for incoming connection for 5 minutes…done.
Connecting to database with SQL user [root].Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12345
Server version: 8.0.26-google (Google)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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>
3.2 虚拟机部署MySQL
在GCP虚拟机上部署MySQL的步骤:
1. 在GCP控制台中,导航到”Compute Engine” → “VM实例”
2. 点击”创建实例”
3. 配置实例基本信息:
– 名称:输入实例名称
– 区域:选择合适的GCP区域
– 机器类型:选择合适的机器类型
– 启动磁盘:选择Linux发行版(如Ubuntu 20.04 LTS)
– 防火墙:选择”允许HTTP流量”和”允许HTTPS流量”
# 步骤2:完成创建
点击”创建”
# 步骤3:连接到虚拟机
# 使用SSH连接到虚拟机
# gcloud compute ssh instance-name
# 步骤4:在虚拟机上安装MySQL
# 更新系统
# sudo apt update
# sudo apt upgrade -y
# 安装MySQL
# sudo apt install mysql-server -y
# 启动MySQL服务
# sudo systemctl start mysql
# sudo systemctl enable mysql
# 安全配置
# sudo mysql_secure_installation
# 配置远程访问
# sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 将bind-address = 127.0.0.1修改为bind-address = 0.0.0.0
# 重启MySQL服务
# sudo systemctl restart mysql
# 创建远程访问用户
# sudo mysql -u root -p
mysql> CREATE USER ‘fgedu’@’%’ IDENTIFIED BY ‘Password123!’;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘fgedu’@’%’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
# 配置GCP防火墙规则
# 在GCP控制台中,导航到”VPC网络” → “防火墙”
# 点击”创建防火墙规则”
# 配置规则:
# – 名称:allow-mysql
# – 目标:指定目标标签
# – 来源IP范围:0.0.0.0/0
# – 协议和端口:tcp:3306
# – 操作:允许
# 验证MySQL服务状态
# sudo systemctl status mysql
● mysql.service – MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2026-04-01 10:00:00 UTC; 1min ago
Process: 12345 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 12346 (mysqld)
Tasks: 38 (limit: 4915)
CGroup: /system.slice/mysql.service
└─12346 /usr/sbin/mysqld
Apr 01 10:00:00 instance-name systemd[1]: Starting MySQL Community Server…
Apr 01 10:00:00 instance-name systemd[1]: Started MySQL Community Server.
3.3 配置与优化
MySQL在GCP上的配置与优化:
# sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid
# 内存配置
innodb_buffer_pool_size=2G
key_buffer_size=256M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=4M
join_buffer_size=4M
# 连接配置
max_connections=500
max_connect_errors=10000
wait_timeout=3600
interactive_timeout=3600
# 日志配置
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=1
log_bin=/var/log/mysql/binlog/mysql-bin
expire_logs_days=7
# 存储引擎配置
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_log_file_size=512M
innodb_log_buffer_size=32M
# 重启MySQL服务
# sudo systemctl restart mysql
# 验证配置
# mysql -u root -p -e “SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;”
+————————-+————+
| Variable_name | Value |
+————————-+————+
| innodb_buffer_pool_size | 2147483648 |
+————————-+————+
# 验证远程连接
# mysql -h instance-external-ip -u fgedu -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12345
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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>
Part04-生产案例与实战讲解
4.1 Cloud SQL for MySQL实战
Cloud SQL for MySQL的实际部署案例:
# 步骤1:登录gcloud CLI
# gcloud auth login
# 步骤2:设置项目
# gcloud config set project fgedu-project
# 步骤3:创建Cloud SQL实例
# gcloud sql instances create fgedu-mysql-instance \
–database-version=MYSQL_8_0 \
–tier=db-n1-standard-2 \
–region=asia-east1 \
–storage-type=SSD \
–storage-size=10 \
–root-password=Password123!
# 步骤4:配置防火墙规则
# gcloud sql instances patch fgedu-mysql-instance \
–authorized-networks=0.0.0.0/0
# 步骤5:连接到实例
# gcloud sql connect fgedu-mysql-instance –user=root
# 步骤6:创建数据库和用户
mysql> CREATE DATABASE fgedudb;
mysql> CREATE USER ‘fgedu’@’%’ IDENTIFIED BY ‘Password123!’;
mysql> GRANT ALL PRIVILEGES ON fgedudb.* TO ‘fgedu’@’%’;
mysql> FLUSH PRIVILEGES;
# 步骤7:验证数据库
mysql> USE fgedudb;
mysql> CREATE TABLE fgedu_users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), email VARCHAR(100));
mysql> INSERT INTO fgedu_users (name, email) VALUES (‘张三’, ‘zhangsan@fgedu.net.cn’);
mysql> SELECT * FROM fgedu_users;
+—-+——–+————————+
| id | name | email |
+—-+——–+————————+
| 1 | 张三 | zhangsan@fgedu.net.cn |
+—-+——–+————————+
4.2 虚拟机部署MySQL实战
在GCP虚拟机上部署MySQL的实际案例:
# 步骤1:创建GCP虚拟机
# gcloud compute instances create fgedu-mysql-vm \
–machine-type=e2-medium \
–image-family=ubuntu-2004-lts \
–image-project=ubuntu-os-cloud \
–zone=asia-east1-a \
–tags=mysql-server \
–metadata=startup-script=’#!/bin/bash
apt update
apt install -y mysql-server
‘
# 步骤2:配置防火墙规则
# gcloud compute firewall-rules create allow-mysql \
–direction=INGRESS \
–priority=1000 \
–network=default \
–action=ALLOW \
–rules=tcp:3306 \
–source-ranges=0.0.0.0/0 \
–target-tags=mysql-server
# 步骤3:连接到虚拟机
# gcloud compute ssh fgedu-mysql-vm
# 步骤4:安全配置
# sudo mysql_secure_installation
# 步骤5:配置远程访问
# sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 将bind-address = 127.0.0.1修改为bind-address = 0.0.0.0
# 步骤6:重启MySQL服务
# sudo systemctl restart mysql
# 步骤7:创建远程访问用户
# sudo mysql -u root -p
mysql> CREATE USER ‘fgedu’@’%’ IDENTIFIED BY ‘Password123!’;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘fgedu’@’%’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
# 步骤8:验证MySQL服务
# sudo systemctl status mysql
# 步骤9:验证远程连接
# mysql -h $(gcloud compute instances describe fgedu-mysql-vm –format=’get(networkInterfaces[0].accessConfigs[0].natIP)’) -u fgedu -p
# 步骤10:创建数据库和表
mysql> CREATE DATABASE fgedudb;
mysql> USE fgedudb;
mysql> CREATE TABLE fgedu_users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), email VARCHAR(100));
mysql> INSERT INTO fgedu_users (name, email) VALUES (‘李四’, ‘lisi@fgedu.net.cn’);
mysql> SELECT * FROM fgedu_users;
+—-+——–+———————-+
| id | name | email |
+—-+——–+———————-+
| 1 | 李四 | lisi@fgedu.net.cn |
+—-+——–+———————-+
Part05-风哥经验总结与分享
5.1 常见问题与解决方案
在GCP上部署MySQL时常见的问题包括:
- 连接问题:确保防火墙规则正确配置,允许端口3306访问
- 性能问题:根据业务需求选择合适的计算和存储配置
- 安全问题:使用强密码,配置适当的防火墙规则
- 成本问题:选择合适的GCP服务和资源配置
5.2 最佳实践建议
1. 选择合适的部署方式:根据业务需求选择Cloud SQL for MySQL或虚拟机部署
2. 合理规划资源:根据业务负载选择合适的计算和存储配置
3. 配置高可用:对于生产环境,配置高可用架构
4. 定期备份:配置定期备份策略
5. 监控性能:使用Cloud Monitoring监控MySQL性能
6. 安全加固:配置适当的安全措施,包括防火墙规则、访问控制等
7. 定期更新:保持MySQL版本和系统补丁的更新
8. 优化配置:根据业务需求优化MySQL参数
学习交流加群风哥QQ113257174
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
