一、下载解压包

打开 MySQL 官网地址:https://dev.mysql.com/downloads/mysql/ ,选择面安装版本。

二、解压文件

下载到合适文件夹,解压压缩包。

解压 mysql-8.0.22-macos10.15-x86_64.tar.gz 三份,分别命名文件夹为 masterslave1slave2

三、编辑数据库配置文件

master 文件夹下的 support-files 文件夹下面新建 my.conf 配置文件

[client]
default-character-set=utf8
#password = your_password
port = 3306
#修改的socket文件的位置,默认是走的/tmp下的mysql.sock会有冲突
#这是报错 Another process with pid 77346 is using unix socket file.
#客户端也需要这个和服务端的一致
socket = /Users/zeyangg/SynologyDrive/ee/mysql/master/mysql.sock
[mysqld]
event_scheduler=ON
character-set-server=utf8
init_connect='SET NAMES utf8
port = 3306
mysqlx_port = 33060
bind-address=127.0.0.1
#修改的socket文件的位置,默认是走的/tmp下的mysql.sock会有冲突
socket = /Users/zeyangg/SynologyDrive/ee/mysql/master/mysql.sock
mysqlx_socket= /Users/zeyangg/SynologyDrive/ee/mysql/master/mysqlx.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
character-set-server=utf8
init_connect='SET NAMES utf8'
#修改mysql的主目录
basedir=/Users/zeyangg/SynologyDrive/ee/mysql/master
#添加data文件的目录,存储各种数据和日志
datadir=/Users/zeyangg/SynologyDrive/ee/mysql/master/data log-bin=mysql-bin
binlog_format=mixed
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqldump]
quick
max_allowed_packet = 16M [mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=utf8 [myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout

slave1 文件夹下的 support-files 文件夹下面新建 my.conf 配置文件

[client]
default-character-set=utf8
#password = your_password
#修改端口号不要和主库一致
port = 3316
#修改的socket文件的位置,默认是走的/tmp下的mysql.sock会有冲突
#这是报错 Another process with pid 77346 is using unix socket file.
#客户端也需要这个和服务端的一致
socket = /Users/zeyangg/SynologyDrive/ee/mysql/slave1/mysql.sock
[mysqld]
event_scheduler=ON
character-set-server=utf8
init_connect='SET NAMES utf8
#修改端口号
port = 3316
mysqlx_port = 33061
bind-address=127.0.0.1
#修改的socket文件的位置,默认是走的/tmp下的mysql.sock会有冲突
socket = /Users/zeyangg/SynologyDrive/ee/mysql/slave1/mysql.sock
mysqlx_socket= /Users/zeyangg/SynologyDrive/ee/mysql/slave1/mysqlx.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
character-set-server=utf8
init_connect='SET NAMES utf8'
#修改mysql的主目录
basedir=/Users/zeyangg/SynologyDrive/ee/mysql/slave1
#添加data文件的目录,存储各种数据和日志
datadir=/Users/zeyangg/SynologyDrive/ee/mysql/slave1/data log-bin=mysql-bin
binlog_format=mixed
#不要和主库一致
server-id = 2
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqldump]
quick
max_allowed_packet = 16M [mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=utf8 [myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout

slave2 文件夹下的 support-files 文件夹下面新建 my.conf 配置文件

[client]
default-character-set=utf8
#password = your_password
#修改端口号不要和主库一致
port = 3326
#修改的socket文件的位置,默认是走的/tmp下的mysql.sock会有冲突
#这是报错 Another process with pid 77346 is using unix socket file.
#客户端也需要这个和服务端的一致
socket = /Users/zeyangg/SynologyDrive/ee/mysql/slave2/mysql.sock
[mysqld]
event_scheduler=ON
character-set-server=utf8
init_connect='SET NAMES utf8
#修改端口号
port = 3326
mysqlx_port = 33062
#修改的socket文件的位置,默认是走的/tmp下的mysql.sock会有冲突
socket = /Users/zeyangg/SynologyDrive/ee/mysql/slave2/mysql.sock
mysqlx_socket= /Users/zeyangg/SynologyDrive/ee/mysql/slave2/mysqlx.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
character-set-server=utf8
init_connect='SET NAMES utf8'
#修改mysql的主目录
basedir=/Users/zeyangg/SynologyDrive/ee/mysql/slave2
#添加data文件的目录,存储各种数据和日志
datadir=/Users/zeyangg/SynologyDrive/ee/mysql/slave2/data log-bin=mysql-bin
binlog_format=mixed
#不要和主库一致
server-id = 3
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqldump]
quick
max_allowed_packet = 16M [mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=utf8 [myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout

四、数据库初始化

使用命令行进入对应目录,执行以下语句

# 进入 master 目录
cd /Users/zeyangg/SynologyDrive/ee/mysql/master/bin # 执行 master 初始化
./mysqld --defaults-file=/Users/zeyangg/SynologyDrive/ee/mysql/master/support-files/my.cnf --initialize-insecure # 进入 slave1 目录
cd /Users/zeyangg/SynologyDrive/ee/mysql/slave1/bin # 执行 slave1 初始化
./mysqld --defaults-file=/Users/zeyangg/SynologyDrive/ee/mysql/slave1/support-files/my.cnf --initialize-insecure # 进入 slave2 目录
cd /Users/zeyangg/SynologyDrive/ee/mysql/slave2/bin # 执行 slave2 初始化
./mysqld --defaults-file=/Users/zeyangg/SynologyDrive/ee/mysql/slave2/support-files/my.cnf --initialize-insecure

执行过程中可能出现提示 mysqld 不安全

选择 Cancel,然后进入系统安全里面,选择 allow anyway,然后再次执行上述命令,选择 open 就可以继续运行了。

五、启动主数据库

分别启动对应数据库

# 进入 master 目录
cd /Users/zeyangg/SynologyDrive/ee/mysql/master/bin # 启动 master
./mysqld --defaults-file=/Users/zeyangg/SynologyDrive/ee/mysql/master/support-files/my.cnf # 进入 slave1 目录
cd /Users/zeyangg/SynologyDrive/ee/mysql/slave1/bin # 启动 slave1
./mysqld --defaults-file=/Users/zeyangg/SynologyDrive/ee/mysql/slave1/support-files/my.cnf # 进入 slave2 目录
cd /Users/zeyangg/SynologyDrive/ee/mysql/slave2/bin # 启动 slave2
./mysqld --defaults-file=/Users/zeyangg/SynologyDrive/ee/mysql/slave2/support-files/my.cnf

启动 master 截图如下

六、创建用户

# 进入 master 目录
cd /Users/zeyangg/SynologyDrive/ee/mysql/master/bin # 进入主 master 库
./mysql -h 127.0.0.1 -uroot -P3306 # 创建用户(此处使用随机生成密码,需要记住密码)
# create user 'holddie'@'%' identified by '123456';
create user 'holddie'@'%' IDENTIFIED BY RANDOM PASSWORD; # 授权远程同步
grant replication slave on *.* to 'holddie'@'%'; # 保存刷新
flush privileges; # 查看主库的状态
show master status\G;

查看主库的状态

从库连接主库

# 进入 slave1 从库的状态
cd /Users/zeyangg/SynologyDrive/ee/mysql/slave1/bin # 在从库使用刚才主库创建的账号,连接一次,看否账号可用(使用刚才创建账号对应的密码)
./mysql -h 127.0.0.1 -uholddie -P3306 # 如果登录没有问题则 quit 退出,进入 slave1 自己数据库
./mysql -h 127.0.0.1 -uroot -P3316 # 使用命令 (注意此处替换自己创建数据库账号,以及修改对应 master_log_file 名称以及偏移位置)
change master to master_host='127.0.0.1',master_port=3306,master_user='holddie',master_password='VrQ>-YtFPGw&-sJ,hI2Q', master_log_file='mysql-bin.000004',master_log_pos=156; # 启动 slave1 同步
start slave; # 查看同步状态
show salve status;

注意观察 Slave_IO_Running 和 Slave_SQL_Running 的状态值,只有都为 Yes 的时候才表明同步 ok,同理 Slave2 也是相同的操作步骤。

查看同步状态

# 进入 slave1 目录
cd /Users/zeyangg/SynologyDrive/ee/mysql/slave1/bin ./mysql -h 127.0.0.1 -uroot -P3316 show salve status;

注意观察 Slave_IO_Running 和 Slave_SQL_Running 的状态值,只有都为 Yes 的时候才表明同步 ok,同理 Slave2 也是相同的操作步骤。

此时我们使用 DataGrip 连接数据库,在 master 修改数据,然后在从库查看,是否数据同步。

Mac MySQL 8.0 (免安装版) 主从集群搭建的更多相关文章

  1. 主从集群搭建及容灾部署redis

    redis主从集群搭建及容灾部署(哨兵sentinel) Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 l  Redis安装 l  整体架构 l  Redis主 ...

  2. kubernetes(K8S)快速安装与配置集群搭建图文教程

    kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...

  3. MySQL 5.7 免安装版配置

      MySQL5.7免安装版配置 Mysql是一个比较流行且很好用的一款数据库软件,如下记录了我学习总结的mysql免安装版的配置经验. 一. 软件下载 5.7 32位https://dev.mysq ...

  4. MySQL 5.7免安装版设置编码格式、设置root用户密码 远程登录.

    一.设置默认编码格式为utf-8 ... 由于免安装版并没有my.ini的配置文件.需要自行粘贴配置并创建一个my.ini 配置如下: [mysql] # 设置mysql客户端默认字符集 defaul ...

  5. redis5.0.0功能介绍以及主从集群、哨兵搭建

    这两天突然想起redis,索性就再尝试一下搭建最新版本的redis,过程有点艰辛呀,记录一下,供自己和大家今后搭建做参考. 一.为什么用Redis? 我自己总结了一下: 1.基于内存实现的key-va ...

  6. redis主从集群搭建及容灾部署(哨兵sentinel)

    Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...

  7. helm安装redis+Sentinel集群搭建

    一.redis集群特点 数据 在多个Redis节点之间自动分片 sentinel特点: 它的主要功能有以下几点 不时地监控redis是否按照预期良好地运行; 如果发现某个redis节点运行出现状况,能 ...

  8. Kafka 0.9+Zookeeper3.4.6集群搭建、配置,新Client API的使用要点,高可用性测试,以及各种坑 (转载)

    Kafka 0.9版本对java client的api做出了较大调整,本文主要总结了Kafka 0.9在集群搭建.高可用性.新API方面的相关过程和细节,以及本人在安装调试过程中踩出的各种坑. 关于K ...

  9. apache-storm-1.0.2.tar.gz的集群搭建(3节点)(图文详解)(非HA和HA)

    不多说,直接上干货! Storm的版本选取 我这里,是选用apache-storm-1.0.2.tar.gz apache-storm-0.9.6.tar.gz的集群搭建(3节点)(图文详解) 为什么 ...

随机推荐

  1. 没人比我更懂 HashMap :)

    哈,标题开个玩笑,0202 年的段子哈. 一.首先看一下 HashMap 的构造函数 /** * Constructs an empty <tt>HashMap</tt> wi ...

  2. ZOJ 1006 Do the Untwish

    Do the Untwish 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1006 题意:给定密文按公式解密 注 ...

  3. Spring AOP实现注解式的Mybatis多数据源切换

    一.为什么要使用多数据源切换? 多数据源切换是为了满足什么业务场景?正常情况下,一个微服务或者说一个WEB项目,在使用Mybatis作为数据库链接和操作框架的情况下通常只需要构建一个系统库,在该系统库 ...

  4. 3.6 栈 ADT - 3.7 队列 ADT

    3.6 栈 ADT 栈是限制插入和删除只能在一个位置上进行的表,叫做栈的顶部.对栈的基本操作有进栈和出栈,进栈在顶部插入元素,出栈删除最后插入的元素. 栈是一个表,因此任何实现表的方法都能实现栈.显然 ...

  5. Python正则表达式-换行的匹配

    找到了之前参考的博文,用来记录一下https://www.cnblogs.com/baxianhua/p/8572805.html 平常 点 (.)去匹配任意字符的时候,是不能匹配换行符的 匹配换行: ...

  6. 下载eclipse及其插件

    1.安装JDK 2.配置JAVA_HOME 3.具体下载地址 (1)JDK的下载和安装 jdk官网 http://www.oracle.com/technetwork/java/javase/down ...

  7. 设置Eclipse 字体 - MD终于摸到了

    以前总是没办法设置Eclipse的 左边 资源管理器 字体.思想老局限在Eclipse的Font Setting里,跳不出这个玄妙的莫比乌斯环似的圈圈儿......每次戴着眼镜设置完字体,然后坐在电脑 ...

  8. linux后台开发常用调试工具

    一.编译阶段         nm                 获取二进制文件包含的符号信息 strings           获取二进制文件包含的字符串常量 strip             ...

  9. linux 会话 进程组 守护进程

    Linux 下每个进程都会有一个非负整数表示的唯一进程 ID ,简称 pid . Linux 提供了 getpid 函数来获取 进程的 pid ,同时还提供了 getppid 函数来获取父进程的 pi ...

  10. 年轻人不讲武德来白piao我这个老同志

    朋友们好啊,我是码农小胖哥. 今天有个同学问我在吗,我说什么事? 给我发个截图,我一看!噢,原来是帮忙搞个定时任务,还是动态的. 他说了两种选择,一种是用DelayQueue,一种是用消息队列. 他说 ...