mysql数据库主从搭建
一、最近一直在学习mysql的东西,刚好看到mysql如何搭建主从数据库,搜集了很多资料后大致了解了mysql主从复置的原理。以下是我的理解:
举例master为主数据库,slave为从数据库。
- slave需要通过自身的IO进程连接上master数据库,并读取master指定日志文件的指定位置之后的内容(slave会向master请求,“我要XXX日志文件XXX位置之后的内容”);
- 这时候master接收到来自slave的请求后会找到该日志文件的制定位置,并复制该位置之后的内容返回给slave;
- slave将接收到的日志内容依次添加到slave端的relay-log文件的最末端,并将读取到的master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉master“我需要从哪个bin-log的什么位置开始读取”;
- slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
二、现在我们开始配置主从数据库:
这里我准备了两台服务器,系统均为centos7,服务器的系统可以有差别;数据库的话建议大家使用统一版本的。这里我的服务器ip分别是192.168.0.109(master)、192.168.0.133(slave).
- 服务器:centos7
- 数据库:Ver 15.1 Distrib 5.5.50-MariaDB, for Linux (x86_64) using readline 5.1
登录到master的数据库,在master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。用户名的密码都会存储在文本文件master.info中
命令如下:
mysql > GRANT REPLICATION SLAVE ON *.*
TO 'slave'@'192.168.0.133'
IDENTIFIED BY '';//建立root账户,密码是123456,只允许该账户在192.168.0.133这个ip登录(slave的ip),授予REPLICATION SLAVE权限
mysql > flush privileges;//使权限立即生效- 配置master,slave数据库
配置master
vi /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容 server-id= #设置服务器id,为1表示主服务器。
log_bin=mysql-bin #启动MySQ二进制日志系统。
binlog-do-db=abc #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db = mysql,information_schema #忽略写入binlog的库 重启master数据库 systemctl restart mariadb //我这里安装的mysql服务端是mariadb-server 登录master数据库,查看master状态 show master status;+------------------+----------+--------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000001 | 2722 | | mysql,information_schema |
+------------------+----------+--------------+--------------------------+配置slave
vi /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容
server-id= #设置服务器id,为2表示从服务器,这个server-id不做规定,只要主从不一致就好
log_bin=mysql-bin #启动MySQL二进制日志系统,如果该从服务器还有从服务器的话,需要开启,否则不需要
binlog-do-db=abc #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db = mysql,information_schema #忽略写入binlog的库,如果该从服务器还有从服务器的话,需要开启,否则不需要重启slave数据库 systemctl restart mariadb //我这里安装的mysql服务端是mariadb-server 登录从数据库, change master to master_host='192.168.0.133',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=2722;//mysql-bin.000001,2722为之前master查到的状态值。 start slave;//开启从数据库
show slave status; //查看从数据库的状态
- 在主mysql创建数据库abc,再从mysql查看已经同步成功!
create database abc;
发现从数据库中也会出现数据库abc,说明我们的主从数据库搭建成功啦~
mysql数据库主从搭建的更多相关文章
- mysql数据库主从同步
环境: Mater: CentOS7.1 5.5.52-MariaDB 192.168.108.133 Slave: CentOS7.1 5.5.52-MariaDB 192.168. ...
- Spring AOP实现Mysql数据库主从切换(一主多从)
设置数据库主从切换的原因:数据库中经常发生的是“读多写少”,这样读操作对数据库压力比较大,通过采用数据库集群方案, 一个数据库是主库,负责写:其他为从库,负责读,从而实现读写分离增大数据库的容错率. ...
- mysql数据库主从同步读写分离(一)主从同步
1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做? 不往从服务器去写了 ...
- ubuntu 下 mysql数据库的搭建 及 数据迁移
1.mysql的安装 我是使用apt-get直接安装的 :sudo apt-get install mysql-server sudo apt-get install mysql-client 2.配 ...
- (转)Mysql数据库主从心得整理
Mysql数据库主从心得整理 原文:http://blog.sae.sina.com.cn/archives/4666 管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本 ...
- MySQL数据库主从同步延迟分析及解决方案
一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 lo ...
- Linux下MySQL数据库主从同步配置
说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...
- MySQL数据库主从切换脚本自动化
MySQL数据库主从切换脚本自动化 本文转载自:https://blog.csdn.net/weixin_36135773/article/details/79514507 在一些实际环境中,如何实现 ...
- MySQL数据库主从同步实战过程
Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...
随机推荐
- GitHub 简易使用
笔记内容 学习笔记-段玉磊 Github Github 命令 写这篇文章主要写一下如何运用终端命令,进行Git的配置以及使用,由于本人我不太习惯使用图形IDE,效率没有命令行高,我还是推荐使用命令行进 ...
- 浅谈DevExpress<五>:TreeList简单的美化——自定义单元格,加注释以及行序号
今天就以昨天的列表为例,实现以下效果:预算大于110万的单元格突出显示,加上行序号以及注释,如下图:
- js中常见的问题
js中常见的问题 原文链接 1.js获取select标签选中的值 原生js var obj = document.getElementByIdx_x(”testSelect”); //定位id var ...
- TypeScript开发程序
使用TypeScript开发程序 简介 TypeScript一直发展不错,我们公司在开发新功能时,考虑到程序的可维护性,使用了TypeScript编写浏览器上的程序,我们是从零开始使用TypeScri ...
- 模块化开发AraeRegistration
.NET/ASP.NET MVC(模块化开发AraeRegistration) 阅读目录: 1.开篇介绍 2.AreaRegistration注册路由(传递路由上下文进行模块化注册) 1]开篇介绍 A ...
- Tomcat中Context的配置
Tomcat直接ip地址访问不用加端口和项目名 当我们开发完一个WEB项目 然后部署到tomcat下,正常情况下应该是这样访问:http://localhost:端口号/项目名 如果我们想让用户仅仅输 ...
- 【NET】Winform用户控件的初步封装之列表页控件
public abstract partial class TListPager<TEntity, TRepository, TSqlStrConstruct> : UserControl ...
- 专为webkit内核而生的javascript库mango正式发布
专为webkit内核而生的javascript库mango正式发布 Mango(芒果) javascript库 求fork https://github.com/willian12345/mango ...
- 自定义html标签
自定义html标签 (觉得页面全是div 的解决办法 来个个性化) 办法一(来源于 让ie支持html5标签的方法): 在ie9以前如果要自定义要使用document.createElement的方法 ...
- .NET:再论异常处理,一个真实的故事
.NET:再论异常处理,一个真实的故事 背景 关于是使用枚举或布尔类型来表示方法执行状态,还是使用异常,可以参考这里的文章:http://www.google.ee/search?q=site%3Aw ...