技术标签: 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) 编辑 收藏 引用 所属分类: 数据库
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读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
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数