本篇文章主要介绍如何搭建MySQL主主配置、主从配置、haproxy、keepalived,已经搭建过程中的一些问题。本次运行环境是在docker中,也会介绍一些docker的知识

docker 小知识

创建本机可访问的MySQL容器

1、直接用 docker 拉取别人搭建好的MySQL

2、自己创建 centos 或者其他容器,下载安装MySQL

我是采用的第二种方案

命令: docker run -itd --name mysql_server1 -p 13306:3306 centos:7

13306 是本地的端口,3306是容器的端口。这样本地可以根据端口13306访问容器中的数据库

-i: 交互式操作。

-t: 终端。

-d: 后台运行容器,并返回容器ID;

创建harpoxy、Keepalive 的容器

docker run -itd --privileged=true --name mysql_server1 -p 23396:3306 centos:7 /sbin/init

--privileged=true 和 /sbin/init 加上这两个可以在容器中使用systemctl的命令

然后通过docker exec -it 容器ID 进入

如果没有 systemctl 运行haproxy和Keepalive会遇到一些问题,且不容易找到错误日志

下载MySQL

1、粘贴MySQL社区最新的MySQL rpm包链接,wget下载

2、rpm -ivh mysql.rpm (下载的rpm文件)

3、yum install mysql

4、在 /var/log/mysqld.log 中找到初始化密码,登录,设置密码

MySQL主主配置

我分别在172.17.0.2和172.17.0.4 中安装了MySQL,用于搭建主主配置

172.17.0.2 MySQL 配置

1、编辑 MySQL 配置文件 vim /etc/my.cnf。不知道配置文件在哪的可以执行 mysql --help | grep 'Default options' -A 1 这个命令

server-id = 1 # 唯一的不能重复
log-bin = mysql-bin # 开启二进制日志
binlog_format = ROW # 日志格式
max_binlog_size = 100M # 最大日志文件大小
binlog-do-db = itma1 # 支持主从的db

2、老的MySQL版本可能需要配置让主键不同的参数,本次使用环境是MySQL8.0默认不会主键冲突,不需要额外配置

172.17.0.2的配置

server-id = 2
log-bin = mysql-bin
binlog_format = ROW
max_binlog_size = 100M
binlog-do-db = itma1

执行sql命令

# 172.17.0.2 执行命令
# 创建用户
create user slave@"%" IDENTIFIED BY "test123";
# 授予权限
GRANT REPLICATION SLAVE ON *.* TO slave@"%";
show master status\G # 172.17.0.4 执行命令
change master to master_host="gateway",master_port=13306, master_user="slave",master_password="test123",master_log_file="mysql-bin.000001",master_log_pos=157;
start slave;
show slave status\G

以上是 0.2是主,0.4是从。上边的命令两个机器反过来分别执行一次,即可配置成 0.4主,0.2是从,这样主主配置搭建完成



配置过程中可能会出现一些错误,利用 show slave status\G 可以查看具体错误信息,不过也有可能出现命令操作太快,还未链接成功的情况。本人还遇到过主的账号(slave账号)需要在主的服务器登录一次,从服务器才能链接成功的情况,暂时不确定什么原因,有知道的可以留言,非常感谢

MySQL主从配置

1、从库配置文件,所属主库为 172.17.0.2

server-id = 11
log-bin = mysql-bin
binlog_format = ROW
log_slave_updates = 1
max_binlog_size = 100M
replicate-do-db = itma1 # 从库更新也写binlog

2、执行命令

change master to master_host="gateway",master_port=13306, master_user="slave",master_password="test123",master_log_file="mysql-bin.000001",master_log_pos=157;
start slave;

haproxy 配置

新创建centos容器

yum install haproxy
# 配置文件
vim /etc/haproxy/haproxy.cfg # 最好先备份一下
systemctl start haproxy
systemctl start haproxy

配置如下图,注意:model 需要时tcp,http虽然检测没问题,但是通过本服务器的地址链接不到MySQL服务

配置成功之后,就可以在其他服务器通过该服务器地址链接MySQL了

Keepalived 配置

使用haproxy同样的服务器

yum install keepalived
# 配置文件
vim /etc/keepalived/keepalived.conf 最好先备份
systemctl start keepalived
systemctl status keepalived

