配置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文件,将无效的MAC记录屏蔽掉,将真实的MAC对应的记录改名为eth0、eth1。

两台虚拟机的网络配置好,配置网关、配置DNS,将虚拟机网卡设置为物理桥接模式,使之能够访问外网,通过 ping www.baidu.com 测试是否能访问外网。

通过yum安装mysql数据库server/client/develop:

yum -y install mysql-server mysql mysql-devel

I. 主服务器的操作

1. 关于主服务器的相关配置

1.1  设置server-id值并开启binlog参数

根据mysql的同步原理:关键因素就是binlog日志。

编辑/etc/my.cnf配置文件,修改和添加相关参数。

[[email protected] ~]# vi /etc/my.cnf

[mysqld]

server-id = 1

log-bin = mysql-bin

备注:

#. 上面两参数放在my.cnf中的[mysqld]模块下,否则会出错;

#. 要先在my.cnf文件中查找相关参数,并按具体要求修改,不存在时添加相关参数,切记,参数不能重复;

#binlog-do-db = test :需要备份数据,多个写多行,不写全部都备份
binlog-ignore-db = mysql :不需要备份的数据库,多个写多行

修改完配置文件,检查配置后的结果:

[[email protected] ~]# grep -E "server-id|log-bin" /etc/my.cnf

重启mysql数据库

service mysqld restart

设置数据库根用户root的密码:

mysqladmin -u root password ‘mysql‘

设置的密码是“mysql"

1.2 建立用于主、从数据同步的帐号《rep》

[[email protected] ~]#mysql -u root -pmysql

mysql>select user();

mysql>grant replication slave on *.* to ‘rep‘@‘192.168.8.%‘ identified by ‘123456‘;

备注:

#replication slave:为mysql同步的必须权限,此处不要授权all

#*.*:表示所有库所有表,库也是可以指定具体的库和表进行复制,如test.test1(test库的test1表);

# [email protected]%: rep为同步账号,192.168.1.%为授权主机,使用了%表示允许整个192.168.8.0网段以rep用户访问;

#identified by "123456" : 123456为密码,实际环境用复杂密码

1.3 对主数据库锁表只读:

注:实际环境中,操作主从复制,需要申请停机时间,锁表会影响业务。

mysql>flush tables with read lock;

注:这个锁表命令的时间,在不同引擎的情况,会受下面参数的控制,锁表超过设置时间不操作会自动解锁;

默认情况下的时长为:

mysql>show variables like "%timeout%"; 可以查看到默认锁表时间最大值。

mysql> show variables like "%timeout%";
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
..........
| interactive_timeout        | 28800 |
........
| wait_timeout               | 28800 |
+----------------------------+-------+
10 rows in set (0.00 sec)

完成后测试是否锁表成功:打开另一窗口创建一test1表,是不会执行的,证明锁表不能更新,但可读,不可写,因为是read读锁,锁表主要是为了导出数据库文件,从而取得正确的偏移量的值,保证导入从数据库,数据一致。

1.4 查看主库状态

查看主库状态,即当前日志文件名和二进制日志偏移量

mysql>show master status;

命令显示的信息要记录在案,后面的从库复制时是从这个位置开始的。

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      619 |              | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

1.5  导出主数据库数据

[[email protected] ~]#mkdir /backup

[[email protected] ~]#mysqldump -uroot -pmysql -A -B |gzip >/backup/mysql_bak.$(date +%F)sql.gz

注:-A表示备份所有库, -B表示增加user DB和drop等参数(导库时会直接覆盖所有的)。

[[email protected] backup]# ll
total 144
-rw-r--r-- 1 root root 144884 Feb 23 08:58 mysql_bak.2016-02-23sql.gz

为了确保导库期间,数据库没有数据插入,可以再检查下主库状态信息

[[email protected] backup]# mysql -uroot -pmysql -e "show master status"

[[email protected] backup]# mysql -uroot -pmysql -e "show master status"
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      619 |              | mysql            |
+------------------+----------+--------------+------------------+

注:无特殊情况,binlog文件及位置点是保持不变的。

导库后,解锁主库,恢复可写;

