热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql数据库的主从同步

数据库备份方案mysql数据库的主从同步一.实验环境部署主服务器(mysqlmaster)IP:192.168.1.107端口3306从服务器(mysqlslave)IP:192.168.1.127端口3306I.主服务器的操作1.关于主服务器的相关配置1.1设置server-id并开启binlog参数根据m

数据库备份方案 mysql数据库的主从同步 一.实验环境部署 主服务器(mysqlmaster) IP:192.168.1.107 端口3306 从服务器(mysqlslave) IP: 192.168.1.127 端口3306 I. 主服务器的操作 1. 关于主服务器的相关配置 1.1 设置server-id并开启binlog参数 根据m

数据库备份方案

mysql数据库的主从同步


一. 实验环境部署

主服务器(mysql master) IP:192.168.1.107 端口3306

从服务器(mysql slave) IP: 192.168.1.127 端口3306

I. 主服务器的操作

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

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

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

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

[root@localhost ~]# vi/etc/my.cnf

[mysqld]

server-id = 1

log-bin = mysql-bin


备注:

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

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

#. 修改my.cnf配置后需要重启数据库

命令为:/etc/init.d/mysqld restart,

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

[root@localhost ~]# grep -E"server-id|log-bin" /etc/my.cnf


重启mysql数据库

[root@localhost ~]#/etc/init.d/mysqld restart

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

[root@localhost ~]#mysql–uroot–pmyrootpw

Mysql>selectuser();

Mysql>grantreplication slave on *.* to rep@192.168.1.%identified by ‘123456’;

备注:

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

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

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

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

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

查看用户权限

Mysql>showgrants forrep@192.168.1.127;


1.3 对主数据库锁表只读:

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

mysql>flush tables with read lock;

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

默认情况下的时长为:

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


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

1.4 查看主库状态

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

mysql>show master status;

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


1.5 导出主数据库数据

[root@localhost ~]#mkdir backup

[root@localhost ~]#mysqldump–uroot–pmyrootpw–A –B|gzip>backup/mysql_bak.$(date +%F)sql.gz

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

[root@localhost backup]# ll


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

[root@localhost backup]# mysql -uroot -pmyrootpw -e "show masterstatus"

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

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

mysql>unlock tables;

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

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

[root@localhost ~]# scp backup/mysql_bak.2012-07-09.sql.gzroot@192.168.1.127:/backup

II. 从服务器的操作

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

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

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

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

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

[root@localhost ~]# vi /etc/my.cnf

[mysqld]

server-id = 2

#log-bin = mysql-bin

检查配置后的结果

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

重启从数据库

[root@localhost ~]#/etc/init.d/mysqld restart

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

解压主库备份的数据

[root@localhost backup]# ls

还原主库解压出的数据到从库

[root@localhost backup]#mysql–uroot–pmyrootpw

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>showmaster status时看到的二进制日志文件名称,不能多空格。mysql>master_log_pos=376213; #是mysql>show master status时查看到的二进制日志偏移量,不能多空格。

1.4 启动从库同步开关

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

[root@localhost backup]#mysql–uroot–pmyrootpw–e “start slave”

[root@localhost 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语句后应用到数据库汇总。

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

[root@localhost backup]# mysql -uroot -pmyrootpw -e"show slave status\G" | egrep "IO_Running|SQL_Running"

1.5 测试主从同步

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

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

[root@localhost]#mysql–uroot–pmyrootpw–e “show databases;

[root@localhost]#mysql–uroot–pmyrootpw–e “create database mytable;”

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

[root@localhost]#mysql–uroot–pmyrootpw–e “show databases;

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

推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
author-avatar
dmcm0009
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有