100分---mysql 双机热备,error connecting to master的问题

naughty610 2010-06-30 02:45:00
我在两个机器上作了配置,都在mysql中有一个名叫tongbu的用户,给了他们所有的权限。
A机器配置如下:
default-character-set=utf8
log-bin=mysql-bin
server-id=1
master-host=192.168.1.207
master-user=tongbu
master-password=123456
master-port=3306
master-connect-retry=1 #断网后间隔1秒重连
binlog-do-db=backup_db #要备份的库
binlog-ignore-db=mysql
replicate-do-db=backup_db #想要同步的数据库名,如果有多个,请设置多次
replicate-ignore-db=mysql #略过同步的数据库名,如果有多个,请设置多次
skip-name-resolve #快速登录跳过用户解析
back_log = 500
max_connect_errors = 100
max_connections=1000




B机器的配置如下:
default-character-set=utf8
server-id=2
master-host=192.168.1.202
master-user=tongbu
master-password=123456
master-port=3306
master- connect-retry=1 #重试间隔10秒
binlog-do-db=backup_db
binlog-ignore-db=mysql
replicate-do-db=backup_db
skip-name-resolve
back_log = 500
max_connections = 1000
max_connect_errors = 100
slave_skip_error=1062
sync_binlog=1 # 每作一次操作同步一次
log-bin=mysql-bin


但是我在A和B机器上show slave status的时候,都提示:::
error connecting to master 'tongbu@192.168.1.207:3306' - retry-time: 30

哪位mysql达人知道我这个是什么错误么?
我该怎么解决?困扰了小弟一天半了。。。
...全文
2173 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
naughty610 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zuoxingyu 的回复:]
引用 15 楼 naughty610 的回复:
引用 14 楼 zuoxingyu 的回复:

权限有了。登录出错、

您好。我知道我错在哪里了。

在mysql中,mysql默认应该是不可以远程登录的。这样的话,作为从服务器的B机器就不能登录到作为主服务器的A机器,自然也就出现error connecting to master的问题了。


不是默认不能远程登录,只要主服务……
[/Quote]

在my.cnf中有一个bind-address=127.0.0.1的字段,把这个注释掉就好了。呵呵,是一个英文论坛上找到的。真不容易。谢谢您啦。
zuoxingyu 2010-07-01
  • 打赏
  • 举报
回复
权限有了。登录出错、
zuoxingyu 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 naughty610 的回复:]
引用 14 楼 zuoxingyu 的回复:

权限有了。登录出错、

您好。我知道我错在哪里了。

在mysql中,mysql默认应该是不可以远程登录的。这样的话,作为从服务器的B机器就不能登录到作为主服务器的A机器,自然也就出现error connecting to master的问题了。
[/Quote]

不是默认不能远程登录,只要主服务器给了相应的权限,就是可以远程访问的。
naughty610 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zuoxingyu 的回复:]

你按照下面的操作步骤看看
1:在A机器上直接登录MYSQL,然后SHOW VARIABLES LIKE '%PORT%',看看用的是哪个端口。或者在配置文件的MYSQLD下的PORT参数,看下是多少,如果不是3306,那么你B里指定的MASTER的端口肯定就是错误的。

2:确定能够登录A本机后,看下tongbu这个账号的权限是否足够
mysql> show grants for 'to……
[/Quote]

您好。您给我的第三条建议的结果如下:

min@min-laptop:/var/log$ mysql -h 192.168.1.202-u tongbu -p 123456
mysql Ver 14.14 Distrib 5.1.36, for pc-linux-gnu (i686) using EditLine wrapper
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
。。。。
。。。。
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults Print the program argument list and exit
--no-defaults Don't read default options from any options file
--defaults-file=# Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read

Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- -----------------------------
auto-rehash TRUE
character-sets-dir (No default value)
column-type-info FALSE
comments FALSE
compress FALSE
debug-check FALSE
。。。。
。。。。
i-am-a-dummy FALSE
connect_timeout 0
max_allowed_packet 16777216
net_buffer_length 16384
select_limit 1000
max_join_size 1000000
secure-auth FALSE
show-warnings FALSE
min@min-laptop:/var/log$


这样算不算是我在b机器上登录A机器的mysql数据库登录成功了呢?如果是登录成功了的话,为什么不是停留在mysql>这个提示符下而是直接推出来了呢?
naughty610 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zuoxingyu 的回复:]

权限有了。登录出错、
[/Quote]
您好。我知道我错在哪里了。

