MYSQL主从数据库搭建
sc delete "服务名" 删除服务
环境:
(以下是我这次搭建所使用的环境)
- 主数据库:
系统:ubuntu ; MYSQL 5.1.63 ;ip:192.168.28.128
- 从数据库
系统:window 7 ;MYSQL 5.5.8 ;ip:192.168.51.127
步骤:
1.在两台mysql上创建同步用户,让两个mysql可以互相通过root/root访问对方。
主执行:GRANT ALL PRIVILEGES ON *.* TO
'root'@'192.168.51.127' IDENTIFIED BY 'root' WITH GRANT OPTION;
从执行:GRANT ALL PRIVILEGES ON *.* TO
'root'@'192.168.28.128' IDENTIFIED BY 'root' WITH GRANT OPTION;
2.修改两台的配置文件。
ubuntu 上:
- 打开/etc/my.cnf
: sudo gedit /etc/my.cnf 找到[mysqld]在其下添加下面选项。
log-bin=mysql-bin
innodb_flush_log_at_trx_commit = 1
sync_binlog=1
binlog-do-db=game
binlog-ignore-db=test
binlog-ignore-db=mysql
replicate-do-db=game
其中binlog-do-db和replicate-do-db标记出需要进行同步的数据库,对于多个数据库,重复选项多次即可,如上面的配置则表示同步bookmark和debate。binlog-ignore-db表示不进行同步的数据库,上面的配置表示不同步test,
mysql库。
- 对于主mysql(192.168.28.128),打开选项:
server-id=1
- 对于从mysql,打开选项
server-id=2
注意server-id选项必须打开,并且集群中每个mysql都要有一个单独的值,不能重复。一般设置主为1,从为2, 3, 4....。手册上说只要不相同什么整数都没有关系,可以设置为IP的值,如:202,203.
- 得到主数据库二进制log文件和位置ip:重启mysql,执行sql语句:show master status;
结果:
+------------------+----------+--------------+--------------------------+
| File
| Position | Binlog_Do_DB |
Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000005 | 106 |
game | information_schema,mysql
|
+------------------+----------+--------------+--------------------------+
1 row in set (0.00 sec)
记住File
= mysql-bin.000005 Position =106;下面有下划线步骤用到。
window上:
- 配置my.ini文件
log-bin=mysql-bin #启用二进制日志文件
server-id=2
#设置数据库ID
binlog-do-db=databasename #二进制需要同步的数据库(多个用逗号分隔)
binlog-ignore-db=mysql #避免同步的数据库(多个用逗号分隔)
#配置主从同步
server-id=2 #从服务器ID
master-host=192.168.28.128 #主服务器IP
master-user=gnh1 #主服务器登陆名
master-password=112233 #主服务器登陆密码
master-port=3306 #主服务器断口
master-connect-retry=60 #断点从新连接时间(秒)
replicate-ignore-db=mysql #屏蔽对MYSQL库的同步
replicate-do-db=wuliu #二进制需要同步的数据库
文中该颜色部分可能已经过时,据网上消息介绍,Mysql版本从5.1.7以后开始就不支持“master-host”
类似的参数。所以可能报错:
[ERROR] mysqld: unknown variable ‘master-host=192.168.28.128′。
所以只需添加两行:
server-id = 2
replicate-do-db = game /*共享的数据库*/
- 执行SQL语句:
change master to
master_host=’192.168.28.127,master_user=’root’,master_password=’******’,master_log_file=’mysql-bin.000005′,master_log_pos=106;
- 查看从数据库配置状态
show slave status;
察看结果字段Slave_IO_State,一般应该为"Waiting
for master to send event";此时Slave_IO_Running和Slave_SQL_Running应该为true,
如果不是,在slave端执行:
stop slave; start slave; 重启复制进程。Replicate_Do_DB为要复制的数据库,和my.cnf配置的相同。
测试:
- 如上文操作:实现了game数据库的主从关系。
0). 在master端创建一个表abc,然后察看slave端是否同步创建了。
1). 在abc插入几条记录,察看slave端数据是否同步插入。
2). 更新abc的记录,察看slave端数据是否同步
3). 删除abc的记录,察看slave端数据是否同步
4). 停掉slave服务器,重新执行2,3,4的内容,重启slave,看slave端数据是否同步。
在执行上面的操作过程中,每执行一次都用第6步的方法察看master的File, Position值和slave的Master_Log_File,Read_Master_Log_Pos是否相同,如果主从工作正常,这
两个值在一次同步完成以后(slave status的Slave_IO_State显示:Waiting for master to send event)将会完全相同。
- 日志检查
如果有错误,检查mysql data目录的 ...machinname.err 文件。
- 应用切换到slave
如果master mysql坏掉了,需要将应用转移到slave段。首先在slave端执行:show master status; 把输出保存下来,然后再把应用切换过去。保存输出的File和Position值将可以用于以后从slave恢复master.
具体从slave恢复master的办法:
在master端执行:
CHANGE MASTER to MASTER_HOST='192.168.0.203',
MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='repl',
MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=98 ;
其中 MASTER_HOST
为slave的ip,
MASTER_LOG_FILE, MASTER_LOG_POS为切换到slave时记录下的File和Position值。
在master执行:start
slave;
待master内容基本恢复以后(在master执行:show
slave status \G; Slave_IO_State显示为Waiting for master to send event)
将应用切换回master。
待系统稳定后master执行:stop
slave停止slave。如果要避免master重启以后自动开启slave,可以将master mysql的data文件夹的master.info文件删掉。
MYSQL主从数据库搭建的更多相关文章
- 【Mysql】Mysql主从库搭建过程(爬完坑后整理所得)
Mysql主从数据库搭建流程 新手开始学习mysql主从库,遇到一些问题,总结后写出以下流程 下面以5.7.23版本为例介绍 第一步:去官网下载5.7.23版本的免安装压缩包形式的mysql文件,贴上 ...
- MySQL主从数据库同步延迟问题解决(转)
最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...
- Mysql 主从数据库
MYSQL主从数据库同步备份配置 一.准备 用两台服务器做测试: Master Server: 172.16.0.180/Linux/MYSQL 5.1.41 Slave Server: 172.16 ...
- Windows系统环境下创建mysql主从数据库方法(双向主从复制)
创建mysql主从数据库方法(双向主从复制) (一)Windows系统下的MySQL主从复制(单向复制) (1)环境说明: 1,Mysql版本:mysql5.7.20(主从机mysql版本必须一致) ...
- Mysql主从数据库架构的复制原理及配置详解
1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- MySQL主从数据库配置与原理
1.为什么要搭建主从数据库 (1)通过增加从库实现读写分离,提高系统负载能力 (2)将从库作为数据库备份库,实现数据热备份,为数据恢复提供机会 (3)根据业务将不同服务部署在不同机器同时又共享相同的数 ...
- mysql主从数据库不同步的2种解决方法(转)
今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; ...
- mysql 主从数据库设置方法
1.主从数据库都需开启bin-log日志 2.在my.ini(windows)或my.cnf(linux)配置文件中添加 server-id = 1(主从配置 id 必须不同) 例子: [mysqld ...
- 数据字符集mysql主从数据库,分库分表等笔记
文章结束给大家来个程序员笑话:[M] 1.mysql的目录:在rpm或者yum安装时:/var/lib/mysql 在编译安装时默许目录:/usr/local/mysql 2.用rpm包安装的MyS ...
随机推荐
- 【MPI学习6】MPI并行程序设计模式:具有不连续数据发送的MPI程序设计
基于都志辉老师<MPI并行程序设计模式>第14章内容. 前面接触到的MPI发送的数据类型都是连续型的数据.非连续类型的数据,MPI也可以发送,但是需要预先处理,大概有两类方法: (1)用户 ...
- asp.net下载文件几种方式
测试时我以字符流的形式下载文件,可行,前几个仅作参考 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Respo ...
- [BZOJ2659][WC2012]算不出的算式(几何)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2659 分析:很巧的想法,原式的值就是y=q/p x这条直线的下面和左边的点的个数.处理 ...
- Javascript继承机制的设计
写软工作业时各种蛋疼:主要在于Javascript没有“子类”“父类”“接口”的概念,只能使用prototype来实现,看了下面一篇文章,感觉写得很不错~ http://www.ruanyifeng. ...
- java.lang.IllegalStateException: getWriter() has already been called for this response问题解决
java.lang.IllegalStateException: getWriter() has already been called for this response问题解决 java.lang ...
- G-nav-01
<body><header id="masthead" class="masthead" role="banner"> ...
- poj2763 树链剖分(线段树)
注意这里都是把边放到线段树中,所以lca的时候,要注意如果top[x]==top[y] && x==y 的时候已经完成了. 仔细想想边和点的不同之处!!! #include<ma ...
- 曲线行驶s弯道技巧图解【转】
s弯道怎么走?在走S弯的时候,最主要的就是控制车的速度,在做每个动作的时候要保持一样的速度,不要一会快一会慢的,在开的时候,因为每个人的身高,体型不一样,每个人看的点位都是不一样的,每次在开的时候要找 ...
- CSS文字排版
一.font-size 我来试一试:为第一段中的“胆小如鼠”设置字号为:20px,字体颜色为:red. <!DOCTYPE HTML> <html> <head> ...
- UOJ35 后缀数组(模板)
#35. 后缀排序 这是一道模板题. 读入一个长度为 nn 的由小写英文字母组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置.位置编号为 1 ...