配置如下图

haproxy 和keepalived 可以配置到多个服务器上,keepalived 会根据优先级去判断使用哪台主机,至于这样配置的好处这里就不过多介绍

MySQL主从配置及haproxy和keepalived搭建的更多相关文章

  1. centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课

    centos  MySQL主从配置 ntsysv   chkconfig  setup命令  配置MySQL 主从 子shell  MySQL备份  kill命令  pid文件  discuz!论坛数 ...

  2. MySQL主从配置详解

    一.mysql主从原理 1. 基本介绍 MySQL 内建的复制功能是构建大型,高性能应用程序的基础.将 MySQL 的 数亿分布到到多个系统上去,这种分步的机制,是通过将 MySQL 的某一台主机的数 ...

  3. mysql主从配置和galera集群

    mariadb主从 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构 ...

  4. mysql主从配置实现一主一从读写分离

    主从介绍Mysql主从又叫Replication.AB复制.简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步mysql主从是基于binlog,主上需开启bin ...

  5. mysql主从配置

    引言: 双11,阿里云服务器打折,于是我忍不住又买了一台服务器,于是咱也是有两台服务器的爷们了,既然有了两台服务器,那么肯定要好好利用一下吧,那么就来玩玩mysql的主从配置吧. 准备 两台数据库服务 ...

  6. Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  7. CentOS 7下的 Mysql 主从配置

    最近在玩mysql主从配置,在此记录一下 一.前言 1.安装两个虚拟机(CentOS 7).iP分别是192.168.47.131 和192.168.47.133.其中192.168.47.133作为 ...

  8. Mysql主从配置+读写分离

    Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...

  9. mysql主从配置(清晰的思路)

    mysql主从配置.鄙人是在如下环境测试的: 主数据库所在的操作系统:win7 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111 从数据库所在的操作系统:linux 从数据的版本 ...

随机推荐

  1. (stm32f103学习总结)—printf重定向

    一.printf重定向简介 我们知道C语言中printf函数默认输出设备是显示器,如果要实现在 串口或者LCD上显示,必须重定义标准库函数里调用的与输出设备相关的函数.比如使用printf输出到串口, ...

  2. android:text 文字阴影设置

    <SPAN style="FONT-SIZE: 16px"><TextView  android:id="@+id/text"       a ...

  3. 论文解读(XR-Transformer)Fast Multi-Resolution Transformer Fine-tuning for Extreme Multi-label Text Classification

    Paper Information Title:Fast Multi-Resolution Transformer Fine-tuning for Extreme Multi-label Text C ...

  4. php实验一 html网页设计

    页面展示: 源码demo: 等我传到github

  5. java中的方法(method)到底怎么用?给个例子

    7.方法(method)   被调例子, int add(int x, int y){ return x+y; } 主调例子, for example: int result = add(5,3); ...

  6. DWRUtil.addOptions

    DWRUtil.addOptions有5种模式 数组: DWRUtil.addOptions(selectid, array) 会创建一堆option,每个option的文字和值都是数组元素中的值. ...

  7. 小程序预览图片wx.previewImage

    效果图:  ====>   ==>  代码: <image mode='aspectFill' bindtap='previewImage' data-src='{{dataList ...

  8. 《头号玩家》AI电影调研报告(五)

    4.VR自由行走跑步机 电影中,它可以让玩家朝任意方向无限奔跑并保持在平台最中央,还可以模拟上台阶和走斜坡的情况.而下面这件VR跑步装备,可以让你在游戏世界穿行自如. 奥地利创意公司Cyberith公 ...

  9. 小程序安卓端播放不了音频解决方法wx.createInnerAudioContext()

    在小程序播放音频时,使用组件wx.createInnerAudioContext(),安卓端无法播放音频. 我的情况:播放服务器上传来的音频,格式为mp3.首先查看你的格式是否符合文档要求 在安卓端进 ...

  10. Python入门-多进程

    1.获取本机CPU # 早期的CPU是单核:实现多个程序并行,在某一时间点,其实只有一个进程 # 后来硬件多核CPU:多个进程是并行执行. from multiprocessing import cp ...