在mysql中,mysql默认应该是不可以远程登录的。这样的话,作为从服务器的B机器就不能登录到作为主服务器的A机器,自然也就出现error connecting to master的问题了。
naughty610 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zuoxingyu 的回复:]

你按照下面的操作步骤看看
1:在A机器上直接登录MYSQL,然后SHOW VARIABLES LIKE '%PORT%',看看用的是哪个端口。或者在配置文件的MYSQLD下的PORT参数,看下是多少,如果不是3306,那么你B里指定的MASTER的端口肯定就是错误的。

2:确定能够登录A本机后,看下tongbu这个账号的权限是否足够
mysql> show grants for 'to……
[/Quote]

这个是另外的一个运行结果。
mysql> mysql> show grants for 'tongbu'@'192.168.1.207';
+----------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for tongbu@192.168.1.207 |
+----------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'tongbu'@'192.168.1.207' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

应该是给了tongbu这个用户权限了的。

naughty610 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zuoxingyu 的回复:]

你按照下面的操作步骤看看
1:在A机器上直接登录MYSQL,然后SHOW VARIABLES LIKE '%PORT%',看看用的是哪个端口。或者在配置文件的MYSQLD下的PORT参数,看下是多少,如果不是3306,那么你B里指定的MASTER的端口肯定就是错误的。

2:确定能够登录A本机后,看下tongbu这个账号的权限是否足够
mysql> show grants for 'to……
[/Quote]

你好。好像是您说的这个问题,

mysql> show grants for 'tongbu';
ERROR 1141 (42000): There is no such grant defined for user 'tongbu' on host '%'

这是我运行的结果。

是因为没有给tongbu这个用户相应的权限吧?
zuoxingyu 2010-06-30
  • 打赏
  • 举报
回复
MySql数据库同步复制
测试版本:MYSQL 5.1.42 WINDOWS版本
该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。
数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(windows下为my.ini,Unix/Linux下为my.cnf)
1、实施环境:
  操作系统:2台WINDOWS XP
  mysql:mysql-5.1.42
  SvrA ip:192.168.1.10(主端)
  SvrB ip:192.168.1.11(从端)
2、配置方法
Demo 1:主从模式[Master->Slave]:A->B
=====step 1:分别在SvrA、SvrB上配置同步DB及Account=====
Step A:SvrA上配置
  1.增加一个用户最为同步的用户帐号:
  GRANT ALL ON *.* TO backup@'192.168.1.11' IDENTIFIED BY '123’;
在主上增加一个用户名称为BACKUP,密码为123,访问IP为从的IP地址
  2.增加一个数据库作为同步数据库:
  create database backup;
  Step B:SvrB上配置
  1.增加一个用户最为同步的用户帐号:
  GRANT FILE ON *.* TO backup.@'192.168.1.10' IDENTIFIED BY '123’;
在从上增加一个用户名称为BACKUP,密码为123,访问IP为主的IP地址
  2.增加一个数据库作为同步数据库:
  create database backup;
  ====step 2:配置Master、Slave参数====== 
主从模式:A->B即  SvrA为master ,SvrB为slave
  1、修改SvrA 中mysql的my.cnf文件。在mysqld配置项中加入下面配置:
server-id=1
log-bin=D:\log\mysqllog
binlog-do-db=backup

Log-bin #设置需要记录log 可以设置log-bin=/Data/logs/mysqllog 设置日志文件的目录[其中mysqllog是日志文件的名称,mysql将建立不同扩展名,文件名为mysqllog的几个日志文件]。
  binlog-do-db=backup #指定需要日志的数据库
  配置完后重起数据库服务。NET STOP MYSQL NET START MYSQL
  用show master status 命令看日志情况。
  2、修改SvrB中 mysql的my.cnf文件。在mysqld配置项中加入下面配置:
  server-id=2
  master-host=192.168.1.10
  master-user=backup#同步用户帐号
  master-password=123
  master-port=3306
  master-connect-retry=10 预设重试间隔10秒
  replicate-do-db=backup 告诉slave只做backup数据库的更新
  配置完后重起数据库
  用show slave status看同步配置情况。
  注意:由于设置了slave的配置信息,mysql在数据库目录下生成master.info
测试:在主端建表A,在从端SHOW TABLES 能看到A
在A添加一条记录,在从端SELECT * FROM A能看到

  所以如有要修改相关slave的配置要先删除该文件。否则修改的配置不能生效。
