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 ...
随机推荐
- 关于android使用ksoap2报Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject
Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serializa ...
- JavaScript原型链和instanceof运算符的暧昧关系
时间回到两个月前,简单地理了理原型链.prototype以及__proto__之间的乱七八糟的关系,同时也简单了解了下typeof和instanceof两个运算符,但是,anyway,试试以下两题: ...
- MVC采用HtmlHelper扩展和Filter封装验证码的功能
最近因为有个项目除了登录还有其他很多地方需要用到验证码的功能,所以想到了采用HtmlHelper和ActionFilter封装一个验证码的功能,以便能够重复调用.封装好以后调用很方便,只需在View中 ...
- -webkit-overflow-scrolling:touch iosBug
IOS8+ -webkit-overflow-scrolling:touch 会导致webview崩溃 解决方案 用js动态添加样式 比如: $("body").css(&qu ...
- SQL 内置排名函数 DENSE_RANK
求排名前五的数据信息: 实现一: select distinct top 5 Id,Title,sort from content order by sort DESC 实现二: select * f ...
- 初探JAVA中I/O流(二)
1.缓冲输入文件 FileReader BufferedReader FileReader可以直接对文件进行读操作.但是简化编程,加快读取速度,我们加入了缓冲机制,使用了BufferedReader. ...
- angular的$scope,这东西满重要的
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- RequireJS实例分析
随着JS越来越庞大,已经不仅仅是以前复制粘贴做特效的时代了,JS越来越偏向于业务逻辑与应用.恰逢Node的流行,JS在web开发中占有越来越重要的地位.由于JS代码庞大,文件数目多,传统的使用< ...
- ListView 和 Adapter用法
一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView就是实现这个功能的.第二点也不难做到,在后面的学习中读者会发现,这非常 ...
- python IO文件处理
python的文件读写操作符有:r w a r+ w+ rb wb 除了以file的方式打开文件,还有一种方式就是open了,两个的用法是一模一样的,可以看成open就是file的别名 下面这个表格是 ...