# mysql_install **Repository Path**: hh688/mysql_install ## Basic Information - **Project Name**: mysql_install - **Description**: mysql 安装 主从搭建脚本 - **Primary Language**: Shell - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2024-04-29 - **Last Updated**: 2025-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: install, MySQL, replica ## README ## 简介 关于 mysql 的安装和主从的搭建,在开发和运维过程中经常遇到,可以用两个脚本快速搭建 mysql 主从。 推荐使用 脚本 1 和脚本 2 项目地址: https://gitee.com/hh688/mysql_install ## 脚本 1:mysql 安装 ### 介绍 新装 MySQL 或初始化新实例。 ### 功能 * 安装 mysql8.* * 安装 mysql5.7 * 初始化新实例 * systems 管理 * 标准化配置文件 可根据需求自行修改 * 便捷登录 * 指定是否开启半同步 * 指定是否开启 gtid * 设置内存大小 ### 限制 * 仅在 centos 7 上进行了测试 * 需要自己下载安装包 脚本内有链接 ### 使用说明 * 需要自己下载安装包 脚本内有链接 * 内网环境下需修改 ping 的地址 * 内网环境需具有 yum 仓库 * 仅支持二进制包安装 ### 使用方法 ```shell yum install -y dos2unix # 下载脚本 curl -o mysql_install.sh https://gitee.com/hh688/mysql_install/raw/master/mysql_install.sh # 转化格式 dos2unix mysql_install.sh # 添加权限 chmod 700 mysql_install.sh # 修改参数定义 vim mysql_install.sh # 运行脚本 sh mysql_install.sh ``` ------ ## 脚本 2:搭建主从 --基于 mydumper ### 介绍 使用第一个脚本安装完 MySQL 后,可以使用此脚本搭建主从复制,可以基于 gtid 或 postion 两种方式搭建,数据导入比 mysqldump 更快。 ### 功能 * 安装环境检查是否符合要求 * 基于 gtid 复制 * 基于 postion 复制 * 支持延迟复制 * 指定复制线程数 * mydumper 更快的数据导入 * 流式数据传输 * 长查询保护 ### 限制 * 仅在 centos 7 上进行了测试 * 需要创建搭建用户 脚本内有注释 * 需要搭建好从实例 * 安装 mydumper * 需要确认 mydumper/myloader 指定的目录磁盘资源大于 mysql 实例 ```shell # 下载安装包 curl -o mydumper-0.16.1-3.el7.x86_64.rpm https://github.com/mydumper/mydumper/releases/download/v0.16.1-3/mydumper-0.16.1-3.el7.x86_64.rpm # 安装 yum install mydumper-0.16.1-3.el7.x86_64.rpm -y ``` ### 使用方法 ```shell # 下载脚本 curl -o mysql_replica_mydumper.sh https://gitee.com/hh688/mysql_install/raw/master/mysql_replica_mydumper.sh # 转换格式 dos2unix mysql_replica_mydumper.sh # 授权 chmod 700 mysql_replica_mydumper.sh # 修改参数 vim mysql_replica_mydumper.sh # 主库创建用户 create user dba_qianyi_m@'%' identified by '123456'; grant all on *.* to dba_qianyi_m@'%' with grant option; flush privileges; # 从库创建用户 create user dba_qianyi_s@'%' identified by '123456'; grant all on *.* to dba_qianyi_s@'%' with grant option; flush privileges; # 后台运行 nohuo sh mysql_replica_mydumper.sh & # 查看日志 tail -f $log_redirection # 脚本内定义的日志路径 ``` > * 在进行数据量较大的数据库迁移时,尽可能后台运行,以减少不必要的麻烦。 > > * 请在搭建完成主从后删除迁移用户。 > > 注意:mydumper 的 --compress 和 --stream 在导入大量数据时,好像存在 BUG,如要使用请自行验证。 ## 脚本 3:搭建主从 --基于 mysqldump ### 介绍 使用第一个脚本安装完 MySQL 后,可以使用此脚本搭建主从复制,可以基于 gtid 或 postion 两种方式搭建,相较于 myduper 速度会慢一些。 ### 功能 * 安装环境检查是否符合要求 * 基于 gtid 复制 * 基于 postion 复制 * 支持延迟复制 * 指定复制线程数 * mydumper 更快的数据导入 * 长查询保护 ### 限制 * 仅在 centos 7 上进行了测试 * 需要创建搭建用户 脚本内有注释 * 需要搭建好从实例 * 当运行失败时请删除主库的主从用户 ### 使用方法 ``` # 获取脚本 curl -o mysql_replica.sh https://gitee.com/hh688/mysql_install/raw/master/mysql_replica.sh # 转换格式 dos2unix mysql_replica.sh # 授权 chmod 700 mysql_replica.sh # 修改参数 vim mysql_replica.sh # 主库创建用户 create user dba_qianyi_m@'%' identified by '123456'; grant all on *.* to dba_qianyi_m@'%' with grant option; flush privileges; # 从库创建用户 create user dba_qianyi_s@'%' identified by '123456'; grant all on *.* to dba_qianyi_s@'%' with grant option; flush privileges; # 后台运行 nohuo sh mysql_replica.sh & # 查看日志 tail -f $log_redirection # 脚本内定义的日志路径 ``` ## 使用说明 * 对于主从没开启 gtid 的情况,想要使用 gtid 复制,可以根据[官网修改为 gtid模式]([https://dev.mysql.com/doc/refman/5.7/en/replication-mode-change-online-enable-gtids.html])。 * 对于已经开启 `gtid` 的情况,需要在从库设置 `gtid_purged` 参数为主库的` Executed_Gtid_Set` 值,目的是告诉从库开始从主库复制的 gtid 位置点。 ``` # 主库的 Executed_Gtid_Set 可以通过以下命令获取 mysql> show master status\G; *************************** 1. row *************************** File: mysql-bin.000001 Position: 154 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: bdd069c3-0e70-11ef-947e-000c29f064be:1-242 1 row in set (0.00 sec) # 从库设置 gtid_purged 需要先重置 binlog 信息,可以使用以下命令 mysql> reset master; # 注意,该操作会删除所有的 binlog 日志, 请谨慎操作 Query OK, 0 rows affected (0.00 sec) # 设置已被应用的 gtid 集 mysql> set global gtid_purged='bdd069c3-0e70-11ef-947e-000c29f064be:1-242'; # 这里填写主库的 Executed_Gtid_Set 信息即可 Query OK, 0 rows affected (0.00 sec) # 接下来可以开启 gtid 复制 change master to ... start slave; ... ``` ## 声明 以上内容仅供学习交流,使用前请自行验证。