MYSQL 数据库的主从同步实验

最近在学Linux 的应用技术

今天在虚拟机上尝试了MYSQL 数据库主从同步的实验,虽然事先百度了,看了别人的教程,但是自己在做的过程中还是出现了几个问题,在此记录下来,给需要的朋友借鉴一下,以后自己忘记了也可以回头看看。

两个虚拟机分别是:

Red Hat Enterprise Linux Server release 6.3 (Santiago) 192.168.1.251

Red Hat Enterprise Linux Server release 5.6 (Tikanga) 192.168.1.250

安装是之前装的,在此就不多说了,两个虚拟机都是同样的MYSQL的版本:

[[email protected] ~]# mysql -V

mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i386) using readline 5.1

配置过程:

192.168.1.250  master的配置

vim /etc/my.cnf---打开配置文件,随便找个地方添加下面的内容

7 server-id=001

8 log-bin=mysql_log-----这个名字随便写一个

9 binlog-do-db=smpdb------数据库的名字,可以登录MYSQL数据库,用show databases;命令查看

10 binlog-do-db=student

11 binlog-do-db=example

12 binlog-do-db=test

13 binlog-ignore-db=mysql---不需要同步的数据库,根据自己的实际情况来设置

保存退出,重启:service mysqld restart

192.168.1.251 slave的配置

10 server-id=002-----这里的server-id一定不能和master的相同

11 log-bin=mysql_log----这里的名字不知道和master的不一样行不行,猜测应该可以的

12 master-host=192.168.1.250---指定master的IP

13 master-user=root------------指定用哪个用户登录master(这个用户必须是master存在的用户)

14 master-password=root--------指定密码

15 master-port=3306------------默认端口

保存退出,重启:service mysqld restart

登录slave的MYSQL数据库,用show slave status \G 命令,看到

Slave_IO_Running: NO

Slave_SQL_Running: Yes

要两个都是yes才成功,有一个NO,说明没成功。

下面开始查找原因:

------------------------------

ping 192.168.1.250(master IP )通了,在master 查看

[[email protected] ~]# netstat -an | grep 3306

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN     tcp        0      0 192.168.1.250:3306          192.168.1.251:40598         TIMEWAIT

可以看到端口已经打开,但是连接状态并不是ESTABLISHED,说明连接有问题

登录master数据库

mysql> show master status \G

*************************** 1. row ***************************

File: mysql_log.000004

Position: 476

Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

以为是selinux,又把selinux关闭

[[email protected] ~]# setenforce 0

还是不行,又以为是iptables

[[email protected] ~]# iptables -L

Chain INPUT (policy DROP)------默认规则把数据包丢掉

把iptables修改为默认ACCEPT

[[email protected] ~]# iptables -P INPUT ACCEPT

(顺便说一下这里,一开始记错命令iptables -P INPUT -j ACCEPT, 总是提示使用帮助,折腾了半个多小时,才发现是多用了-j参数,百度出来的全是叫人怎么使用ADC参数之类的,坑爹!)

再使用show slave status \G查看,错误依旧,于是查看日志记录(出错要记得经常看日志,最容易通过日志找问题)

[[email protected] ~]# tail /var/log/mysql.log

263 140720 13:39:06 [Note] Slave SQL thread initialized, starting replication in log ‘FIRS    T‘ at position 0, relay log ‘./mysqld-relay-bin.000008‘ position: 4

264 140720 13:39:06 [Note] Event Scheduler: Loaded 0 events

265 140720 13:39:06 [Note] /usr/libexec/mysqld: ready for connections.

266 Version: ‘5.1.61-log‘  socket: ‘/var/lib/mysql/mysql.sock‘  port: 3306  Source distrib    ution

267 140720 13:39:16 [ERROR] Slave I/O: error connecting to master ‘mysql@192.168.1.250:330    6‘ - retry-time: 60  retries: 86400, Error_code: 1045

说一下这里的[email protected]:一开始在slave里设置使用mysql账户和密码,后来出错,百度说可能是对数据库没有操作权限,因为master的数据库全部都是root用户的,所以后来改用了root账户和密码。

根据错误的第263行,有尝试了登录slave的MYSQL数据库,手动指定master

mysql>change master to

>master_host=‘192.168.1.250‘

>master_user=‘root‘

>master_password=‘123456‘

>master_log_file=‘mysql_log.00004‘

>master_pos=476;

最后两行的信息是在master登录MYSQL数据库用show master status \G 查看的。

再次查看,还是不行:

Slave_IO_Running: NO

Slave_SQL_Running: Yes

日志里依然是

[ERROR] Slave I/O: error connecting to master ‘[email protected]:330    6‘ - retry-time: 60  retries: 86400, Error_code: 1045

这样的错误

我好奇怪,我明明把用户都改为root了,而且重启了n次MYSQL服务,为什么还是mysql用户呢????

是不是哪里的缓存没清掉???但是不知道怎么清缓存,也不知道缓存在哪里

