mysql 5.5 主从_【转】MySQL 5.5数据库的主从复制-程序员宅基地

技术标签: mysql 5.5 主从  

MySQL 5.5数据库的主从复制

今天参照网上的资料进行mysql数据库的主从复制研究,本来网上的资料已经很详细,但是我在实践中还是遇到了很多问题,下面就根据网上的资料以及我遇到的问题进行一个总结。

系统环境:Ubuntu12.04

软件版本:mysql-server-5.5

主机IP:192.168.0.200

从机IP:192.168.0.201

操作:

1、主机操作:

1)、编辑mysql配置文件my.cnf

[mysqld]

server-id=1

log-bin=mysql-bin

注:网上还有一些其他的配置,但是为了偷懒只配置了这两个重要的,当然这两个也是必须的。

2)、用root登陆mysql执行下面的代码

//建立一个用户dean密码123456,并赋予replication slave权限:

mysql>grant replication slave on *.* to 'dean'@'192.189.0.201' identified by '123456';  www.2cto.com

//让权限立即生效

mysql>flush privileges;

//查询二进制文件的文件名和状态(后面要用)

mysql>show master status \G

File:mysql-bin.000006

Position:107

Binlog_Do_DB:

Binlog_Ignore_DB:

2、从机操作:

1)、编辑myslq配置文件my.cnf:

[mysqld]

server-id=2   //只要和主机不同即可

2)、登陆mysql,输入以下命令:

a)、 mysql>change master to master_host='192.168.0.200',master_user='dean', \

master_password='123456',master_log_file='mysql-bin.000006',

master_log_pos=107;

b)、mysql>start slave;

c)、 mysql>show slave status \G

如果出现:Slave_IO_Running:Yes

Slave_SQL_Running:Yes

那么说明没有问题了,就可以在主机上面建库建表写测试数据,然后在从机上查询看有没有数据。一般是没有问题了。

但是如果是出现:

Slave_IO_Running:Connecting

Slave_SQL_Running:Yes

那么就表示主从服务有问题了,我也就是遇到这个问题下面是我的解决方案:

1)、在从机上直接远程登陆主机mysql服务器:

#mysql -udean -h 192.168.0.200 -p123456

如果被拒绝那么就需要检查主机的用户dean的权限、防火墙等设置是否正确。(我的被拒绝了)

2)、检查权限。

用root登入mysql 并选择mysql库

mysql>use mysql;

查询用户的访问  www.2cto.com

mysql>select host,user from user;

从查询数据看没有问题,有dean用户 接受192.168.0.201的访问

3)、防火墙设置

将端口为3306 的访问设为允许

#sudo ufw allow 3306

将ip为192.168.0 .201的访问设为允许

#sudo ufw allow 192.168.0.201

查看状态

# sudo ufw status

设置完后还是从机还是不能直接远程访问主机

4)、查看端口监听

#netstat -anpy|grep 3306

发现当前的端口3306只在127.0.0.1监听,找到问题所在。修改mysql配置文件my.cnf将里面的bind-address=127.0.0.1注释调,重新察看端口监听发现监听是0.0.0.0:3306,好了测试一下果真可以进行远程访问。

重新进行主机从机的操作,但是发现在从机中不能进行第2步a操作,执行下面命令

mysql>stop slave;//关闭slave

mysql>reset slave;//重置slave

继续执行a操作并往下继续操作。

最终完成了Mysql 数据库的主从复制。

另:根据网上资料显示,如果主机在搭建主从复制前已经有数据需要先在主机上加锁:

mysql>flush tables with read lock;

然后打包数据目录并拷贝到从机上,然后解锁。(解锁语法见如下说明)

今天在解决数据库同步异常的时候用到了flush tables with read lock 这个命令,于是顺便就学习了下锁表的相关知识。

1.FLUSH TABLES WITH READ LOCK

这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。

解锁的语句也是unlock tables。

2.LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}

这个命令是表级别的锁定,可以定制锁定某一个表。例如: lock  tables test read; 不影响其他表的写操作。

解锁语句也是unlock tables。

这两个语句在执行的时候都需要注意个特点,就是 隐式提交的语句。在退出mysql终端的时候都会隐式的执行unlock tables。也就是如果要让表锁定生效就必须一直保持对话。

P.S.  MYSQL的read lock和wirte lock

read-lock:  允许其他并发的读请求,但阻塞写请求,即可以同时读,但不允许任何写。也叫共享锁

write-lock: 不允许其他并发的读和写请求,是排他的(exclusive)。也叫独占锁

作者 DeanJoson

posted on 2013-12-06 15:35 回忆之城 阅读(66) 评论(0)  编辑 收藏 引用 所属分类: 数据库

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35880116/article/details/113420317

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签