Demo 2、双机互备模式。
  如果在A加入slave设置,在B加入master设置,则可以做B->A的同步。
  在A的配置文件中 mysqld 配置项加入以下设置:
  master-host=192.168.1.11
  master-user=backup
  master-password=123
  replicate-do-db=backup
  master-connect-retry=10
  在B的配置文件中 mysqld 配置项加入以下设置:
  log-bin=D:\log\mysqllog
  binlog-do-db=backup
  注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让同步机制进行工作,运行slave start
  重起主从的服务,则可以实现双向的热备。


测试通过。网络上找的同步方法。
naughty610 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zuoxingyu 的回复:]
你按照下面的操作步骤看看
1:在A机器上直接登录MYSQL,然后SHOW VARIABLES LIKE '%PORT%',看看用的是哪个端口。或者在配置文件的MYSQLD下的PORT参数,看下是多少,如果不是3306,那么你B里指定的MASTER的端口肯定就是错误的。

2:确定能够登录A本机后,看下tongbu这个账号的权限是否足够
mysql> show grants for 'ton……
[/Quote]
您好。我明白查看一下,然后给您回复。现在没有电脑。
zuoxingyu 2010-06-30
  • 打赏
  • 举报
回复
你按照下面的操作步骤看看
1:在A机器上直接登录MYSQL,然后SHOW VARIABLES LIKE '%PORT%',看看用的是哪个端口。或者在配置文件的MYSQLD下的PORT参数,看下是多少,如果不是3306,那么你B里指定的MASTER的端口肯定就是错误的。

2:确定能够登录A本机后,看下tongbu这个账号的权限是否足够
mysql> show grants for 'tongbu';

3:在B机登录A机,通过tongbu这个账号。

4:在B机上操作1,2,3步,确定都正常。


naughty610 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 rucypli 的回复:]

telnet 3306可以吗
[/Quote]

您好。


naughty@ns:/etc/mysql$ telnet localhost 3306
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
D
5.1.41-3ubuntu12.1-logJZ|!+R<uZ!AtGFhYdjgIr(Connection closed by foreign host.


这个执行结果是什么意思呢?
naughty610 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 rucypli 的回复:]

telnet 3306可以吗
[/Quote]
您好,您说的“telnet 3306” 可以直接执行么?

naughty@ns:/etc/mysql$ telnet 3306
Trying 0.0.12.234...
telnet: Unable to connect to remote host: Invalid argument

这个是什么意思?
rucypli 2010-06-30
  • 打赏
  • 举报
回复
telnet 3306可以吗
naughty610 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]

检查网络,防火墙,账号权限。


参考下贴中的检查方法并贴出你的检查结果(#43楼)

http://topic.csdn.net/u/20090920/22/14d4f597-b7d4-4c24-b0db-abb2956e66c3.html
[收集]mysql 无法联接故障现象及原因
[/Quote]

那个帖子中没有我遇到的问题哦。。我想做双机热备份的。这是过程中遇到的问题。
naughty610 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]

检查网络,防火墙,账号权限。


参考下贴中的检查方法并贴出你的检查结果(#43楼)

http://topic.csdn.net/u/20090920/22/14d4f597-b7d4-4c24-b0db-abb2956e66c3.html
[收集]mysql 无法联接故障现象及原因
[/Quote]
您好。
两个问题。
1。我执行了sudo mysqld stop之后,为什么我在mysql数据库中还可以查询数据呢?不是发把服务已经停掉了么?很是奇怪。
2。我执行了一下netstat -a,输出的结果中竟然没有3306这个端口?是什么原因?
谢谢您的回答。原谅小弟初学。。
naughty610 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]

检查网络,防火墙,账号权限。


参考下贴中的检查方法并贴出你的检查结果(#43楼)

http://topic.csdn.net/u/20090920/22/14d4f597-b7d4-4c24-b0db-abb2956e66c3.html
[收集]mysql 无法联接故障现象及原因
[/Quote]
好的。谢谢您的回答。我检查一下然后发结果上来。
ACMAIN_CHM 2010-06-30
  • 打赏
  • 举报
回复
检查网络,防火墙,账号权限。


参考下贴中的检查方法并贴出你的检查结果(#43楼)

http://topic.csdn.net/u/20090920/22/14d4f597-b7d4-4c24-b0db-abb2956e66c3.html
[收集]mysql 无法联接故障现象及原因

57,055

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