只好使用杀手锏:重启虚拟机!!!!

再次登录,OK了,两个YES

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.250

Master_User: root

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql_log.000004

Read_Master_Log_Pos: 476

Relay_Log_File: mysqld-relay-bin.000010

Relay_Log_Pos: 243

Relay_Master_Log_File: mysql_log.000004

 Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 476

Relay_Log_Space: 914

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

1 row in set (0.00 sec)

---------------------------------------------------------

我以为就这样行了,等这它自动同步我设置好的数据库,等了很久都没有

奇怪,不是OK了吗?为什么没有同步的数据库呢?

于是,在slave里创建一个和master相同结构的test数据库,在master里对test添加表和数据,结构在slave的test里马上就有了,原来如此,只能同步建立好主从同步之后的对数据库的操作的数据!!!---其实到底是不是这样我还没有深究,这个结论只是根据自己的初步实验猜测的。

本人对linux技术也是刚入门,这是我的第一篇博客,错漏之处,敬请指出!!

时间: 2024-08-05 10:03:30

MYSQL 数据库的主从同步实验的相关文章

配置mysql数据库的主从同步实验

mysql数据库的主从同步实验 一. 实验环境部署 主服务器(mysql  master) IP: 192.168.8.241  端口3306 从服务器(mysql  slave)  IP: 192.168.8.242  端口3306 虚拟机配置:内存2G,硬盘28G,2块网卡(1块网卡也可以),注意复制虚拟机 时候选择生成不同的MAC地址,虚拟机生成之后,网卡的的名称会变为eth2.eth3,修改/etc/udev/rules.d/70-persistent-net.rules文件,将无效的M

Zabbix 检测Mysql数据库的主从同步

Zabbix 检测Mysql数据库的主从同步 在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成检测网站正常运行的重要环节. MySQL同步功能由3个线程(master上1个,slave上2个)来实现,简单的说就是:master发送日志一个,slave接收日志一个,slave运行日志一个. Slave_io_Running:yes Slave_SQL_Running: ye

MySQL数据库实现主从同步数据

MySQL数据库实现主从同步数据 参考链接: http://www.cnblogs.com/wxf020412/archive/2007/09/25/905628.html http://369369.blog.51cto.com/319630/790921 1.说明 利用数据库本身的数据同步机制实现数据同步,还可以通过备份数据库目录实现,以及通过第三方同步工具实现. 2.准备好两台以上MySQL数据库 ①.最好版本一致 3.主数据库配置 ①. 打开mysql的配置文件(windows)my.i

mysql数据库的主从同步,实现读写分离 g

https://blog.csdn.net/qq_15092079/article/details/81672920 前言 1 分别在两台centos 7系统上安装mysql 5.7 2 master主服务器的配置 2.1 配置文件my.cnf的修改 2.2 创建从服务器的用户和权限 2.3 重启mysql服务 2.4 查看主服务器状态 3 slave从服务器的配置 3.1 配置文件my.cnf的修改 3.2 重启mysql服务 3.3 连接master主服务器 3.4 启动slave数据同步

Zabbix检测Mysql数据库的主从同步

在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成检测网站正常运行的重要环节. MySQL同步功能由3个线程(master上1个,slave上2个)来实现,简单的说就是:master发送日志一个,slave接收日志一个,slave运行日志一个. 首先,我们解释一下 show slave status  中重要的几个参数: Slave_IO_Running: I/O线程是否被

MySQL数据库配置主从同步

1.环境说明:DB master: 172.16.1.55 DB slave: 172.16.1.56 2.Server-id 配置(/etc/my.cnf): 主库配置server-id要比从库的ID小. 主库ID设置:Server-id=55 从库ID设置:Server-id=56 3.日志格式设置(/etc/my.cnf): log-bin=mysql-bin (主库.从库都设置) 4.主库授权从库的权限设置: grant replication slave on *.* to 'slav

MySQL数据库之主从同步

一.概述: MYSQL主从同步架构是目前使用最多的数据库架构之一,主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave). 二.拓扑图说明: 如上图所示,192.168.4.10(主机名为"10.mysql")作为MySQL主数据库,192.168.4.20(主机名为"20.mysql")作为MySQL从数据库,负责从主数据库同步数据. 三.主从同步配置说明: 1.Mas

mysql 主从同步实验细解

mysql  主从同步实验细解 一.实验环境 实验环境 192.168.9.108 为master 192.168.9.109 为slave 数据库版本:version              5.1.73 安装方式:采用的yum 安装 源为163的源 系统版本:centos 6.5 1.查看系统版本 [[email protected] ~]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 二.实验准备 1.安装my

MySQL数据库配置主从服务器实现双机热备

转自:http://www.cnblogs.com/cchun/p/3712637.html 一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168上分别进行如下操作,安装MySQL 5.5.22  二.配置MySQL主服务器(192.168.21.169) mysql -uroot -p #进入MySQL控制台 create database osyunweidb; #建立数据库osyunweidb insert into mysql.use