Linux 部署MySQL 一主一从一备
主服务器搭建
准备三台服务器,一主一从一备
在主服务器(master)下找到mysql配置文件。
Window下为my.ini(一般在C:\ProgramData\MySQL\MySQL Server 5.7下); Linux下为/etc/my.cnf在[mysqld]下添加如下配置
# 服务的唯一编号
server-id=1
# 开启mysql binlog功能 slave会基于此log-bin来做replication
log-bin=master-bin
log-bin-index=master-bin.index
# binlog记录内容的方式,记录被操作的每一行
binlog_format=ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image=minimal
# 指定需要复制的数据库名
# 如果没有指定会监听复制所有的库,新建库操作也会复制,反之只监听复制指定的库
binlog-do-db=test
#不用于master-slave的具体数据库
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
- 授权
我们需要给slave配置一个用户/密码的权限
# 只读赋权
GRANT SELECT ON *.* TO 'lucky'@'10.104.114.116' IDENTIFIED BY 'luckytea';
# 从权限 赋权
GRANT REPLICATION SLAVE ON *.* TO 'luckytea'@'10.104.132.33' IDENTIFIED BY 'luckytea';
# 刷新权限
FLUSH PRIVILEGES;
- 重启mysql
| 系统 | 命令 |
|---|---|
| Linux | service mysqld restart; |
| Window | net stop mysql; net start mysql; |
6、 查看主服务器状态
注意!更改配置或者数据库重启,主库日志的Position会改变,从库需要重新配置
# 确保主从库数据库结构一致
# 查看server-id 是否和配置一致,从服务器id需要大于主服务器id
show variables like '%server_id%'
# 将下列结果中 File和 Position 记录后交给从服务器搭建人员
show master status\G;
从服务器搭建
- 在从服务器(slave)下找到mysql配置文件。
Window下为my.ini(一般在C:\ProgramData\MySQL\MySQL Server 5.7下); Linux下为/etc/my.cnf - 在[mysqld]下添加如下配置
log-bin=relay-bin
#先全局查找注释原来的server-id
server-id=2
#保存配置进行重启查看server-id
show variables like '%server_id%';
- 进入slave的mysql命令行 执行
CHANGE MASTER TO
MASTER_HOST='master所在服务器的IP',
MASTER_USER='master授权的账号',
MASTER_PASSWORD='master授权的密码',
MASTER_LOG_FILE='master的日志文件名',
MASTER_LOG_POS=master的日志所在位置;
- 执行服务 并查看状态
# 关闭防火墙或者打开端口权限
# 查看server-id 是否和配置一致,从服务器id需要大于主服务器id
show variables like '%server_id%'
start slave;
show slave status\G;
# 请确认 Master_Log_File = 主服务器的File, Read_Master_Log_Pos = 主服务器的Position
# 请确认 Slave_IO_Running = Slave_SQL_Running = yes
- 如果Slave_SQL_Running = No
方法一:说明从库执行了错误操作,请进行回滚
stop slave ;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave ;
show slave status\G;
方法二:重新进行一次同步操作
stop slave ;
CHANGE MASTER TO
MASTER_HOST='master所在服务器的IP',
MASTER_USER='master授权的账号',
MASTER_PASSWORD='master授权的密码',
MASTER_LOG_FILE='master的日志文件名',
MASTER_LOG_POS=master的日志所在位置;
start slave;
show slave status\G;
- 修改主库数据库,如从库变化,则配置成功
主主互备
主主互备:服务器1是服务器2的主服务器,服务器2也是服务器1的主服务器,互相进行主从备份。主从备份过程参考如上。
注意,为了避免主键id冲突,需要加入如下配置
主服务器1 在/etc/my.cnf下[mysqld]加入如下语句,使得新增id全为奇数
# 自增id起始值
auto_increment_offset=1
# 每次自增数字
auto_increment_increment=2
主服务器2 在/etc/my.cnf下[mysqld]加入如下语句,使得新增id全为偶数
# 自增id起始值
auto_increment_offset=2
# 每次自增数字
auto_increment_increment=2
注意,本教程未考虑灾备和脑裂的情况,暂行方案是连接客户端时捕获异常,切换ip连接。
推荐使用keepaliver,但是脚本需要自己编写,较复杂
Linux 部署MySQL 一主一从一备的更多相关文章
- linux 部署mysql
参考:https://www.cnblogs.com/silentdoer/articles/7258232.html mysql中执行的语句需要在语句结尾使用分号 下载 MySql yum 包 w ...
- Linux下Mysql安装与常见问题解决方案
1.Mysql安装 环境: Mysql版本: 开始安装: 首先检查环境有没有老版本mysql,有的话先卸载干净,具体百度. 接着先获取mysql的安装包:wget https://dev.mysql. ...
- Linux Debian 7部署LEMP(Linux+Nginx+MySQL+PHP)网站环境
我们在玩VPS搭建网站环境的时候,都经常看到所谓的LAMP.LNMP.LEMP,LAMP, 其中的A代表APECHE WEB驱动环境,LNMP中的N代表NGINX驱动环境,只不过海外的叫法NGINX ...
- 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的
在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...
- CentOS6系统编译部署LAMP(Linux, Apache, MySQL, PHP)环境
我们一般常规的在Linux服务器中配置WEB系统会用到哪种WEB引擎呢?Apache还是比较常用的引擎之一.所以,我们在服务器中配置LAMP(Linux, Apache, MySQL, PHP)是我们 ...
- JAVAEE——BOS物流项目14:Linux部署(安装jdk、tomcat、mySQL)和扩展资料
1 学习计划 1.Linux部署 n 安装jdk n 安装tomcat n 安装MySQL n 将项目发布到tomcat 2.扩展资料 2 Linux部署 2.1 安装jdk 第一步:获取Linux系 ...
- 【Linux】Centos部署MySQL
将CentOS部署MySQL需要本地配置环境.本地编译MySQL,耗时较长的情况,优化为编译成型MySQL并打包,推送并按配置部署. 首先需要在一台机器配置好环境,搭个YUM源,并将所需要的包取出备用 ...
- linux 部署
一.d2 安装之后的配置 centos系统安装后的基本配置: .常用软件安装: yum install -y bash-completion vim lrzsz wget expect net-too ...
- Mysql+Keepalived双主热备高可用操作记录
我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...
随机推荐
- 浅析Java String
String 特性 1.其定义的字符串序列不可变. 2.是一个final类,不可被继承,且其内部一些重要方法被定义为final类型,不可重写. 3.内部实现Serializable接口(支持字符串序列 ...
- centos7 php(mariadb)安装pdo
环境:centos7+php5.4.16+mariadb5.5.52 在centos7环境下安装PDO,安装的时候都是自己分开安装的,先装的PHP(httpd)后装的mariadb. 数据库安装完成后 ...
- 《Java练习题》进阶练习题(二)
编程合集: https://www.cnblogs.com/jssj/p/12002760.html 前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. [程序58 ...
- 全平台轻量开源verilog仿真工具iverilog+GTKWave使用教程
前言 如果你只是想检查Verilog文件的语法是否有错误,然后进行一些基本的时序仿真,那么Icarus Verilog 就是一个不错的选择.相比于各大FPGA厂商的IDE几个G的大小,Icarus V ...
- 3、看源码MVC中的Controllr的Json方法
无论ViewResult还是JsonResult都继承ActionResult,ActionResult里只有一个方法ExecuteResult 1.Controllr的Json方法 实际上是new ...
- 在 Spring Boot 项目中使用 activiti
新建springBoot项目时勾选activiti,或者在已建立的springBoot项目添加以下依赖: <dependency> <groupId>org.activiti& ...
- JS---涉及到的common.js
//格式化日期的代码 //获取指定标签对象 //获取元素的文本内容 //获取元素的文本内容 //获取父级元素中的第一个子元素 //获取父级元素中的最后一个子元素 //获取某个元素的前一个兄弟元素 // ...
- 单片机内核Cortex-M3八大知识点
单片机内核Cortex-M3的八个知识点 1.指令集 32位ARM指令集:对应ARM状态 16位Thumb指令集:对应Thumb状态(是ARM指令集的一个子集) 指令集演进图 2.BKP备份寄存 ...
- 关于svn外网访问的问题-搭建成功
昨天聊到了svn外网问题.今天,无限查资料,虽然眼累了一些,不过最终实现.还是开心了一下! 背景:本机设置svn服务器,搭建代码库并开设外网 供不再同一地点的他人来访问 上图: 1.svn服务器端 搭 ...
- Leetcode979 : Distribute Coins in Binary Tree 二叉树均匀分配硬币问题
问题 给定一个二叉树的root节点,二叉树中每个节点有node.val个coins,一种有N coins. 现在要求移动节点中的coins 使得二叉树最终每个节点的coins value都为1.每次移 ...