mysql>unlock tables;

Query OK, 0 rows affected (0.00 sec)

特别提示,有读者这里犯迷糊,实际上做从库的,无论主库更新多少数据了,最后从库都会从上面show master status 的位置很快赶上主库的位置进度的。

1.6  把主库备份的mysql数据迁移到从库

[[email protected] backup]# scp /backup/mysql_bak.2016-02-23sql.gz 192.168.8.242:/backup/

II.  从服务器的操作

1. 关于从服务器的相关配置

1.1 设置server-id值并关闭binlog设置

注:数据库的server-id在LAN内是唯一的,这里的server-id要和主库及其他从库不同,并注释掉从库的binlog参数配置;

编辑/etc/my.cnf配置文件,修改相关的参数设置

master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差

[[email protected] ~]# vi /etc/my.cnf

[mysqld]

server-id = 2

#log-bin = mysql-bin

检查配置后的结果

[[email protected] ~]#grep –E “server-id|log-bin” /etc/my.cnf

设置数据库根用户root的密码:

mysqladmin -u root password ‘mysql‘

设置的密码是“mysql"

重启从数据库

[[email protected] ~]#service mysqld restart

1.2 还原主库导出的数据到从库

1.3 登录从库配置同步参数

mysql>change master to #连接主数据库

mysql>master_host=”192.168.1.107”, #主库的IP地址

mysql>master_port=3306, #主库的端口,从库的端口可以和主库不同

mysql>master_user=”rep”, #主库上建立的用于数据同步的用户《rep》

mysql>master_password=”123456”, #用户《rep》的密码mysql>master_log_file=”mysql-bin.000003”,  #是mysql>show master status时看到的二进制日志文件名称,不能多空格。mysql>master_log_pos=376213;  #是mysql>show master status时查看到的二进制日志偏移量,不能多空格。

1.4  启动从库同步开关

启动从库同步开关,并查看同步状态

[[email protected] backup]#mysql –uroot –pmyrootpw –e “start slave”

[[email protected] backup]#mysql –uroot –pmyrootpw –e “show slave status\G”

也可以登录从库,在数据库下面执行相关命令:

mysql>start slave;

mysql>show slave status\G;

判断搭建是否成功就看如下IO和SQL两个线程是否显示为“yes”状态

Slave_to_Running:YES #负责从库去主库读取binlog日志,并写入从库中继日志中

Slave_SQL_Running:YES #负责读取并执行中继日志中的binlog转换sql语句后应用到数据库汇总。

也可以执行命令过滤查看如下:

[[email protected] backup]# mysql -uroot -pmyrootpw -e "show slave status\G" | egrep "IO_Running|SQL_Running"

1.5 测试主从同步

在主库创建 —>数据库以及查看

在主库中创建库“mytable”用于主从同步:

[[email protected] ]#mysql –uroot –pmyrootpw –e “show databases;

[[email protected] ]#mysql –uroot –pmyrootpw –e “create database mytable;”

在从库查看是否主从同步:

[[email protected] ]#mysql –uroot –pmyrootpw –e “show databases;

到此!主从数据库同步成功完成;从数据库可以实现数据同步。

时间: 2024-10-19 10:57:13

配置mysql数据库的主从同步实验的相关文章

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.

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数据库的主从同步

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

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

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

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_multi方式配置Mysql数据库主从

如上面所说:http://www.cnblogs.com/super-d2/p/3851957.html 安装好mysql; 授予用于同步用的用户同步数据的权限 grant replication slave on *.* to 'slave3306'@'127.0.0.1' identified by '3306'; flush privileges; 此时查看主从状态,如下 show master status; 配置多数据库: 内容如下: [mysqld_multi] mysqld    

Mysql 5.6主从同步配置

主从同步,本质是利用数据库日志,将主库数据复制一份到从库,本质上是使用了数据复制技术. 本文概要 主库的基本配置 从库的基本配置 完全同步的步骤 注意事项 工作原理 1. 主库的基本配置 做两件事:启用日志(记录数据库操作),赋予从库复制权限.配置如下: 启用日志: # sync_binlog=1 #默认为0,当 sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者