简介
关于 mysql 的安装和主从的搭建,在开发和运维过程中经常遇到,可以用两个脚本快速搭建 mysql 主从。
推荐使用 脚本 1 和脚本 2
项目地址: https://gitee.com/hh688/mysql_install_script
脚本 1:mysql 安装
介绍
新装 MySQL 或初始化新实例。
功能
- 安装 mysql8.*
- 安装 mysql5.7
- 初始化新实例
- systems 管理
- 标准化配置文件 可根据需求自行修改
- 便捷登录
- 指定是否开启半同步
- 指定是否开启 gtid
- 设置内存大小
限制
- 仅在 centos 7 上进行了测试
- 需要自己下载安装包 脚本内有链接
使用说明
- 需要自己下载安装包 脚本内有链接
- 内网环境下需修改 ping 的地址
- 内网环境需具有 yum 仓库
- 仅支持二进制包安装
使用方法
yum install -y dos2unix # 下载脚本 curl -o mysql_install.sh https://gitee.com/hh688/mysql_install_script/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 实例大小
# 下载安装包 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
使用方法
# 下载脚本 curl -o mysql_replica_mydumper.sh https://gitee.com/hh688/mysql_install_script/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 # 脚本内定义的日志路径
- 在进行数据量较大的数据库迁移时,尽可能后台运行,以减少不必要的麻烦。
- 请在搭建完成主从后删除迁移用户。
脚本 3:搭建主从 --基于 mysqldump
介绍
使用第一个脚本安装完 MySQL 后,可以使用此脚本搭建主从复制,可以基于 gtid 或 postion 两种方式搭建,相较于 myduper 速度会慢一些。
功能
- 安装环境检查是否符合要求
- 基于 gtid 复制
- 基于 postion 复制
- 支持延迟复制
- 指定复制线程数
- mydumper 更快的数据导入
- 长查询保护
限制
- 仅在 centos 7 上进行了测试
- 需要创建搭建用户 脚本内有注释
- 需要搭建好从实例
- 当运行失败时请删除主库的主从用户
使用方法
# 获取脚本 curl -o mysql_replica.sh https://gitee.com/hh688/mysql_install_script/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模式 。
- 对于已经开启
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; ...
声明
以上内容仅供学习交流,使用前请自行验证。